[maemo-developers] [maemo-developers] non-gtk app integration

From: Tommi Komulainen tommi.komulainen at nokia.com
Date: Thu Jul 7 11:29:13 EEST 2005
On Thu, 2005-07-07 at 10:24 +0930, ext Chris Warren-Smith wrote:
> I managed to get a non-gtk app to integrate with the
> taskswitcher. Here's a screenshot:
> http://www.twpo.com.au/cwarrens/n770/mandelbrot.jpeg
> Non-gtk apps just needs to use _NET_ACTIVE_WINDOW
> and _NET_CLIENT_LIST atoms, as well as following the 
> maemo integration instructions.

Actually applications are supposed to be working without manually
managing those bits.

On any compliant desktop, the window manager manages two properties in
the root window: _NET_CLIENT_LIST and _NET_ACTIVE_WINDOW - the first
listing all application windows and the latter indicating the currently
active one.  (Having the information in the root window enables all
kinds of task switchers and window list applets nicely synchronize each
other.)

When any application (meaning something like task switcher) wants to
activate another window, they'll send an X client message to the root
window, which the window manager will catch and then raise the wanted
window.

For the average application all of the above should be completely
transparent.  If it's not working some evil person has managed to break
TN while we weren't looking.  (It's basically a nice to have
compatibility feature only, all apps in 770 are using views, so things
like this are more likely to remain unnoticed.) 


For views the property handling is slightly extended.  A window
containing multiple views will also have the _NET_CLIENT_LIST and
_NET_ACTIVE_WINDOW properties and those are maintained by HildonApp and
HildonAppView.  Switching views happens using the same X client message
except that it's sent to the application window instead of root window.


> When the icon is pressed the wm sends _NET_ACTIVE_WINDOW
> to the app. presumably the app then needs to intercept this 
> message and bring its self to the top. 

In the case the application (read: HildonApp/View) is maintaining then
_NET_CLIENT_LIST property in the toplevel window, the yes.  Otherwise
the message is supposed to be going to the window manager via root
window.

HTH.


-- 
Tommi Komulainen                            <tommi.komulainen at nokia.com>

More information about the maemo-developers mailing list