J'ai un raccourci clavier pour ToggleShowDesktop
. Lorsque j'appuie sur Menu , toutes les fenêtres sont réduites et je vois mon fond d'écran (comme prévu) :
<keybind key="Menu">
<action name="ToggleShowDesktop"/>
</keybind>
Maintenant, le problème est que je ne veux pas voir mon fond d'écran. J'utilise terminator
comme fond d'écran, c'est-à-dire lorsque je lance terminator
, il est placé sur le calque du dessous :
<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>
Est-il possible de configurer ToggleShowDesktop
de sorte qu'il laisse la couche "inférieure" inchangée ? c'est-à-dire que je veux que seules les fenêtres normales soient minimisées, mais pas terminator
. En d'autres termes, je veux que le terminateur se comporte comme un fond d'écran normal - ne soit pas affecté par ToggleShowDesktop
.
J'utilise Debian Wheezy
avec LXDE
.
(en utilisant la méthode suggérée par @Suchipi) :
J'ai omis quelques détails de ma question initiale, et maintenant ces détails semblent pertinents après tout :
Ma configuration a 2 moniteurs et 4 bureaux virtuels. J'ai donc "8 fonds d'écran" à remplir avec terminator
. D'après ce que j'ai lu précédemment, j'ai supposé que ces 8 fenêtres devront être distinguables, j'ai donc créé 8 symliks à terminator
, c'est-à-dire :
/usr/bin/terminator-wallpaper-1a -> terminator
/usr/bin/terminator-wallpaper-1b -> terminator
/usr/bin/terminator-wallpaper-2a -> terminator
...
En effet créé 8 applications différentes (avec des noms différents).
De même, dans .config/openbox/lxde-rc.xml
Je n'ai pas 1, mais 8 définitions :
<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>
Et enfin, dans /.config/autostart
J'ai 8 *.desktop
fichiers, à démarrer automatiquement après la connexion :
/.config/autostar/terminator-wallpaper-1a.desktop
/.config/autostar/terminator-wallpaper-1b.desktop
/.config/autostar/terminator-wallpaper-2a.desktop
Cela me semble assez compliqué et inélégant, mais je n'ai pas vu de meilleure façon de le faire.
Maintenant, lorsque je suis les instructions de @Suchipi, voici ce qui se passe :
1) la partie avec devilspie
fonctionne bien. Il s'avère que j'ai besoin d'une seule définition qui couvre toutes mes 8 fenêtres (en remplaçant matches
pour is
):
$ cat .devilspie/terminator.ds
(if
(matches (application_name) "terminator-wallpaper")
(begin
(wintype "desktop")
)
)
Et je peux voir avec obxprop
que cela fonctionne comme prévu.
$ 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) maintenant la partie avec xdotool
est plus délicat :
tout d'abord, utiliser 100%
car la résolution ne fonctionne pas, c'est-à-dire que la fenêtre disparaît (je ne la vois pas). Lors de l'utilisation de statique :
xdotool search --class "Terminator-wallpaper-1a" windowunmap --sync windowmap windowsize %1 1920 1056
cela fonctionne pour le moniteur 1 du bureau 1. Mais lorsque je l'exécute pour d'autres bureaux, cela n'a aucun effet, c'est-à-dire :
xdotool search --class "Terminator-wallpaper-2a" windowunmap --sync windowmap windowsize %1 1920 1056
En fait, cela fonctionne également pour d'autres ordinateurs de bureau, mais seulement si j'exécute le xdotool
commande sur le bureau spécifique, que je veux affecter. c'est-à-dire que je dois passer au bureau 2
et lancez xdotool search --class "Terminator-wallpaper-2a"
et puis ça marche.
Aussi, je me demandais si le windowsize %1
joue n'importe quel rôle ici.
MISE À JOUR 2019-12-07 :
donc, j'essaie maintenant de configurer le même système sur Debian Buster (Openbox 3.6) et je rencontre un nouveau problème. Je soupçonne que certaines propriétés ont changé dans la nouvelle version d'openbox.
Tout semble comme avant, c'est-à-dire :
terminator-wallpaper-1a --profile wallpaper -b &
terminator-wallpaper-1b --profile wallpaper -b &
xdotool search --class 'Terminator-wallpaper-1a' windowunmap --sync windowmap windowsize %1 1920 1180
xdotool search --class 'Terminator-wallpaper-1b' windowunmap --sync windowmap windowsize %1 1920 1180
Je reçois deux terminaux en fond d'écran. Mais le problème est qu'un seul de ces terminaux est réellement utilisable. L'autre est "non focalisé" et même lorsque je clique dessus avec la souris, je ne peux pas le mettre au point. C'est-à-dire que je peux voir le terminal, mais je ne peux pas taper dedans.
Connexe :Configurer postfix pour accepter le courrier de deux WAN ?Ce problème n'existait pas auparavant, dans l'ancienne version d'Openbox
Comment puis-je résoudre ce problème ?
Réponse acceptée :
Openbox donnera la fonctionnalité que vous recherchez aux fenêtres dont le _OB_APP_TYPE
la propriété est définie sur "desktop" (vous pouvez utiliser obxprop
pour vérifier les propriétés d'une fenêtre).
Nous devons donc définir le _OB_APP_TYPE
pour votre fenêtre de terminaison sur "bureau" afin que cela se produise.
Lecture du code source openbox, dans client.c
J'ai pu voir que _OB_APP_TYPE
est hérité de _NET_WM_WINDOW_TYPE
. J'ai donc cherché une application qui pourrait changer _NET_WM_WINDOW_TYPE
. L'application que j'ai trouvée s'appelle devilspie
.
Commencez par l'installer :
sudo apt-get install devilspie
Ensuite, nous allons créer le dossier pour devilspie
fichiers de configuration :
mkdir ~/.devilspie
Nous allons maintenant ajouter un fichier de configuration qui indique devilspie
pour rechercher des applications nommées terminator
et définissez leur type de fenêtre sur desktop
. Mettez ce qui suit dans ~/.devilspie/terminator.ds
:
(if
(is (application_name) "terminator")
(begin
(wintype "desktop")
)
)
Maintenant, si vous exécutez devilspie
(ou devilspie -a
pour affecter les fenêtres existantes au lieu des fenêtres nouvellement créées), vous remarquerez si vous utilisez obxprop
sur le terminateur qui _NET_WM_WINDOW_TYPE
a changé, mais _OB_APP_TYPE
n'a pas encore. Utilisons xdotool
pour démapper et remapper la fenêtre (dans la terminologie X11, cela signifie que nous allons arrêter de dessiner et commencer à dessiner la fenêtre), ce qui devrait forcer openbox à remarquer la valeur.
Installez xdotool :
sudo apt-get install xdotool
Ensuite, nous exécutons le script suivant pour trouver le terminator
fenêtre, démappez-la, attendez qu'elle soit démappée, puis remappez-la. Nous redimensionnons également la fenêtre car lorsqu'elle a été démappée et remappée, elle a perdu sa maximisation :
xdotool search --class "terminator" windowunmap --sync windowmap windowsize %1 1024 768
Remplacer 1024 768
avec votre résolution. Notez également que les nouvelles versions de xdotool
que ceux trouvés dans la prise en charge du référentiel apt de Debian en utilisant 100% 100%
au lieu d'une résolution statique. Vous pouvez trouver .deb
packages pour les nouvelles versions de xdotool
sur la page googlecode de xdotool.
La fenêtre de terminaison deviendra immédiatement non décorée, et si vous utilisez maintenant obxprop
, vous verrez que les deux valeurs ont été définies correctement. Si vous appuyez maintenant sur la touche, vous avez lié ToggleShowDesktop
à quelques reprises, la fenêtre de terminaison restera toujours active.
Pour rendre cela persistant, vous voudrez exécuter ces commandes lors de la connexion. La page Wiki LXDE pour LXSession montre plusieurs manières différentes de le faire (global, par utilisateur, par profil, etc.). En supposant que vous souhaitiez ces paramètres uniquement pour votre utilisateur et sous le profil LXDE (par défaut), vous souhaiterez modifier ~/.config/lxsession/LXDE/autostart
et ajoutez les commandes que nous avons exécutées, en gardant à l'esprit que la commande xdotool doit être exécutée après le rendu de la fenêtre du terminateur, alors faites quelque chose comme (sleep 1s & xdotool ...)
. Vous pouvez également configurer ces commandes en tant que raccourcis clavier dans openbox si vous le souhaitez.