[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Fireplace.app
From: |
Ivan Vučica |
Subject: |
Fireplace.app |
Date: |
Sun, 1 Jan 2012 06:49:30 +0100 |
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:
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
--
Ivan Vučica - ivan@vucica.net
- Fireplace.app,
Ivan Vučica <=