Different window managers on different screens?

Is it possible to run different window managers on different screens?

Example, I want to run a tiling window manager (such as awesome) on one screen, and then I would like to run a stacking window manager (such as Compiz) on another screen.


Solution 1:

Yes, it's possible. It requires the cooperation of the window manager. The window manager should have an option on its command line or in its configuration file to tell it which screen(s) to manage. For example, fvwm -s 0 tells Fvwm to manage only screen 0 (by default, Fvwm, like every window manager I know, manages all screens).

If your window manager doesn't offer a way not to manage all screens, I don't think there's a way to force it from the outside. You would need to modify the source code. The critical change concerns a line like this:

XSelectInput(dpy, RootWindow(dpy, screen_num), SubstructureRedirectMask);

You would need to execute this line only on one screen instead of all of them. Depending on the architecture of the window manager, this may be a trivial change or may involve a lot of extra coding.

Note that I assume you meant screens in the technical sense of the X Window System. If you want multiple displays that you can switch between with Ctrl+Alt+Fn, that's a whole different kettle of fish. Also, having more than one screen on an X display is pretty rare; I won't discuss why or how to do it in this answer.