dbus를 통해 터미널에서 로그아웃하는 범용 방법

dbus를 통해 터미널에서 로그아웃하는 범용 방법

저는 을 처음 사용하고 dbus데스크톱 환경에 따라 터미널에서 로그아웃하는 다양한 방법을 보았습니다. 하지만 dbus메시지를 사용하여 데스크톱 환경에서 로그아웃할 수 있는 방법이 있는지 궁금합니다 .

그놈에서:

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)

v busctl에서 소개된 내용을 참고하세요 . - 또는 실행할 수 있는 모든 설정에서 다음을 수행할 수 있습니다.systemd221

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

c2세션 ID는 어디에 있습니까? 다음을 통해 얻을 수 있습니다.

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

관련 정보