Le 08/04/2023 à 18:03, Quentin Barnes a écrit :
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().)
Hi, Good idea, I just commented your last commit.
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.
I think there is no chance a collision occurs, as Xrandr should take care of this.
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?
Out of curiosity, do you have some examples of use of these new macros?
(BTW, I've been using ctwm as my primary and daily X11 window manager since its first release 30 years ago.)
Same here :) ++ Max.