With 4.0.2 out, the top thing on my todo list is getting Max's XRANDR
support together and integrated.  I've been working on that in my
sadly sparse spare moments since, and I think it's in good shape.
I've got it in a branch I think is pretty much ready to land.  So, CFT
time; it's in <lp:~fullermd/ctwm/randr>
(https://code.launchpad.net/~fullermd/ctwm/randr).  Big thanks to Max
for writing it, and also for helping me understand my way through it
during the process.

If you were already running Max's code, this should be functionally
very similar.  I did some minor (hopefully-)non-functional code
preening and a bunch of commenting.  There are 3 intended visible
changes:

1) The cmake option is renamed from USE_XRANDR15 to just USE_XRANDR.
   It does still require libXrandr 1.5 currently (thought there are
   some comments in the code pointing a way to possibly supporting
   lower versions, if we really turn out to need it for a meaningful
   number of people.  I feel like that's be a high bar; it'd just be
   adding already almost obsolete code, that a fairly short passage of
   time would thoroughly kill).

2) The startup code now checks a little more carefully as to what the
   server supports, and falls back to old-style screen info lookup.
   Just because you have the RANDR libs  doesn't necessarily mean your
   server supports it, after all.  e.g., Xnest doesn't, and how can
   you test without Xnest?  So we'll now work as well as we did
   pre-RANDR, even if you have RANDR missing or turned off in your
   server.

3) I pulled the f.* aliases for the new x*zoom functions.  Generally,
   I think function aliases are a net loss, adding more confusion than
   they fix.  e.g., I know I've seen snippets of people's rc files
   containing stuff like

       "Reload twmrc"  f.twmrc
       "Restart ctwm"  f.restart

   even though they're the exact same thing.  We still do have the
   support for the historical ones, since it's a moderate bit of
   compat trouble to remove them on people, and having already written
   the support, the cost of keeping it is low.  But I'd prefer not to
   add any new ones, absent a really good reason.

   If people feel strongly otherwise, we can revisit this easily
   enough.


I've done a reasonable bit of testing, including a little with 2
monitors, and I'm typing this on a system running it, so it's at least
a good imitation of stable.  Give it a whirl!



    Here's one fun side effect (not really a bug, at least not in
    randr) that I found.  f.fullscreenzoom is our function to
    basically make the client window take up the whole screen, with no
    decorations.  It does this by blowing up the window size to (full
    screen + size of our borders/titlebar), and positioning the window
    just slightly offscreen so the titlebar/etc isn't visible.  Well,
    now that it will fill up one of our monitors, we can now see the
    border peeking out the side into the next monitor!  And presumably
    (haven't tried) if we stack 'em vertically, the titlebar could
    poke into the bottom of the next window up.  I guess it's time to
    implement that function a little less hackily...


-- 
Matthew Fuller     (MF4839)   |  fulle...@over-yonder.net
Systems/Network Administrator |  http://www.over-yonder.net/~fullermd/
           On the Internet, nobody can hear you scream.

Reply via email to