Linux
通過 dbus 從終端註銷的通用方法
我是新來的
dbus
,並且看到了根據桌面環境從終端註銷的不同方法。dbus
但我很好奇有沒有辦法使用消息從任何桌面環境中註銷?在 GNOME 上:
dbus-send --session --type=method_call --print-reply --dest=org.gnome.SessionManager /org/gnome/SessionManager org.gnome.SessionManager.Logout uint32:1
在 KDE 上:
dbus-send --print-reply --dest=org.kde.ksmserver /KSMServer org.kde.KSMServerInterface.logout int32:0 int32:0 int32:0
是否有任何命令適用於每個桌面環境(例如使用 system
dbus
)?
在
systemd
設置中,您應該能夠通過介面強制終止會話:logind
dbus
dbus-send --system --print-reply --dest=org.freedesktop.login1 \ /org/freedesktop/login1 'org.freedesktop.login1.Manager.TerminateSession' \ string:c2
c2
會話 ID 字元串在哪裡;獲取您可以執行的會話 ID登錄
SESSION UID USER SEAT c1 120 gdm seat0 c2 1000 don seat0 2 sessions listed
或者,如果您也喜歡通過
dbus
界面進行操作:dbus-send --system --print-reply --dest=org.freedesktop.login1 \ /org/freedesktop/login1 'org.freedesktop.login1.Manager.ListSessions'
它返回類似的東西
array [ struct { string "c1" uint32 120 string "gdm" string "seat0" object path "/org/freedesktop/login1/session/c1" } struct { string "c2" uint32 1000 string "don" string "seat0" object path "/org/freedesktop/login1/session/c2" } ]