私は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
すべてのデスクトップ環境で機能するコマンド(システム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を取得するには
loginctl
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"
}
]