Як я можу заблокувати екран у 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.

Я опублікував відповідь, що відображає результати мого власного дослідження. По суті, це говорить про те, що без GDome 3.8 інтеграція блокування екрана неможлива без запуску GDM.

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


1
Спробуйте Ctrl + Alt + L. Це працює?
m0nhawk

1
@ m0nhawk Ні, це також не працює. Я оновив питання, щоб це відобразити.
jcsanyi

Як не дивно, це працює для мене. І що встановлено в налаштуваннях - клавіатура - ярлики - система для Lock screen?
m0nhawk

@ m0nhawk на Gnome 3.8 без GDM?
jcsanyi

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 більше не є в gnome 3.8, вам доведеться надіслати дзвінок dbus. Я думаю, що цим займається GDM.

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

2
Дякуємо @slim, але команди, які ви редагували, насправді нічого не роблять, якщо ви не працюєте з GDM - вони не допомагають відповісти на питання.
jcsanyi

2
Зрозуміло, я все-таки хотів би побачити вміст посилання, що заноситься, на випадок, якщо цей веб-сайт перейшов.
slm

@slim хороший пункт. Я відредагував вміст ще як цитата.
jcsanyi


15

Це працює для мене в Gnome 3.14. Стандартна установка, без налаштування.

gnome-screensaver-command --lock

Він повинен бути встановлений в Gnome 3.26.2, так що якщо ви не маєте його, sudo apt-get install gnome-screensaver.
Права нога

Не працював для мене, gdmне працює, тому що нещодавнє оновлення зламало його (довелося перейти на sddm ...)
Пер Лундберг

10

Як увімкнути блокування екрана в Gnome Shell (3.14) за допомогою xscreensaver (на Debian):

(Примітка. Хоча gnome-screensaverпакет зараз існує на sid Debian, він, здається, не є корисним)

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

Caveat: спливаючі вікна сповіщення все ще будуть видні на заблокованому екрані. Якщо це проблема для вас, вам потрібно буде знайти інше рішення, як розширення LightDM Lock Screen .


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

2

Блокування екрана здійснювалося gnome-screensaverдо GNOME 3.8. Команда GNOME заборонила програму, і її функціональність поділилася між gnome-shell, gnome-session та GDM.

Якщо ви просто хочете, щоб все працювало, можливо, вам буде більше удачі xscreensaver.


2

@jcsanyi дав основне пояснення, як це працює.

Для тих людей, які не в змозі використовувати GDM3 через різні причини (скажімо, ця помилка ) і перейшли на LigthDM, є команда, яку ми можемо використати для блокування екрана (можливо, він може працювати і з іншими DM, я також не перевірено, хоча):

замк-інструмент 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 є lightdm як диспетчер дисплея за замовчуванням замість GDM, і до якої програми Super+Lнадсилається ярлик блокування екрана за замовчуванням, оскільки він присутній у налаштуваннях, але не працює.
Іван Хуан

2

Ця відповідь ґрунтується на Fedora 30 GNOME 3.32.2

Для робочих столів Linux зазвичай клавіша швидкого доступу для екрана блокування є Super-Lабо Ctrl-Alt-L. Але іноді вони можуть не працювати, і ви не можете знайти спосіб заблокувати екран. Це стосується того, з яким диспетчером дисплеїв зараз працює машина. Ви можете перевірити це, запустивши $ systemctl status display-manager. Якщо ви бачите, gdmтоді ярлик за замовчуванням повинен працювати, оскільки цим ярликом обробляється GDM - GNOME Display Manager. Існують і інші типи керуючих відображення , таких як 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
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.