Как приостановить из командной строки, чтобы экран был заблокирован?

10

Я использую Xubuntu 12.04. В Power Manager я установил расширенный -> экран блокировки при переходе в режим ожидания / спящий режим. Если я выбираю приостановку из главного меню / панели 1, экран блокируется. Однако, если я использую dbus-send --system --print-reply --dest="org.freedesktop.UPower" /org/freedesktop/UPower org.freedesktop.UPower.Suspend(см. Как я могу приостановить / спящий режим из командной строки? Я использую эту команду с помощью сочетания клавиш), экран не заблокирован. Как я могу (1) приостановить работу системы (2) одновременно заблокировать экран (3) для этого не требуются права root [поскольку я хотел бы, чтобы команда была назначена сочетанию клавиш].

Мариус Хоферт
источник

Ответы:

10

Вы можете сделать это с помощью следующего:

gnome-screensaver-command --lock && dbus-send --system --print-reply --dest="org.freedesktop.UPower" /org/freedesktop/UPower org.freedesktop.UPower.Suspend

В комбинацию клавиш необходимо поместить sh -c "<command>"замену <command>с помощью команды выше, например:

sh -c "gnome-screensaver-command --lock && dbus-send --system --print-reply --dest=org.freedesktop.UPower /org/freedesktop/UPower org.freedesktop.UPower.Suspend"

Если приведенная выше команда не работает, вы также можете попробовать использовать файл сценария оболочки (например suspend_lockscreen.sh). Сначала создайте файл, вызвав следующие команды в консоли:

cd ~
echo "gnome-screensaver-command --lock" >> suspend_lockscreen.sh
echo "dbus-send --system --print-reply --dest=org.freedesktop.UPower /org/freedesktop/UPower org.freedesktop.UPower.Suspend" >> suspend_lockscreen.sh
chmod +x suspend_lockscreen.sh

Это создаст файл с именем suspend_lockscreen.sh в домашней папке пользователя. Затем, в ярлыке просто позвонить: ./suspend_lockscreen.sh.

Примечание: gnome-screensaver-commandможет быть заменено xscreensaver-command, как указано в одном комментарии.

amfcosta
источник
Нет, он только блокирует экран и забывает приостановить его в соответствии с комментарием, сделанным в ответе, который я сделал;)
Rinzwind
1
Ах, хорошо. Я только что понял, что gnome-screensaver-commandтоже можно заменить, xscreensaver-commandпоэтому никакой дополнительной установки не требуется. Без && dbus-send...части один просто получает блокировку (без приостановки); с этим, каждый получает приостановку с замком при пробуждении. Отлично.
Мариус Хоферт
К сожалению, команда работает из терминала, но не из сочетания клавиш, которое я определил :-( Вы знаете, в чем может быть проблема?
Мариус Хоферт
@MariusHofert Я обновил ответ о том, как использовать команды с клавиатуры. Посмотрите, работает ли он так, как вам нужно. (Я тестировал в Ubuntu 12.04, и он работал).
amfcosta
Все та же проблема: блокировка работает; приостановка не (Xubuntu 12.04)
Мариус Хоферт
2

Я использовал команду dbus amfcosta для приостановки из командной строки. Однако, после возобновления, eth0 был вниз.

Затем я нашел эту команду:

xfce4-session-logout --suspend

Эта команда отключает работу сети, приостанавливает и затем снова включает сеть, когда компьютер просыпается.

xfce4-session-logoutявляется специфичным для xfce, но другие окружения рабочего стола могут иметь аналогичные *-session-logoutкоманды.

Я бегу Xubuntu 14.04.

Обновление: это может не повлиять на других, но оказывается, что на моем Asus EEE 900, проводное соединение Ethernet работает только каждый раз, когда EEE просыпается. Это, конечно, очень раздражает, и означает, что приостановить невозможно.

MPB
источник
1

В Ubuntu 15.10 это также работает:

gnome-screensaver-command --lock && systemctl -i suspend
Игель
источник
0

Примечание: xscreensaver-commandработает только с опцией -lock(с 1 дефисом, а не с двойным, как с gnome-screensaver-command). Тем не менее, команда работает только тогда, когда заставка работает, поэтому не очень полезна.

LinuxRev
источник