Linux

通過 dbus 從終端註銷的通用方法

  • June 25, 2016

我是新來的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"
     }
  ]

引用自:https://unix.stackexchange.com/questions/291922