Other CDE Users Unite!

There is a new enhanced motif window manager.
The package is `emwm` and it is included in the ports.

The advantage over CDE is that it is more lightweight -just the mwm window manager-. It "fixes" the following issues present in the legacy mwm:
1. it handles the hints to allow clients maximize to the size of the physical screen when you are using two or more screens with xrandr.
2. It supports Xft and UTF-8 fonts -old core fonts are also supported and can be configured-

The CDE window manager is not just mwm (annoyingly). Dtwm is a forked version of an (obviously older version of) mwm with a large number of features added (including the panel itself and multi-desktops (re)added).

emwm does have some much needed improvements, but these will need to be manually backported. Perhaps by doing a diff between it and an older version of mwm which can then mostly be applied to Dtwm. Certainly not impossible, just more tricky than changing mwm to emwm in the (Dt) Xsession file.

(If I recall, I think Dtwm is based on a considerably old version of mwm, before the multi-desktops were stripped out with Motif 2.x)
 
The CDE window manager is not just mwm (annoyingly). Dtwm is a forked version of an (obviously older version of) mwm with a large number of features added (including the panel itself and multi-desktops (re)added).

emwm does have some much needed improvements, but these will need to be manually backported. Perhaps by doing a diff between it and an older version of mwm which can then mostly be applied to Dtwm. Certainly not impossible, just more tricky than changing mwm to emwm in the (Dt) Xsession file.

(If I recall, I think Dtwm is based on a considerably old version of mwm, before the multi-desktops were stripped out with Motif 2.x)

If I understand your message correctly you value Mwm simplicity. I agree with that.

Dtwm maximizes windows to physical screen in a multiple screen setup. I find that interpretation of the maximize button as useful and I suspect mwm not doing that is due to its legacy code. I was aware that multiple desktops was removed in Motif 2 and I read somewhere it was due to it required some Sun library -unsure about this part-.

I did not know the panel was an integral part of dtwm, I thought it was a separate program.

Emwm has a bug (maybe it is a feature): when you move a window, in the original mwm an expose callback event is triggered once the user has completed the positioning of the window, but in emwm the application is flooded with expose events as the user drags the mouse. I reverted back to Mwm for that reason, if your application has a heavy redraw callback in a DrawingArea that bug/feature is a big issue.

I miss Dtwm multiple desktops. I have thought of checking the Mwm code but I am not sure as I lack experience dealing with existing large codebase projects.
 
If I understand your message correctly you value Mwm simplicity. I agree with that.
I do like (and use) CDE but specifically, I meant that having the separation between the WM and the i.e panel would have been a nicer approach. For example, it would now have made integrating the updated emwm trivial.

Emwm has a bug (maybe it is a feature): when you move a window, in the original mwm an expose callback event is triggered once the user has completed the positioning of the window, but in emwm the application is flooded with expose events as the user drags the mouse. I reverted back to Mwm for that reason, if your application has a heavy redraw callback in a DrawingArea that bug/feature is a big issue.
Ah I see. You might be able to work around that by using a compositor (xcompmgr) or disabling opaque movement / resizing. But yes, it does seem like a bug when just moving the window (doing that for resize is still wasteful but more acceptable as a behavior)

I miss Dtwm multiple desktops. I have thought of checking the Mwm code but I am not sure as I lack experience dealing with existing large codebase projects.
Back in the old OpenCDE days I used vdesk to add "fake" virtual desktops to mwm.

https://offog.org/code/vdesk/

Basically it tags new windows to the current "desktop" and then hides and shows them based on which "desktop" you switch to. It actually worked surprisingly well. Just attach it to some hotkeys and you might find you don't need proper multi-desktops.
 
Ah I see. You might be able to work around that by using a compositor (xcompmgr) or disabling opaque movement / resizing. But yes, it does seem like a bug when just moving the window (doing that for resize is still wasteful but more acceptable as a behavior)

Now I am in doubt if it was resize or move, but in anycase it floods the application forcing it to redraw constantly. If your X server is remote, that is a big deal. I am sure the behaviour is not the same because I coded a printf trace in the app to see when the callback was being activated. The behaviour was clearly different between mwm and emwm.
I suspect too it is a bug of emwm. It likely goes unnoticed if your X server is running locally and you are running lightweight apps.

Back in the old OpenCDE days I used vdesk to add "fake" virtual desktops to mwm.

https://offog.org/code/vdesk/

Basically it tags new windows to the current "desktop" and then hides and shows them based on which "desktop" you switch to. It actually worked surprisingly well. Just attach it to some hotkeys and you might find you don't need proper multi-desktops.

I already tried vdesk. As you say you code some keyboard shortcuts and you have your multi-desktop working. But the problem with mwm is that when you switch desktop, for example you go from desktop 1 to desktop 2, the windows running in desktop 1 appear minimised as icons in desktop 2, so it is not a clean solution as you have your desktops full of minimised icons from other desktops.
 
I already tried vdesk. As you say you code some keyboard shortcuts and you have your multi-desktop working. But the problem with mwm is that when you switch desktop, for example you go from desktop 1 to desktop 2, the windows running in desktop 1 appear minimised as icons in desktop 2, so it is not a clean solution as you have your desktops full of minimised icons from other desktops.
If I recall, one of the first things I did when creating OpenCDE was hack vdesk to unmap rather than iconify icons.

https://github.com/OpenCDE/opencde/blob/master/src/libopencde/vdesk.cpp

If may be a bit of a faff, but perhaps you can do a diff between my hacked version and the upstream vdesk.cpp to see what relevant parts I changed?

Heh, my past comment here doesn't inspire confidence in my work ;)

I suspect too it is a bug of emwm. It likely goes unnoticed if your X server is running locally and you are running lightweight apps.
Yeah, its a lame feature that always looks glitchy and feels sluggish, even locally. The days where graphics used to be simple and crisp are quickly fading.
 
If I recall, one of the first things I did when creating OpenCDE was hack vdesk to unmap rather than iconify icons.

https://github.com/OpenCDE/opencde/blob/master/src/libopencde/vdesk.cpp

If may be a bit of a faff, but perhaps you can do a diff between my hacked version and the upstream vdesk.cpp to see what relevant parts I changed?

Heh, my past comment here doesn't inspire confidence in my work ;)


Yeah, its a lame feature that always looks glitchy and feels sluggish, even locally. The days where graphics used to be simple and crisp are quickly fading.

Thanks for sharing, I will have a look to your vdesk.cpp, if I manage to compile it with your changes that will do the trick.

Yeah, its a lame feature that always looks glitchy and feels sluggish, even locally. The days where graphics used to be simple and crisp are quickly fading.

There are niche places/times for such crisp and simple graphics. And not being mainstream shall not be a deterrent for simplicity.

Bonus point:

I found some 1990 video recordings about Xlib/Xt/Motif in the CERN archive:

https://cds.cern.ch/record/422988 (2 videos Xt/Motif)
https://cds.cern.ch/record/422994 (5 videos Xlib)

I suspect those could be appreciated by some readers of these posts.
 
Back
Top