Question Déconnexion gracieuse dans dwm


Je veux que dwm ferme toutes les fenêtres avec élégance lorsque j'appuie sur quitter le raccourci clavier. J'aime le comportement d'Unity: il affiche la liste des fenêtres refusant la déconnexion (par exemple, les éditeurs avec des modifications non enregistrées) et ne se déconnecte pas avant que tous les problèmes soient résolus et que les applications soient fermées. Par défaut, dwm vient de mettre fin à la session X et toutes les applications en cours d'exécution sont supprimées.

Je pensais à écrire un script qui récupère la liste de toutes les fenêtres, les ferme avec élégance et attend que leurs processus se terminent. Mais je ne sais même pas comment fermer les fenêtres. Le seul moyen que je connaisse est d'utiliser wmctrl et cet utilitaire ne fonctionne pas avec dwm.


5
2018-06-03 09:42


origine


comme j'ai de l'expérience avec le code de DWM, mais ce n'est pas un stackoverflow, je dois donc rester dans le contexte: vous devrez avoir un wrapper autour de dwm, le mieux que vous puissiez faire sans avoir à réécrire le code. J'utilise un script qui envoie sigterm à tout sauf dwm fonctionnant en dessous, et si (seulement si) tout a été tué, ce qui n'est pas le cas si un programme affiche une boîte "save your document", puis tue dwm ( si pas / pas tuer). Vous pouvez modifier un tel script pour faire ce que vous voulez, mais en l'enveloppant sans entrer dans les codes le véritable défi. (mais comme je l'ai dit, ce n'est pas stackoverflow) - osirisgothra
btw vous pouvez utiliser une combinaison de ps, kill, grep et sed, pour obtenir les informations dont vous avez besoin sur vos processus dans un script, bien sûr vous pouvez trouver l'instance correcte de dwm via la variable DISPLAY - osirisgothra


Réponses:


Vous devrez peut-être démarrer dwm depuis un gestionnaire de session X11


Voici une façon de le faire avec Gnome Display Manager (GDM)

Ajoutez ce qui suit à /usr/share/xsessions/dwm.desktop

 [Desktop Entry]
 Encoding=UTF-8
 Name=dwm
 Comment=This session starts dwm
 Exec=/usr/local/bin/dwm-start
 Type=Application

Créer un nouveau fichier à / usr / local / bin / dwm-start avec 755 autorisations.

 #!/bin/sh
 # You can add other programs to set the background, add autoloading
 # and add autoload for USB and such here 
 # Make sure you start dwm last as it never returns control to this script
 exec /usr/local/bin/dwm > /dev/null

Si GDM est correctement configuré sur votre ordinateur, vous devriez voir une nouvelle entrée dwm dans le menu de session sur l'écran de connexion.

D'autres réglages de dwm, y compris la configuration pour la mise en veille prolongée / arrêt sont ici.


0
2018-06-09 15:52



Je commence dwm à partir de lightdm (gestionnaire de connexion par défaut dans Ubuntu). Lorsque dwm est terminé, toutes les applications sont supprimées. Je ne vois pas que gdm ou lightdm fournissent des fonctionnalités pour demander A propos de je veux vraiment que ces applications soient tuées. - Riateche
@Riateche si vous commencez cela dans lightdm déjà .. avez-vous essayé gnome-session-quit --logout-dialog? Je ne suis pas sûr que ce soit valable sans gnome / unity desktop mais cela vaut la peine d'essayer. - Jeremy W
gnome-session-quit ne fonctionne que si gnome-session a été démarré. dwm ne fonctionne pas bien avec gnome-session. - Riateche
@Riateche mod + Shift + Q devrait simplement tuer dwm ... pas X. N'est-ce pas le cas pour vous? - Jeremy W
Il y a deux options. First: la commande de session est directement définie sur dwm. Dans ce cas, mod + shift + q tue dwm, X et toutes les applications d'interface graphique. Deuxièmement: la commande de session est définie sur le script qui redémarre dwm en boucle infinie. Dans ce cas, mod + shift + q redémarre dwm sans tuer les applications, et killall dwm tue dwm, X et toutes les applications d'interface graphique. J'utilise actuellement le deuxième type de configuration. - Riateche