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) | [email protected]
Systems/Network Administrator | http://www.over-yonder.net/~fullermd/
On the Internet, nobody can hear you scream.