Как заблокировать экран с помощью нового lockscreen из командной строки?

18

Ubuntu 14.04 представляет новый экран блокировки , который похож на экран входа в систему.

Я все еще могу заблокировать экран, используя команду gnome-screensaver-command --lock (как я всегда делал раньше), которая под 14.04 блокирует экран, но:

  • Если вы используете его на рабочем столе, он блокирует экран с помощью нового lockscreen.
  • Если вы используете его с виртуальной консоли или через SSH, он блокирует экран с помощью старого lockscreen .

Я также пытался использовать xdg-screensaver lock , но он работает так же, как gnome-screensaver-command --lock (только использует новый lockscreen, когда он запускается с рабочего стола).

Запуск light-locker-command --lock не работал, поскольку light-locker не установлено.

Я предполагаю, что существуют некоторые различия между запуском одной и той же команды с рабочего стола и ее запуском через SSH / виртуальную консоль, но я не смог найти никакой разницы в переменных среды.

Итак, мой вопрос: Как заблокировать экран с помощью нового экрана блокировки Unity, а не старого lockscreen из командной строки?

Этот вопрос , вероятно, связан с его запрашивает новую команду, которая должна быть использована, так что вот еще вопрос: Почему запуск одной и той же команды блокировки дает разные результаты?

Обратите внимание, что gnome-screensaver больше не используется в 14.04, в соответствии с этой ошибкой отчет :

  

На самом деле это не ошибка gnome-screensaver, этот компонент перестает использоваться в надежном режиме.

    
задан Léo Lam 28.04.2014 в 18:50
источник

4 ответа

13

У меня нет gnome-screensaver , и единственная команда, которую я могу найти, работает следующим образом:

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

    

ответ дан Aibara Iduas 08.07.2014 в 01:02
источник
3

Принятый ответ имеет правильную идею, за исключением того, что lockscreen связан с панелью единиц, в то время как org.gnome.ScreenSaver , очевидно, является схемой, связанной с Gnome, поэтому она может работать или не работать.

Существует, однако, интерфейс dbus для Unity, и все, что нам нужно, - это вызвать этот метод com.canonical.Unity.Session.Lock , например,

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

Боковое примечание :

Доказательство того, что он связан с панелью единиц, прост, когда вы заблокировали экран, процесс /usr/lib/unity/unity-panel-service изменится на /usr/lib/unity/unity-panel-service --lock-mode , как это видно из tty1.

    
ответ дан Sergiy Kolodyazhnyy 01.04.2016 в 08:24
0

Недавно я узнал, что %код% работает также и является довольно простым решением!

    
ответ дан Paulius Šukys 22.01.2016 в 18:18
0

Вы всегда можете отправить нажатия клавиш: xdotool key super+l .

    
ответ дан wieczorek1990 01.04.2016 в 08:13