Jak zawiesić w linii poleceń, aby ekran był zablokowany?

10

Używam Xubuntu 12.04. W Menedżerze zasilania zaznaczyłem ekran Rozszerzony -> Blokuj, gdy przechodzę do trybu zawieszenia / hibernacji. Jeśli zdecyduję się zawiesić w menu głównym / Panelu 1, ekran jest zablokowany. Jednak jeśli użyję dbus-send --system --print-reply --dest="org.freedesktop.UPower" /org/freedesktop/UPower org.freedesktop.UPower.Suspend(patrz Jak mogę zawiesić / hibernować z wiersza poleceń?; Używam tego polecenia za pomocą skrótu klawiaturowego), ekran nie jest zablokowany. Jak mogę (1) zawiesić system (2), aby ekran był jednocześnie zablokowany (3) nie wymagają do tego uprawnień roota [ponieważ chciałbym, aby polecenie było przypisane do skrótu klawiaturowego].

Marius Hofert
źródło

Odpowiedzi:

10

Możesz to zrobić, korzystając z następujących opcji:

gnome-screensaver-command --lock && dbus-send --system --print-reply --dest="org.freedesktop.UPower" /org/freedesktop/UPower org.freedesktop.UPower.Suspend

W skrócie klawiaturowym musisz sh -c "<command>"zastąpić <command>powyższym poleceniem, na przykład:

sh -c "gnome-screensaver-command --lock && dbus-send --system --print-reply --dest=org.freedesktop.UPower /org/freedesktop/UPower org.freedesktop.UPower.Suspend"

Jeśli powyższe polecenie nie działa, możesz także spróbować użyć pliku skryptu powłoki (na przykład suspend_lockscreen.sh). Najpierw utwórz plik wywołaj następujące polecenia w konsoli:

cd ~
echo "gnome-screensaver-command --lock" >> suspend_lockscreen.sh
echo "dbus-send --system --print-reply --dest=org.freedesktop.UPower /org/freedesktop/UPower org.freedesktop.UPower.Suspend" >> suspend_lockscreen.sh
chmod +x suspend_lockscreen.sh

Spowoduje to utworzenie pliku o nazwie suspend_lockscreen.sh w folderze domowym użytkownika. Następnie, w skrócie po prostu zadzwoń: ./suspend_lockscreen.sh.

Uwaga: gnome-screensaver-commandmożna zastąpić xscreensaver-command, jak wskazano w jednym komentarzu.

amfcosta
źródło
Nie, blokuje tylko ekran i zapomina o zawieszeniu go zgodnie z komentarzem
zawartym
1
Ahh dobrze. Właśnie zdałem sobie sprawę, że gnome-screensaver-commandmożna go również zastąpić, xscreensaver-commandwięc nie jest wymagana dodatkowa instalacja. Bez && dbus-send...części po prostu dostaje się zamek (bez zawieszenia); dzięki niemu uzyskuje się zawieszenie z blokadą po przebudzeniu. Doskonały.
Marius Hofert
Niestety polecenie działa z terminala, ale nie ze zdefiniowanego
przeze
@MariusHofert Zaktualizowałem odpowiedź o tym, jak używać poleceń z skrótu klawiaturowego. Sprawdź, czy działa tak, jak potrzebujesz. (Testowałem w Ubuntu 12.04 i działało).
amfcosta
Wciąż ten sam problem: blokowanie działa; zawieszenie nie (Xubuntu 12.04)
Marius Hofert
2

Użyłem polecenia dbus amfcosty do zawieszenia z linii poleceń. Jednak po wznowieniu eth0 nie działa.

Potem znalazłem to polecenie:

xfce4-session-logout --suspend

To polecenie wyłącza sieć, zawiesza, a następnie ponownie włącza sieć po przebudzeniu komputera.

xfce4-session-logoutjest specyficzny dla xfce, ale inne środowiska pulpitu mogą mieć podobne *-session-logoutpolecenia.

Używam Xubuntu 14.04.

Aktualizacja: może to nie dotyczyć innych, ale okazuje się, że w moim Asus EEE 900 przewodowe połączenie Ethernet działa tylko za każdym razem, gdy EEE budzi się. Jest to oczywiście bardzo denerwujące i oznacza, że ​​zawieszenie jest bezużyteczne.

mpb
źródło
1

W przypadku Ubuntu 15.10 działa to również:

gnome-screensaver-command --lock && systemctl -i suspend
iGEL
źródło
0

Uwaga: xscreensaver-commanddziała tylko z opcją -lock(z 1 łącznikiem, a nie podwójnym jak z gnome-screensaver-command). Jednak polecenie działa tylko podczas działania wygaszacza ekranu, więc nie jest bardzo przydatne.

LinuxRev
źródło