I have a keybinding for
ToggleShowDesktop. When I press Menu, all windows get minimized and I see my Desktop Wallpaper (as expected):
<keybind key="Menu"> <action name="ToggleShowDesktop"/> </keybind>
Now the problem is, I don't want to see my wallpaper. I am using
terminator as my wallpaper, i.e. when I start
terminator, it is placed on the layer below:
<application name="terminator"> <focus>yes</focus> <layer>below</layer> <desktop>1</desktop> <position> <y>0</y> <x>0</x> </position> <skip_taskbar>yes</skip_taskbar> <maximized>true</maximized> </application>
Is it possible to configure
ToggleShowDesktop so that it leaves the "below" layer unaffected? i.e. I want only the normal windows to be minimized, but not
terminator. In other words, I want terminator to behave as normal wallpaper would - be unaffected by
I am using
Debian Wheezy with
UPDATE (using method suggested by @Suchipi):
I have left out few details from my original question, and now these details seem to be relevant after all:
My setup has 2 monitors and 4 virtual desktops. So I have "8 wallpapers" to fill with
terminator. From what I have read previously, I assumed that these 8 windows will have to be distinguishable, so I have created 8 symliks to
/usr/bin/terminator-wallpaper-1a -> terminator /usr/bin/terminator-wallpaper-1b -> terminator /usr/bin/terminator-wallpaper-2a -> terminator ...
In effect created 8 different applications (with different names).
.config/openbox/lxde-rc.xml I have not 1, but 8 definitions:
<application name="terminator-wallpaper-1a"> <desktop>1</desktop> <position> <monitor>1</monitor> </position> ... </application> <application name="terminator-wallpaper-1b"> <desktop>1</desktop> <position> <monitor>2</monitor> </position> ... </application> <application name="terminator-wallpaper-2a"> <desktop>2</desktop> <position> <monitor>1</monitor> </position> ... </application>
And lastly, in
/.config/autostart I have 8
*.desktop files, to be started automatically after login:
/.config/autostar/terminator-wallpaper-1a.desktop /.config/autostar/terminator-wallpaper-1b.desktop /.config/autostar/terminator-wallpaper-2a.desktop
This seems to me quiete overcomplicated and inelegant, but I didn't see any better way to do it.
Now, when I follow the instructions from @Suchipi, the following happens:
1) the part with
devilspie works OK. It turns out, I need only one definition which covers all my 8 windows (substituting
$ cat .devilspie/terminator.ds (if (matches (application_name) "terminator-wallpaper") (begin (wintype "desktop") ) )
And I can see with
obxprop that it works as expected.
$ obxprop | egrep '(_OB_APP|_NET_WM_WINDOW_TYPE)' _OB_APP_TYPE(UTF8_STRING) = "normal" _OB_APP_TITLE(UTF8_STRING) = "None" _OB_APP_CLASS(UTF8_STRING) = "Terminator-wallpaper-1" _OB_APP_NAME(UTF8_STRING) = "terminator-wallpaper-1" _OB_APP_ROLE(UTF8_STRING) = _NET_WM_WINDOW_TYPE(ATOM) = _NET_WM_WINDOW_TYPE_DESKTOP
2) now the part with
xdotool is more tricky:
first of all, using
100% for the resolution does not work, i.e. the window disappears (I don't see it). When using static:
xdotool search --class "Terminator-wallpaper-1a" windowunmap --sync windowmap windowsize %1 1920 1056
this works for desktop 1 monitor 1. But when I run it for other desktops, it has no effect, i.e.:
xdotool search --class "Terminator-wallpaper-2a" windowunmap --sync windowmap windowsize %1 1920 1056
Actually, it works for other desktops as well, but only if I run the
xdotool command on the specific desktop, which I want to affect. i.e. I have to switch to desktop
2 and run
xdotool search --class "Terminator-wallpaper-2a" and then it works.
Also, I was wondering whether the
windowsize %1 plays any role here.