GDM 없이 Gnome 3에서 화면을 잠그는 방법은 무엇입니까?

GDM 없이 Gnome 3에서 화면을 잠그는 방법은 무엇입니까?

사용자 메뉴에는 "잠금" 옵션이 나타나지 않으며 표준 단축키( Ctrl+ L또는 Ctrl++ )는 아무 작업도 수행하지 않습니다.AltL

저는 Gnome Shell 3.8.3 및 XDM 1.1.11과 함께 Fedora 19를 실행하고 있습니다.

GDM의 XDMCP 지원이 중단되었기 때문에 XDM을 사용하고 있습니다. 하지만 Fedora 19로 업그레이드하기 전에는 XDM을 사용하는 경우에도 잠글 수 있는 옵션이 있었습니다.

내 연구 결과를 반영한 ​​답변을 게시했습니다. 기본적으로 GDM을 실행하지 않고 Gnome 3.8에 화면 잠금을 통합하는 것은 불가능하다고 말합니다.

저는 더 나은 답변을 원합니다. 따라서 제가 간과한 방법이 있다면 자신만의 답변을 추가해 주세요.

답변1

몇 가지 조사를 한 후에 나는 내 질문에 답할 수 있을 만큼 충분한 정보를 가지고 있다고 생각합니다.

gnome-screensaverGnome Shell 3.6 및 이전 버전에는 GDM이 실행되지 않을 때 호출되어 gnome-screensaver화면을 잠글 수 있는 이전 프로그램이 있었습니다 .

Gnome Shell 3.8(Fedora 19에 포함)부터 gnome-screensaver지원이 완전히 중단되었습니다. 여기에는 세 가지 이유가 있습니다. 코드 복잡성을 줄이기 위해 화면 보호기는 불필요한 기능으로 간주되며 최종적으로 Wayland로 이동하려면 컴포지터에서 화면 보호기, 잠금 등 지원이 필요합니다.

따라서 화면을 잠그는 유일한 Gnome 통합 방법은 GDM을 실행하는 것입니다. 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

답변2

Super+ LGnome 3.20을 실행하는 Fedora 24의 경우

답변3

이것은 Gnome 3.14에서 저에게 효과적이었습니다. 표준 설치, 사용자 정의가 필요하지 않습니다.

gnome-screensaver-command --lock

답변4

내가 debian, ubuntu 및 rhel7에서 성공적으로 사용한 해결 방법은 gnome 세션에 로그인할 때 자동으로 시작되는 짧은 Python 스크립트를 만드는 것입니다. 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

관련 정보