Um mit einer Tastenkombination herunterfahren zu können, können wir gnome-session-quit ---power-off
eine benutzerdefinierte Tastenkombination zuweisen .
In Unity führt dies zum folgenden Dialog:
Dann brauchen wir mindestens zwei weitere Tastatureingaben, um unser System endgültig auszuschalten. Dies ist ziemlich unpraktisch und ich würde das alte Dialogfeld zum Herunterfahren vorziehen, wenn Sie es ausschalten könnten, indem Sie einfach drücken Returnoder den Standard-Countdown von 60 Sekunden abwarten lassen.
Beim Aufruf gnome-session-quit --poweroff
von einer GNOME-Session-Flashback- Session auf demselben System (14.04 LTS) wird der alte Dialog mit dem Countdown zurückgegeben:
Wir wissen also, dass es irgendwo wohnt.
Gibt es eine Möglichkeit, diesen alten Dialog aufzurufen, wenn eine Unity-Sitzung ausgeführt wird?
quelle
Antworten:
Hier ist ein Skript, um das gewünschte Verhalten zu emulieren. Muss wie mit ran
sudo
. Kann an eine Tastenkombination gebunden werden (mit vorläufigem Hinzufügen desshutdown
Befehls zur sudoers-Datei, um das Ausführen ohne Kennwort zu ermöglichen ). Einfach, präzise und macht den Job.Update: 14. Juni
Wie von Takkat vorgeschlagen, ist hier ein Skript, das die --timer-Option und den dbus von zenity verwendet, um dasselbe Verhalten zu erzielen, ohne dass ein sudo-Zugriff erforderlich ist:
Die Grundidee dabei ist, dass die Timeout-Option von zenity mit einem Code größer als 0 beendet wird, was normalerweise bedeutet, dass der Befehl fehlgeschlagen ist. Indem wir die Abbruchoption und das Timeout von zenity als Bedingung behandeln, die das Herunterfahren ermöglichen, verwenden wir den Operator OR (
||
), um das Herunterfahren nur dann durchzuführen, wenn der Benutzer auf die Abbruchschaltfläche (mit der Bezeichnung "DOIT") klickt oder das Dialogfeld abläuft.Eine weitere Variante zur Verbesserung der Benutzererfahrung kann verwendet werden
yad
(muss zuerst mit diesen Befehlen installiert werdensudo apt-add-repository ppa:webupd8team/y-ppa-manager;sudo apt-get update; sudo apg-get install yad
). Bei dieser Variante wird der Fortschrittsbalken verwendet, um den Benutzer über die verbleibende Zeit zu informierenEine andere mögliche Version berücksichtigt, dass die standardmäßig hervorgehobene Schaltfläche die OK-Schaltfläche sein kann oder nicht, wenn Sie die Beschriftung der OK-Schaltfläche von zenity ändern.
Das Skript fährt das System herunter, wenn eine Rückgabe ungleich 0 erfolgt. Wenn das Skript eine Zeitüberschreitung aufweist, weist der Rückgabewert 1 oder 5 das Skript an, die auszuführen
else
Teilquelle
zenity --timeout
eingebauten Timer. Auf diese Weise müssen wir das Herunterfahren später nicht abbrechen / neu starten.if [[ $? -eq 1 ]] ; then exit \else dbus...
Bedingung, die das macht. Offensichtlich gibt es keine Möglichkeit, den alten Logout-HelferNicht wörtlich, wonach Sie gefragt haben, aber zumindest eine (effektiv) vergleichbare Lösung wäre, das folgende Skript unter eine Tastenkombination zu setzen.
Was es macht
Wenn die Tastenkombination verwendet wird:
gnome-session-quit --power-off
Befehl wird ausgeführtwird die Maus in die entsprechende Schaltfläche „Schließen“ bewegt wird , wirksam das Herunterfahren Schaltfläche ausgewählt prä- machen:
Dann:
Das Drehbuch
Wie benutzt man
Ich bin mir ziemlich sicher, dass Sie wissen, wie man es benutzt, aber hier kommen wir aus Gründen der Gewohnheit:
Das Skript verwendet
xdotool
Kopieren Sie das Skript in eine leere Datei und speichern Sie es unter
run_close.py
Legen Sie im Kopfbereich die Position des Bildschirms für die Schaltfläche zum Herunterfahren im Schließfenster fest (meine erste Vermutung war richtig):
und die Wartezeit vor dem unbeaufsichtigten Herunterfahren:
Führen Sie es mit dem folgenden Befehl aus:
Testen Sie es mit allen Optionen: Drücken Sie, Enterum sofort herunterzufahren, und brechen Sie den Vorgang mit der Maus ab
Wenn alles funktioniert, fügen Sie es einer Tastenkombination hinzu: Wählen Sie: Systemeinstellungen> "Tastatur"> "Tastenkombinationen"> "Benutzerdefinierte Tastenkombinationen". Klicken Sie auf das "+" und fügen Sie den Befehl hinzu:
BEARBEITEN
Unten eine Version des Skripts, für die keine zusätzlichen Einstellungen erforderlich sind. Es berechnet die Koordinaten der Schaltfläche "Beenden", unabhängig von der Bildschirmauflösung.
Das Setup ist ziemlich gleich,
[3.]
kann aber übersprungen werden.Erläuterung
Die Größe des Session Manager-Fensters zum Schließen des Systems ist immer zentriert und von fester (absoluter) Größe, unabhängig von der Bildschirmauflösung. Daher die Position relativ zur Bildschirmmitte ein konstanter Faktor.
Alles, was wir dann tun müssen, ist, die Bildschirmauflösung zu lesen und die Position der Schaltfläche von dort aus zu berechnen.
Die angewendete Funktion (
get_qloc()
) berechnet die Auflösung des linken Bildschirms , da hier der Dialog angezeigt wird.Hinweis
Die in der Zeile festgelegte Zeit
time.sleep(0.4)
ist für relativ langsame Systeme festgelegt, um sicherzustellen, dass die Maus bewegt wird, nachdem das Fenster zum Herunterfahren angezeigt wird. Auf schnelleren Systemen kann es kürzer sein, auf langsameren Systemen (wie möglicherweise einer VM) muss es möglicherweise länger eingestellt werden.quelle