Hi all, Happy New Year!
I've began working on something that would be required anyway in order for UIKit apps to feel "at home". That is, a compositing window manager meant for mobile platforms. Fireplace is a compositing window manager written in Objective-C using Xlib, OpenGL and GNUstep's Foundation. It is intended as a single-screen window manager similar in behavior to the mobile window management and application control metaphor shipped by a popular fruit vendor. It's neither a launchpad, nor a springboard, and (despite its name) it also has nothing to do with certain matchboxes :) Some details on internals and current state. I've currently got the compositing overlay window created, filled with a GLX-backed X11 window, and I'm intercepting interesting X notifications. For the moment, those are primarily creation, destruction, mapping and unmapping notifications. These trigger activity such as creation of internal backing structure describing another client app's X11 window, creation of backing GLX pixmap, GL texture, etc. I'm currently struggling with getting the GLX pixmap to actually provide an OpenGL texture; all windows are (despite quads being rendered in correct position) currently white. I don't intend to allow window movement -- fruit vendor has shown that this is not needed on a mobile platform. Windows have a forced, fixed position based on their type; general-purpose windows will be stretched to fullscreen. Dialogs will not be stretched and will be semitransparent. Fireplace will, as soon as window compositing starts to work, get support for icon grid and app launching. There will also be application switching integration. This is a nearly complete list of features to-be-implemented, since the primary intention is to support future UIKit apps. It's also structured as neat Objective-C code. AppKit is not used, since UI will probably be rendered using UIKit later on; plus, since this is a WM and I'm struggling to learn how compositing and window management works in the first place, AppKit would probably get in the way. Foundation is currently used only minimally - there was not much opportunity. I love what I've done so far. If anyone wants to play, the code is here: http://bitbucket.org/ivucica/fireplace I recommend using test.sh: this launches Xephyr and Fireplace.app. Then, Fireplace.app launches xterm as an experimental client. You can point to this white window, and blindly type, for example, gedit. Then you can blindly use the menus to see that the windows do appear. Even now, I feel Fireplace is relatively clean (despite some mess induced by my multi-hour attempts to get texture fetching to work) and even if it doesn't get finished by itself I'm confident someone can use it as a nice example on how to set up a compositing window manager. Caffeine is wearing off, so I'm off to sleep. Hopefully your New Year's Eve was more social than mine ;) -- Ivan Vučica [email protected] -- Ivan Vučica - [email protected]
_______________________________________________ Discuss-gnustep mailing list [email protected] https://lists.gnu.org/mailman/listinfo/discuss-gnustep
