How does a window manager actually work?
I'm kinda searching for in depth information about how a window manager actually works.
The thing i'm interested in most is the pixmaps that it must make at some point in time right?
When i want to do (or try) is make a very basic very primitive - proof of concept only - window manager that does the drawing with QML, the logic should all be in C++/Qt. The reasoning behind this is that you get all the graphical power that QML has for free! So free effects, blur, other animations! Even shaders in QtQuick 2.0. But the thing i can't seem to figure out is how a window (not the decorations, but the actual window content) is being build up and who is responsible for it. Does it somewhere end up with a pixmap which can just be "blitted" to the screen thus can also be send to a QML element?
And even if everything ends up being a pixmap, then how can i ever get keyboard and mouse events working? I mean.. it's a picture, how do i know which event to place where and how do i even do that?
I'm actually hoping someone somewhere has a extremely basic 2 source file Qt example somewhere
Note: while writing this i found: http://gitorious.org/qt-window-manager#more might be interesting.
I hope someone could shed some light on this since having a window manager that really taps in the power of QML seems like a perfect next step for graphical linux environments.
A traditional window manager tells a program where its window is, the program then draws that itself. A compositing window manager gets the window content as an opengl texture, and draws those where and how it wants. For more details, examine the sources of some simple wms.
Let me Google that for you:
Originally Posted by markg85
qlwm: c. 5000 LOC
antico--there are at least 4 different forks, I won't try linking one; the "light" version is 32 MB, so I'd hesitate to recommend
Egg Window Manager (aims for "simple, well-documented code")
So that's 4 wm's, including the one you found--do you think that you need any more?