Як я можу заблокувати екран за допомогою нового блокувального екрану з командного рядка?


19

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

Новий блокувальний екран

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

  • Якщо ви працюєте з робочого столу, він блокує екран за допомогою нового блокування екрана.
  • Якщо ви запускаєте його з віртуальної консолі або через SSH, він блокує екран за допомогою старого блокування екрана .

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

Запуск light-locker-command --lockне працював, як light-lockerі не встановлено.

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

Отже, моє запитання: як я можу заблокувати екран за допомогою нового блоку екрана Unity, а не старого блокування екрану з командного рядка?

Це питання , ймовірно, пов'язане, оскільки він вимагає нової команди, яку потрібно використовувати, тому ось інше питання: Чому виконання однієї і тієї ж команди блокування дає різні результати?

Зауважте, що gnome-screensaverвідповідно до цього звіту про помилку він більше не використовується: 14.04 :

Це насправді не помилка скрінсейвера, цей компонент перестав використовуватись у надійному.


2
Я також хотів би це знати. Використання dm-tool lockнаближається: він блокує екран, але (на відміну від екрана блокування Unity за замовчуванням) також дозволяє перемикати користувачів.
Ейбара

2
dm-tool lockі, dm-tool switch-to-greeterздається, робите те саме: поверніть вас до екрана входу (привітання), який виглядає дуже подібним до блокування екрана.
Лео Лам

Відповіді:


14

У мене не gnome-screensaverвстановлено, і єдина команда, яку я можу знайти, що працює, це така:

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


5
qdbus org.gnome.ScreenSaver /org/gnome/ScreenSaver org.gnome.ScreenSaver.Lock
Сила Водолія

Це працювало раніше, але, здається, вже не працює у 15.10: /
Лео Лам

@ LéoLam Чи використовуєте ви живе зображення? Я все ще використовую 14.04, але я протестував і мою команду, і Водолій Силу в 15.10, і змусив їх працювати. Однак мені довелося включити заблокований екран, щоб змусити його працювати через цю командуgsettings set org.gnome.desktop.lockdown disable-lock-screen false
Ейбара

Ні, це на справжній установці Ubuntu. gsettings get org.gnome.desktop.lockdown disable-lock-screenповертає false. Тепер під час запуску dbus-send немає жодного результату. Можливо, для цього потрібна заставка gnome-screensaver?
Лео Лам

1
Ознайомтесь з моїми відповідями, можливо, 15.10 відмовився від використання org.gnome.ScreenSaverінтерфейсу dbus, тому, мабуть, краще ідея спілкуватися з dbus-інтерфейсом Unity
Сергій Колодяжний

3

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

Однак існує Unbus-інтерфейс для 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


це працює в графічному сеансі, але виходить з ладу в сесії SSH, навіть якщо встановити $ DISPLAY вручну. "Сервіс" com.canonical.Unity "не існує."
Лео Лам

Це не має нічого спільного зі DISPLAYзмінною, але з dbus. Мені невідомо, чи немає в ssh Unity сеансу dbus чи ні, тому я не можу допомогти вам у цій частині. Я поцікавлюсь, але поки що це стільки, скільки я можу сказати.
Сергій Колодяжний

Спробуйте запустити dbus-launch --exit-with-session gnome-terminalдо цього. serverfault.com/a/411326
Сергій Колодяжний

Можна також підключитися до екрану / tmux сесії, що працює всередині X, і запустити команду звідти. Я був остаточним вирішенням підключення до правильного сеансу dbus від vterm.
Ірідаїн

2

Нещодавно я з’ясував, що xdg-screensaver lock працює добре, і це досить просте рішення!


В ОП зазначається, що це працює не у всіх випадках. Тільки коли ви працюєте локально в терміналі від GUI.
Лео Лам

Працював для мене віддалено в сеансі SSH на машині 18.04 LTS.
Бенджамін Р

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.