Backwm - A program that (in theory) will allow local applications to directly use backend displays while using Xdmx.
Update: The last packaged version of backwm is a mess. I have a far better version now. If you want my new version please email me, and I will post my update to the site as soon as I can.

Note: I have stoped maintaining backwm. I still believe this is possible.

I am going to attempt to develop something that does the same thing using an xlib interpose library. This is neccessary because I must intercept and give special handling to thigns like grabbing focus. I will call this new project backlib

The backlib should reparent windows made on the backend root, as backwm does now. I think I finally solved the input issue. My current idea is to have backlib create "phantom" windows on the front-end. These would be input only windows used for grabbing input events. The DMX window serving as the parent would receive expose etc. events and we would have to somehow translate these to the backend (because inputonly windows don't get expose events), but we wouldn't have to translate input and focus events.

Warning: Everything following may be outdated.

This is how backwm works.
  1. Run backwm XdmxDisplay BackendDisplay
  2. start an application with DISPLAY set to the backendDisplay.
  3. use the -f flag to disable input,, without -f you can use the local pointer to sometimes/sort-of provide the backwm program with input, but it doesn't work well.
  4. You will now (in theory) be able to use the application. The application will be managed by the Window manager running on the Xdmx server. You can move it around just like it is running on the Xdmx server.
Why you might want it:
  1. It lets you run 3d applications on a single backend without a loss in performance. You can run fgl_glxgears and such, while other solutions, such as Chromium let you use OpenGL with Xdmx they are slower than directly drawing to the backend, and do not support all of the features the backend display has.
  2. It lets you use features the Xdmx frontend doesn't have, for example, I couldn't get mplayer to play my DVDs with Xdmx, but I can play DVDs with backwm and Xdmx.
  3. Right now it only works really well with programs that don't need to get input from the X server, such as mplayer (which gets input from the console) and programs such as fgl_glxgears and glxgears (which doesn't get input at all).
  1. A program working directly with the backend display can not take advantage of the features of Xdmx. You can drag a window using backwm from on backend to another, but it displays nothing on the other backends. ig. you get optimal performance on one backend, and no output on all other backends. I know this, I don't intend to fix it, it is an inherent limitation of the system. backwm aims to allow the user to use both local and Xdmx applications together, the user must chose if he wants to use Xdmx to move between backends or backwm to get ideal performance.
  2. While output is workable (its great for things like mplayer), input doesn't work very well. The local keyboard can provide input to the local window, its very bad... I need to fix it so that backwm applications get their input from the Xdmx server, not the local server. I should probably put some kind of input only window over the backend window to prevent local input from going to it, setup some kind of event forwarding system, and then make some kind of library call interceptor to make the applications accept input from the window manager like it was from the hardware.

James Supancic, last modified 2006.