Как я могу заблокировать мой экран в Gnome 3 без GDM?

50

В меню пользователя не отображается опция «Блокировка», а стандартные ярлыки ( Ctrl+ Lили Ctrl+ Alt+ L) ничего не делают.

Я использую Fedora 19 с Gnome Shell 3.8.3 и XDM 1.1.11.

Я использую XDM из-за неработающей поддержки XDMCP в GDM - но до обновления до Fedora 19 у меня была опция блокировки, даже при использовании XDM.

Я разместил ответ, отражающий результаты моего собственного исследования. В основном это говорит о том, что невозможно включить блокировку экрана в Gnome 3.8 без запуска GDM.

Я действительно надеюсь, что есть лучший ответ - поэтому, пожалуйста, добавьте свой собственный ответ, если есть какой-то способ сделать это, который я упустил.

jcsanyi
источник
1
Попробуй Ctrl + Alt + L. Это работает?
m0nhawk
1
@ m0nhawk Нет, это тоже не работает. Я обновил вопрос, чтобы отразить это.
jcsanyi
Странно, у меня это работает. А для чего установлен в Настройки - Клавиатура - Ярлыки - Система для Lock screen?
m0nhawk
@ m0nhawk в Gnome 3.8 без GDM?
2013 года
2
@ m0nhawk Ярлык установлен на Ctrl + L- но это ничего не делает.
jcsanyi

Ответы:

38

После некоторых исследований я думаю, что у меня достаточно информации, чтобы опубликовать ответ на свой вопрос.

В Gnome Shell 3.6 и более ранних версиях gnome-screensaverприсутствовала старая программа, и, если GDM не был запущен, gnome-screensaverона будет вызвана, что позволит вам заблокировать экран.

Начиная с Gnome Shell 3.8 (входит в Fedora 19), gnome-screensaverподдержка полностью прекращена. Это было сделано по трем причинам: уменьшенная сложность кода в сочетании с тем фактом, что хранитель экрана рассматривается как ненужная функция, и тот факт, что возможное перемещение в Wayland потребует поддержки хранителя экрана, блокировки и т. Д. В компоновщике.

Таким образом, единственный встроенный в Gnome способ блокировки экрана - это запуск GDM, который будет отвечать на сообщение dbus, сообщающее ему о блокировке экрана. Другие дисплеи дисплеев (например, XDM) не предназначены для ответа на это сообщение dbus, поэтому экран не может быть заблокирован.


По этой ссылке :

В старых версиях gnome команда gnome-screensaver-command -l блокировала ваш экран. Поскольку gnome-screensaver больше не присутствует в gnome 3.8, теперь вам нужно отправить вызов dbus. Я думаю, что это тогда обрабатывается GDM.

$ dbus-send --type=method_call --dest=org.gnome.ScreenSaver \
    /org/gnome/ScreenSaver org.gnome.ScreenSaver.Lock
jcsanyi
источник
2
Спасибо @slim, но команды, которые вы редактировали, на самом деле ничего не делают, если вы не используете GDM - они не помогают ответить на вопрос.
Jcsanyi
2
Конечно, я все еще хотел бы видеть содержание ссылки, если этот сайт исчезнет.
SLM
@ хороший момент. Я отредактировал содержание обратно как цитату.
jcsanyi
17

Super+ Lработает в Fedora 24 под управлением Gnome 3.20

sysadmiral
источник
4
это работает и в Ubuntu Gnome, спасибо :)
daveoncode
Также хорошо на Centos7 / 3.28, полезно знать.
tonioc
15

Это работает для меня в Gnome 3.14. Стандартная установка, без настройки.

gnome-screensaver-command --lock
0__
источник
Он должен быть установлен в Gnome 3.26.2, так что если вы не имеете его, sudo apt-get install gnome-screensaver.
Правая нога
У меня не работало, gdmне работает, потому что недавнее обновление сломало его (пришлось переключиться на sddm ...)
Per Lundberg
10

Как включить блокировку экрана в Gnome Shell (3.14) с помощью xscreensaver (в Debian):

(Примечание: хотя gnome-screensaverпакет в настоящее время существует в Debian sid, он не может быть использован)

  1. Установите xscreensaverпакет (и дополнительно xscreensaver-data и xscreensaver-data-extra)
  2. Запустите, xscreensaverчтобы настроить заставку, как вы хотите. Обязательно выберите «Блокировка экрана через 0 минут».
  3. В настройках клавиатуры GNOME выберите вкладку «Ярлыки», затем «Пользовательские ярлыки»
  4. Нажмите кнопку +, затем введите любое имя в качестве имени и xscreensaver-command -lкоманды. Нажмите ОК.
  5. Нажмите «Отключено» и введите комбинацию клавиш, которую вы хотите заблокировать на экране (у меня Ctrl-Alt-L). Убедитесь, что это не противоречит ярлыку блокировки экрана GDM в разделе «Система».
  6. Наслаждайтесь вашим заблокированным экраном.

Предостережение: всплывающие уведомления будут по-прежнему видны на заблокированном экране. Если это проблема для вас, вам нужно будет найти другое решение, например расширение экрана блокировки LightDM .

Джоэл Кросс
источник
1
Спасибо за предоставление этой опции. Это единственный, кто закончил работать на меня в Gnome 3.14.1 на Debian Jessie
sanimalp
С тех пор как я написал этот ответ, я обнаружил другую опцию, которая включает в себя использование mate-screensaver(по сути, то же самое, что и у старой заставки GNOME). Это требует написания поддельного менеджера сеансов, как описано здесь ).
Джоэл Кросс
4

Работа, которую я успешно использовал в debian, ubuntu и rhel7, заключается в создании короткого скрипта на python, который запускается автоматически при входе в сеанс gnome. Обратите внимание, что в rhel7 комбинация клавиш для блокировки супер + l .

Создайте /etc/xdg/autostart/gscreenlock.py следующим образом:

#!/usr/bin/python

import dbus
import dbus.service
import dbus.glib
import gobject
import os

class ScreenDbusObj(dbus.service.Object):
    def __init__(self):
        session_bus = dbus.SessionBus()
        bus_name=dbus.service.BusName("org.gnome.ScreenSaver",bus=session_bus)
        dbus.service.Object.__init__(self,bus_name, '/org/gnome/ScreenSaver')

    @dbus.service.method("org.gnome.ScreenSaver")
    def Lock(self):
        os.system( "xscreensaver-command -lock" )


if __name__ == '__main__':
    object=ScreenDbusObj()
    gobject.MainLoop().run()

Затем сделайте его исполняемым:

chmod a+rx /etc/xdg/autostart/gscreenlock.py

И отредактируйте /etc/xdg/autostart/gscreenlock.desktop следующим образом:

[Desktop Entry]
Type=Application
Encoding=UTF-8
Name=gscreenlock
TryExec=/etc/xdg/autostart/gscreenlock.py
Exec=/etc/xdg/autostart/gscreenlock.py
NoDisplay=true
NotShowIn=XFCE;KDE;
Comment=Allows screen locking in gnome
aseq
источник
2

Блокировка экрана выполнялась gnome-screensaverвплоть до GNOME 3.8. Приложение было объявлено устаревшим командой GNOME, и его функциональность была разделена между gnome-shell, gnome-session и GDM.

Если вы просто хотите, чтобы все заработало, возможно, вам повезет больше xscreensaver.

SLM
источник
2

@jcsanyi объяснил, как это работает.

Для тех людей, которые не могут использовать GDM3 по разным причинам (скажем, эту ошибку ) и переключиться на LigthDM, есть команда, которую мы можем использовать для блокировки экрана (возможно, она может работать и с другими DM, у меня нет проверил хоть)

замок дм-инструмента

Чтобы сделать это более удобным, перейдите на settings -> Keyboard -> Scroll to the bottom -> Click "+" button -> Create new custom shortcut using the command aboveлайк.

введите описание изображения здесь

Чтобы использовать Super+Lкомбинацию, вам, вероятно, придется переназначить существующий Lock screenярлык системы на другую комбинацию.

Джонни Доу
источник
Это сработало для меня на Fedora 30 Gnome 3.32.2. Но мне непонятно, почему в моей Fedora вместо диспетчера GDM по умолчанию используется lightdm, и какой программе Super+Lотправляется ярлык экрана блокировки по умолчанию, поскольку он присутствует в настройках, но все равно не работает.
Иван Хуан
2

Этот ответ основан на Fedora 30 GNOME 3.32.2

Для рабочих столов Linux обычно по умолчанию используется сочетание клавиш для блокировки экрана Super-Lили Ctrl-Alt-L. Но иногда они могут не работать, и вы не можете найти способ заблокировать экран. Это связано с тем, какой диспетчер дисплеев в данный момент работает на машине. Вы можете проверить это, запустив $ systemctl status display-manager. Если вы видите, gdmярлык по умолчанию должен работать, потому что этот ярлык обрабатывается GDM - Диспетчер отображения GNOME. Существуют и другие типы управляющих отображения , таких как lightdm, sddm, lxdm, kdmи xdm. Ярлык по умолчанию может не работать, если вы используете один из них. Тем не менее, вы всегда можете попытаться заблокировать, выполнив, $ dm-tool lockи если это работает, вы можете добавить собственный ярлык для этой команды. Вы можете переключиться на другой менеджер дисплея, например, от lightdmдоgdmи если да, то сделайте ниже:

$ dnf install gdm
$ systemctl disable lightdm
$ systemctl enable gdm
$ reboot
Иван Хуан
источник
0

По умолчанию ярлык есть Shift+Ctrl+Alt+Lock.

Вы можете найти это и отредактировать, используя вкладку «Ярлык» в приложении «Клавиатура».

Рупак Неллиат
источник
Смотрите комментарии. «Ярлык установлен на Ctrl + L - но это ничего не делает».
sourcejedi
Если вы ответили, что это снова заработало в Fedora версии X даже при использовании XDM вместо GDM, вам нужно указать, что это за версия Fedora :). Привет и добро пожаловать в StackExchange.
sourcejedi
0

Я нашел обходной путь, который мне подходит на Debian Buster с GNOME Shell версии 3.30 и с Lightdm. Я понятия не имею, ломает ли это что-нибудь, но я не заметил ничего необычного.

  1. Установить пакет cinnamon-screensaver
  2. Добавить /usr/bin/cinnamon-screensaverв автозагрузку приложений
  3. Создайте сочетание клавиш для команды: cinnamon-screensaver-command -l
yigitdnz
источник