Вопрос или проблема
Когда я использую Ubuntu 12.04, после нажатия кнопки “Заблокировать” в панели состояния на desktop, на экране появляется заблокированное окно.
Я использую другой компьютер, чтобы подключиться по SSH к этому заблокированному компьютеру. И использую команду
export DISPLAY=:0
gnome-screensaver-command -d
чтобы разблокировать экран. Это работает хорошо.
Но теперь я обновил Ubuntu с 12.04 до 14.04. Когда я нажимаю кнопку “Заблокировать” из панели состояния, на экране появляется новый экран блокировки, который выглядит как unity-greeter.
Затем я использую ту же команду, что и раньше:
export DISPLAY=:0
gnome-screensaver-command -d
Ничего не происходит~ Я не могу разблокировать экран с помощью команды.
Это выглядит как ошибка в Ubuntu. https://bugs.launchpad.net/ubuntu/+source/gnome-screensaver/+bug/1307163
Но есть ли какое-либо решение для этой проблемы?
[обновление]
Я нашел, что если мы используем команду блокировки экрана из SSH
export DISPLAY=:0
gnome-screensaver-command -l
это отобразит классический экран блокировки gnome, как в Ubuntu 12.04.
И команда gnome-screensaver-command -d может разблокировать экран.
Есть ли способ переключиться на классический экран блокировки gnome при нажатии кнопки блокировки в панели состояния?
PS, я пробовал CompizConfig Settings Manager, но там нет опции для изменения экрана блокировки~~
Одно из решений – использовать альтернативный экран блокировки, например классический Linux xscreensaver.
это можно деактивировать с помощью командной строки с
xscreensaver-command -deactivate
Чтобы заблокировать экран через терминал (для Ubuntu 14.04 и 16.04) я использую:
dbus-send --type=method_call --dest=org.gnome.ScreenSaver /org/gnome/ScreenSaver org.gnome.ScreenSaver.Lock
Поэтому, чтобы разблокировать, подойдет следующая команда:
dbus-send --type=method_call --dest=org.gnome.ScreenSaver /org/gnome/ScreenSaver org.gnome.ScreenSaver.Unlock
К сожалению, у меня не установлен SSH, чтобы это протестировать. Я могу протестировать это из терминала, когда экран уже разблокирован, и оно не выдает сообщения об ошибке.
Я нашел другой пост, где это должно работать:
dbus-send --session --dest=org.gnome.ScreenSaver --type=method_call --print-reply --reply-timeout=20000 /org/gnome/ScreenSaver org.gnome.ScreenSaver.SetActive boolean:false
Здесь заявляется, что не требуется вводить пароль для разблокировки экрана. Полная тема здесь: (Разблокировать gnome-screensaver вместо деактивации)
Не уверен, как переключиться на классический экран блокировки gnome, однако ошибка gnome-screensaver-command обход определенно работает:
Сначала включите экранную клавиатуру:
gsettings set org.gnome.desktop.a11y.applications screen-keyboard-enabled true
Экранная клавиатура появляется, когда вы впервые входите в систему, но вы можете её закрыть.
Заблокируйте экран (это должно происходить после активации экранной клавиатуры)
Теперь gnome-screensaver-command -d
работает для разблокировки экрана.
Должно работать с 14.04 из SSH:
export DISPLAY=:0
gnome-screensaver-command -d
Для 16.04 нужно также установить сессию dbus:
export DISPLAY=:0
export $(cat /proc/`pidof compiz`/environ | tr '\0' '\n' | grep DBUS_SESSION_BUS_ADDRESS )
gnome-screensaver-command -d
Или лучше просто используйте loginctl, который не требует никаких обходных путей:
loginctl unlock-sessions
Ответ или решение
Как разблокировать экран в Ubuntu 14.04 LTS с помощью командной строки
В процессе работы с операционной системой Ubuntu 14.04 LTS у пользователей может возникнуть необходимость разблокировать экран компьютера, когда он был заблокирован. Этот процесс отличается от предыдущих версий, таких как Ubuntu 12.04, из-за изменений в способах управления экранами. В данной статье мы рассмотрим различные методы, которые позволят вам разблокировать экран с помощью командной строки.
1. Использование dbus-send
Одним из наиболее эффективных способов разблокировки экрана в Ubuntu 14.04 LTS является использование команды dbus-send
. Эта команда позволяет напрямую взаимодействовать с демоном D-Bus, что делает процесс управления сессиями более гибким:
export DISPLAY=:0
dbus-send --type=method_call --dest=org.gnome.ScreenSaver /org/gnome/ScreenSaver org.gnome.ScreenSaver.Unlock
Эта команда отправляет сигнал на разблокировку экрана, но требуется, чтобы сессия D-Bus была активна.
2. Использование gnome-screensaver-command
Если вы хотите использовать команду gnome-screensaver-command
, сначала убедитесь, что система использует классический экранный блокировщик, так как в Ubuntu 14.04 он заменён на unity-greeter
, который может быть менее удобен. Выполните следующие команды:
Заблокировать экран
export DISPLAY=:0
gnome-screensaver-command -l
Разблокировать экран
export DISPLAY=:0
gnome-screensaver-command -d
Имейте в виду, что при первой блокировке экрана после этого процесса, вам может понадобиться включить экранную клавиатуру, чтобы разблокировка работала:
gsettings set org.gnome.desktop.a11y.applications screen-keyboard-enabled true
3. Установка альтернативного экранного блокировщика
Если вы не удовлетворены состоянием gnome-screensaver
, вы можете рассмотреть установку альтернативного экранного блокировщика, такого как xscreensaver
. Он может быть установлен и настроен следующим образом:
sudo apt-get install xscreensaver
После установки вы сможете разблокировать экран с помощью:
xscreensaver-command -deactivate
4. Применение loginctl
Для более новых версий Ubuntu рекомендуется использовать loginctl
, что обходится без дополнительных настроек и позволяет разблокировать сессии следующим образом:
loginctl unlock-sessions
Заключение
Разблокировка экрана в Ubuntu 14.04 LTS может потребовать дополнительных шагов по сравнению с предыдущими версиями, однако, используя описанные методы, вы сможете эффективно решать эту задачу. Если вы столкнулись с проблемами, рекомендуем обратиться к официальной документации или сообществу Ubuntu для получения дополнительной помощи и информации.