Jak mogę zablokować ekran za pomocą nowego ekranu blokady z wiersza poleceń?

19

Ubuntu 14.04 wprowadza nowy ekran blokady, który wygląda podobnie do ekranu logowania.

Nowy ekran blokady

Nadal jestem w stanie zablokować ekran za pomocą polecenia gnome-screensaver-command --lock(jak zawsze wcześniej), który pod 14.04 blokuje ekran, ale:

  • Jeśli uruchamiasz go z pulpitu, blokuje ekran przy użyciu nowego ekranu blokady.
  • Jeśli uruchamiasz go z wirtualnej konsoli lub przez SSH, blokuje ekran przy użyciu starego ekranu blokady .

Próbowałem również użyć xdg-screensaver lock, ale działa w taki sam sposób, jak gnome-screensaver-command --lockrobi (używa nowego ekranu blokady, gdy jest uruchamiany z pulpitu).

Uruchomienie light-locker-command --locknie działało, ponieważ light-lockernie jest zainstalowane.

Wydaje mi się, że muszą istnieć pewne różnice między uruchomieniem tego samego polecenia z pulpitu a uruchomieniem go za pośrednictwem SSH / wirtualnej konsoli, ale nie byłem w stanie znaleźć żadnej różnicy w zmiennych środowiskowych.

Moje pytanie brzmi: w jaki sposób mogę zablokować ekran przy użyciu nowego ekranu blokady Unity, a nie starego ekranu blokady z wiersza poleceń?

To pytanie jest prawdopodobnie powiązane, ponieważ prosi o nowe polecenie, które należy użyć, więc oto kolejne pytanie: Dlaczego uruchomienie tego samego polecenia blokady daje inne wyniki?

Pamiętaj, że gnome-screensaverzgodnie z tym raportem o błędzie nie jest już używany w 14.04 :

To naprawdę nie jest błąd wygaszacza ekranu, ten komponent przestał być używany w zaufanym.

Léo Lam
źródło
2
Chciałbym również wiedzieć. Korzystanie dm-tool lockjest bliskie: blokuje ekran, ale (w przeciwieństwie do domyślnego ekranu blokady Unity) umożliwia także przełączanie użytkowników.
Aibara
2
dm-tool locki dm-tool switch-to-greeterwydaje się, że robi to samo: przenosi Cię z powrotem do ekranu logowania (powitania), który wygląda bardzo podobnie do ekranu blokady.
Léo Lam

Odpowiedzi:

14

Nie gnome-screensaverzainstalowałem, a jedyne polecenie, które mogę znaleźć, które działa, to:

dbus-send --type=method_call --dest=org.gnome.ScreenSaver /org/gnome/ScreenSaver org.gnome.ScreenSaver.Lock

Aibara
źródło
5
qdbus org.gnome.ScreenSaver /org/gnome/ScreenSaver org.gnome.ScreenSaver.Lock
Aquarius Power
Kiedyś to działało, ale wydaje się, że już nie działa w 15.10: /
Léo Lam
@ LéoLam Czy używasz obrazu na żywo? Nadal używam 14.04, ale przetestowałem zarówno moją komendę, jak i Wodnika Moc w 15.10 i sprawiłem, że zadziałały. Musiałem jednak włączyć ekran blokady, aby działał za pomocą tego poleceniagsettings set org.gnome.desktop.lockdown disable-lock-screen false
Aibara,
Nie, to jest prawdziwa instalacja Ubuntu. gsettings get org.gnome.desktop.lockdown disable-lock-screenzwraca false. Teraz nie ma żadnych danych wyjściowych podczas uruchamiania dbus-send. Może potrzebny jest wygaszacz ekranu gnome?
Léo Lam
1
Proszę zobaczyć moje odpowiedzi, być może 15.10 zrezygnowało z org.gnome.ScreenSaverinterfejsu dbus, więc prawdopodobnie lepiej jest komunikować się z interfejsem
dity
3

Przyjęta odpowiedź ma słuszny pomysł, z tym wyjątkiem, że ekran blokady jest powiązany z panelem jedności, podczas gdy org.gnome.ScreenSaveroczywiście jest schematem typu Gnome, więc może, ale nie musi działać.

Istnieje jednak interfejs dbus dla Jedności, i wszystko, co potrzebne jest, aby wywołać tę metodę com.canonical.Unity.Session.Lock, jak tak

qdbus com.canonical.Unity  /com/canonical/Unity/Session com.canonical.Unity.Session.Lock

Uwaga dodatkowa :

Dowód na to, że jest on związany z panelem jedności, jest prosty, gdy ekran jest zablokowany, proces /usr/lib/unity/unity-panel-servicezmieni się /usr/lib/unity/unity-panel-service --lock-modena obserwowany od tty1.

Sergiy Kolodyazhnyy
źródło
działa to w sesji graficznej, ale kończy się niepowodzeniem w sesji SSH, nawet jeśli ręcznie ustawiasz $ DISPLAY. „Usługa„ com.canonical.Unity ”nie istnieje.”.
Léo Lam,
Nie ma to nic wspólnego ze DISPLAYzmienną, ale z dbus. Nie wiem, czy over ssh Unity nie ma sesji dbus, czy nie, więc nie mogę ci pomóc w tej części. Zapytam, ale na razie tyle mogę powiedzieć.
Sergiy Kolodyazhnyy
Spróbuj uruchomić dbus-launch --exit-with-session gnome-terminalwcześniej. serverfault.com/a/411326
Sergiy Kolodyazhnyy
Może także połączyć się z sesją screen / tmux działającą w X i uruchomić stamtąd polecenie. To było moje ostatnie obejście, aby połączyć się z właściwą sesją dbus z vterm.
Iiridayn
2

Niedawno dowiedziałem się, że xdg-screensaver lock działa również i jest dość prostym rozwiązaniem!

Paulius Šukys
źródło
W PO wspomniano, że nie działa we wszystkich przypadkach. Tylko wtedy, gdy uruchamiasz go lokalnie w terminalu z GUI.
Léo Lam
Pracowałem dla mnie zdalnie podczas sesji SSH na maszynie 18.04 LTS.
Benjamin R
1

Zawsze można wysłać naciśnięcia klawiszy: xdotool key super+l.

wieczorek1990
źródło