View Single Post
Old 01-25-2012, 11:17 PM   #11
Nyoxi
Connoisseur
Nyoxi can really shake a tail feather.Nyoxi can really shake a tail feather.Nyoxi can really shake a tail feather.Nyoxi can really shake a tail feather.Nyoxi can really shake a tail feather.Nyoxi can really shake a tail feather.Nyoxi can really shake a tail feather.Nyoxi can really shake a tail feather.Nyoxi can really shake a tail feather.Nyoxi can really shake a tail feather.Nyoxi can really shake a tail feather.
 
Posts: 55
Karma: 116549
Join Date: Jan 2012
Device: Kindle Touch
Hi everyone,

since I have just discovered this thread I thought I'd add my 5 cents. I have already experimented with Xorg and running other apps (I'm working on simple GTK frontend to opkg) and here's what I have found.

So first to sum up what you have already said:
1) you can start other X apps without any magick on display :0
2) there's awesome WM running
3) normally you cannot see the window because it's hidden under the framework (there's a trick to it, see below)

Now there is rather complex set of lua scripts (in /etc/xdg/awesome/) for window management (also some stuff to handle different screen orientations) so if anyone wants to hack with that by prepared to get your hands dirty. I didn't spend too much time figuring all what's going on there and at some points I'm still uncertain, but for the moment I have figured enough.

To make the windows visible there is a naming scheme what windows are expected to have in their title. The value is set of key:value pairs separated by "_" (underscore). For example "L:C_N:searchBar_ID:system". You can run "xwininfo -tree -root" to get a better idea. And to dig deeper into this start with "addClient" function in "lab126LayerLogic.lua". The example shows keys L, N and ID but there are few more which are not necessary. Key N defines the type of an application and for normal 3rd party windows the value 'application' seems the right choice. ID seems to be either name of the window or the application (probably the former). The L defines on what layer you want your window displayed.

The available codes for the various layers are the following (from lab126LayerLogic.lua):

A -- Application Layer
C -- Chrome Layer
D -- Dialog Layer
KB -- Keyboard Layer
SS -- ScreenSaver Layer

Here's a piece of content of rc.lua explaining how are the layers organized:

Quote:
-- Z Stack Layers matching
-- internal layers in Awesome
-- 0 and 1 are used by awesome
-- and we do not use them here
LAYERS = {}
LAYERS.HIDDEN = 2 -- hidden
LAYERS.BLANK = 3 -- below
LAYERS.APP = 4 -- normal
LAYERS.CHROME = 5 -- above
LAYERS.DIALOG = 6 -- dialog
LAYERS.KB = 7 -- KB
LAYERS.ALERT = 8 -- ALERT
LAYERS.FULL = 9 -- FULL, not used
LAYERS.SCREENSAVER = 10 -- ontop
If your window name doesn't comply to the naming scheme above your window is automaticaly placed on layer HIDDEN. The layer BLANK seem to contain just one black window covering whole screen (so as to hide what is to stay hidden). The rest should be self explanatory.

That's all for the moment.
Nyoxi is offline   Reply With Quote