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サポートは完全に中止されました。これには3つの理由があります。コードの複雑さを減らすために、スクリーンセーバーは不要な機能と見なされ、最終的に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

関連情報