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

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

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

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

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

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

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

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

новый lockscreen , вероятно, связан с запросом новой команды, которая должна использоваться, так что вот еще вопрос: Как заблокировать экран, используя новый блокирующий экран Unity, а не старый блокирующий экран из командной строки?

Обратите внимание, что [14] больше не используется в 14.04, в соответствии с этим сообщением об ошибке:

На самом деле это не гном -screensaver, этот компонент перестает использоваться в trus ти.

1
задан 28 April 2014 в 23:50

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.

3
ответ дан 24 May 2018 в 08:28
  • 1
    это работает в графическом сеансе, но сбой в сеансе SSH даже при установке $ DISPLAY вручную. «Сервис» com.canonical.Unity 'не существует. & quot ;. – Léo Lam 1 April 2016 в 20:12
  • 2
    Это не имеет ничего общего с переменной DISPLAY, но с dbus. Я не знаю, не существует ли у ssh Unity сеанса dbus или нет, поэтому я не могу помочь вам в этой части. Я спрошу, но пока это насколько я могу сказать. – Sergiy Kolodyazhnyy 1 April 2016 в 20:39
  • 3
    Попробуйте запустить dbus-launch --exit-with-session gnome-terminal до этого. serverfault.com/a/411326 – Sergiy Kolodyazhnyy 1 April 2016 в 20:41
  • 4
    Также можно подключиться к сеансу screen / tmux, работающему внутри X, и запустить команду оттуда. Был ли мой последний способ обхода для подключения к правой сессии dbus с vterm. – Iiridayn 26 January 2018 в 00:49

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

1
ответ дан 24 May 2018 в 08:28
  • 1
    В OP упоминается, что он не работает во всех случаях. Только когда вы запускаете его локально в терминале из графического интерфейса. – Léo Lam 23 January 2016 в 15:39

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

0
ответ дан 24 May 2018 в 08:28

Другие вопросы по тегам:

Похожие вопросы: