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)

이는 busctlv에서 도입되었습니다. - 또는 실행할 수 있는 모든 설정에서 다음을 수행하십시오.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"
      }
   ]

관련 정보