4 votes

Comment démarrer une application avec la propriété la plus basse ?

Je veux commencer une application avec la propriété la plus basse. Cela signifie que la fenêtre restera toujours en bas des autres fenêtres.

Est-ce possible? Je pense qu'il doit y avoir une application qui fait une telle chose, mais je n'ai aucune idée comment la trouver...

Par exemple, je veux commencer chromium-browser avec la propriété la plus basse. Comment puis-je faire cela?

2voto

Martin Thornton Points 4221

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

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X