I'm happy to see the recent ctwm changes with xrandr support!

To take better advantage of those changes, I'd like some info about
the monitors to be available when processing my ".ctwmrc" file.

I tried hacking what I could via esyscmd()s that would route the
output of the xrandr command through awk to squeeze out what I
needed, but that was clumsy and rather painful at best.  Then I
thought that maybe I could just mod ctwm itself to provide that info
via m4 macros, so I went a hacking.

So far those mods have been working out fine for me, and I'd like
to see if anyone has any comments on them.

My problem is I have a laptop that at any given time may be
connected to 0-2 external monitors which may use different graphical
dongles of varying resolutions (anything from 1024x768 to 4K)
depending on the site, meeting room, dock, etc.

What I was missing the most are two things: the resolutions of the
various monitors so that I could do some scaling in my ".ctwmrc",
and the names of the monitors so I could specify them in the xrandr
extended geometries.  Since the resolutions and names change often
for me, I can't just hardcode them.

I created a commit with my changes for comment here:
https://github.com/qbarnes/ctwm-mirror/commit/aa2148e20b5ef117c2d501fda5c07b4e3f96c610
(If you try out the change yourself, be sure to pick up the earlier
commit 1240941 that adds the function RLayoutGetNameIndex().)

In the macro that is "MONITOR__<name>", it's got the double-underbar
to prevent a possible name collision with "MONITOR_<number>".  If
there is absolutely no chance a device ever being a simple integer
now or in the future, then the extra underbar can be removed.

All the new macros are simple except for "MONITOR__<name>".  Because
device names can have some special characters, I'd recommend to
always use indir() when expanding it.

I have a question about the order of devices returned by xrandr.
I didn't know if it can be assumed that first listed device will
_always_ be the primary device.  It seems that way, but I didn't
know if that was guaranteed.  Does anyone know?

What do people think of this change overall?  Was what it something
that makes sense and might be useful to others?  Is there a better
or different way to do what I need to do instead?

(BTW, I've been using ctwm as my primary and daily X11 window
manager since its first release 30 years ago.)

Reply via email to