dbus 経由でターミナルからログアウトする一般的な方法

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)?

答え1

セットアップではsystemd、セッションを強制的に終了することができます。logind dbusインターフェース:

busctl call org.freedesktop.login1 /org/freedesktop/login1 \
org.freedesktop.login1.Manager TerminateSession s \
$(loginctl show-user $UID --property=Sessions --value)

vbusctlで導入されたことに注意してください。代わりに、すべてのセットアップで以下を実行できます。systemd221

dbus-send --system --print-reply --dest=org.freedesktop.login1 \
/org/freedesktop/login1 'org.freedesktop.login1.Manager.TerminateSession' \
string:c2

セッションIDはどこにc2ありますか?

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"
      }
   ]

関連情報