Anmutige Abmeldung in dwm

2775
Riateche

Ich möchte, dass dwm alle Fenster anmutig schließt, wenn ich den Hotkey zum Beenden drücke. Ich mag das Verhalten von Unity: Es zeigt eine Liste von Fenstern an, die die Abmeldung verweigern (z. B. Editoren mit ungespeicherten Änderungen), und meldet sich nicht ab, bevor alle Probleme behoben und Anwendungen geschlossen wurden. Standardmäßig beendet dwm die X-Sitzung und alle laufenden Anwendungen werden beendet.

Ich habe darüber nachgedacht, ein Skript zu schreiben, das eine Liste aller Fenster abruft, sie elegant schließt und wartet, bis ihre Prozesse abgeschlossen sind. Ich weiß nicht mal, wie man Fenster schließt. Die einzige Möglichkeit, die ich kenne, ist die Verwendung von wmctrl, und dieses Dienstprogramm funktioniert nicht mit dwm.

5
da ich bereits mit DWM-Code gearbeitet habe, aber dies ist nicht stackoverflow, muss ich im Kontext bleiben: Sie müssen einen Wrapper um dwm haben, das ist das Beste, was Sie tun können, ohne Code neu schreiben zu müssen. Ich verwende ein Skript, das alles sendet außer dwm, und wenn (nur wenn) auch alles getötet wurde, was nicht der Fall ist, wenn ein Programm ein "save your document" -Feld öffnet, dann tötet dwm ebenfalls ( Wenn nicht / nein töten). Sie können ein solches Skript so ändern, dass es das tut, was Sie möchten, es jedoch umwickeln, ohne die eigentliche Herausforderung in Codes zu setzen. (aber wie gesagt, das ist nicht stackoverflow) osirisgothra vor 10 Jahren 0
Übrigens können Sie eine Kombination aus ps, kill, grep und sed verwenden, um die Informationen zu erhalten, die Sie in einem Skript über Ihre Prozesse benötigen. Natürlich können Sie die richtige dwm-Instanz über die DISPLAY-Variable finden osirisgothra vor 10 Jahren 0

1 Antwort auf die Frage

0
Jeremy W

Sie müssen dwm möglicherweise in einem X11-Sitzungsmanager starten


Hier ist eine Möglichkeit, es mit Gnome Display Manager (GDM) zu tun

Fügen Sie Folgendes zu /usr/share/xsessions/dwm.desktop hinzu

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

Erstellen Sie eine neue Datei unter / usr / local / bin / dwm-start mit 755 Berechtigungen.

 #!/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 

Wenn GDM auf Ihrem Computer ordnungsgemäß konfiguriert ist, sollte auf dem Anmeldebildschirm im Sitzungsmenü ein neuer dwm-Eintrag angezeigt werden.

Weitere dwm-Optimierungen, einschließlich Einstellungen für Ruhezustand / Herunterfahren, finden Sie hier.

Ich starte dwm von lightdm (Standard-Login-Manager in Ubuntu). Wenn dwm abgeschlossen ist, werden alle Anwendungen beendet. Ich sehe nicht, dass gdm oder lightdm irgendeine Funktionalität für das ** Fragen ** zur Verfügung stellen. Ich möchte wirklich, dass diese Anwendungen beendet werden. Riateche vor 11 Jahren 0
@Riateche, wenn Sie dies bereits in lightdm starten ... Haben Sie gnome-session-quit --logout-dialog ausprobiert? Ich bin mir nicht sicher, ob es ohne Gnome / Unity-Desktop gültig ist, aber es lohnt sich. Jeremy W vor 11 Jahren 0
gnome-session-quit funktioniert nur, wenn gnome-session gestartet wurde. dwm funktioniert nicht gut mit gnome-session. Riateche vor 11 Jahren 0
@Riateche Mod + Shift + Q sollte einfach dwm töten ... nicht X. Ist das nicht der Fall für Sie? Jeremy W vor 11 Jahren 1
Es gibt zwei Möglichkeiten. Erstens: Sitzungsbefehl wird direkt auf dwm gesetzt. In diesem Fall töten mod + shift + q dwm, X und alle GUI-Anwendungen. Zweitens: Der Sitzungsbefehl ist auf ein Skript gesetzt, das dwm in einer Endlosschleife neu startet. In diesem Fall startet mod + shift + q dwm neu, ohne Anwendungen zu beenden, und killall dwm tötet dwm, X und alle GUI-Anwendungen. Ich verwende derzeit die zweite Art von Setup. Riateche vor 11 Jahren 0