Vous pourriez utiliser Devilspie2 (http://www.gusnan.se/devilspie2/), un programme qui exécute des actions sur les fenêtres lors de leur création, en utilisant des scripts écrits en Lua (http://www.lua.org/manual/)
Installez-le avec : sudo apt-get install devilspie2
, puis exécutez devilspie2
. Vous devriez voir le message d'erreur :
Aucun fichier de script trouvé dans le dossier des scripts - sortie.
Cela aura créé ce dossier sous la forme ~/.config/devilspie2/
. Créez le fichier suivant, et enregistrez-le dans ce répertoire avec l'extension .lua
, par exemple en tant que chromium.lua
:
debug_print("Nom de la fenêtre : " .. get_window_name())
debug_print("Nom de l'application : " .. get_application_name())
debug_print("WM_CLASS : " .. get_class_instance_name())
debug_print("Classe de la fenêtre : " .. get_window_class())
if (string.match(get_application_name(),"Chromium$")) then
set_window_below();
end
Ensuite, exécutez devilspie2 --debug &
et ouvrez Chromium. Le terminal devrait afficher :
Nom de la fenêtre : Sans titre - Chromium
Nom de l'application : Sans titre - Chromium
Toutes les fenêtres de Chromium (toute application dont le nom se termine par 'Chromium') ouvertes pendant que Devilspie2 est en cours d'exécution seront désormais placées en dessous de toutes les fenêtres normales.
Ouvrir d'autres programmes pendant que Devilspie2 est en cours d'exécution avec l'option de débogage devrait vous aider à modifier ce code pour d'autres applications.
Pour exécuter automatiquement Devilspie2
Créez un fichier ~/.config/autostart/devilspie2.desktop
, contenant :
[Desktop Entry]
Type=Application
Name=Devilspie2
Exec=devilspie2
NoDisplay=true
Terminal=false
Ajouter des Conditions Supplémentaires
Pour exécuter un script pour une application seulement parfois, vous pourriez :
-
Exécuter Devilspie2 seulement au besoin, par exemple devilspie2 & app ; killall devilspie2
, bien qu'il appliquera ses règles à toutes les nouvelles fenêtres créées pendant son exécution.
-
Pour les applications GTK, l'option --name=
change le nom de l'application, et --class=
la classe de la fenêtre. Chromium ne reconnaît pas cela malgré la documentation.
-
Exécuter la commande avec un environnement modifié, par exemple window-below= chromium-browser
, et utilisez alors la règle suivante :
if (string.match(get_application_name(),"Chromium$")) and
(string.match(io.input("/proc/" .. get_window_property("_NET_WM_PID") .. "/environ"):read("*a"), "window-below="))
then
set_window_below();
end