Logout, reboot and shutdown using the terminal

Me too, just noticed one of my scripts failing:

qdbus org.kde.ksmserver /KSMServer logout 1 3 3
Cannot find '.logout' in object /KSMServer at org.kde.ksmserver

Any ideas??

Read the thread bro :sweat_smile:

1 Like

Thank you. I think these would make beautifully useful defaults on Plasma.

1 Like

Nice write up, good to see you sharing your knowledge have learnt a lot by just following some of your guides

2 Likes

It wasn’t mentioned here, so I’ll just add that
shutdown 0
works.

For restart:
shutdown -r 0

the 0 is how much time to wait until shutdown.

This is not the same as the command above. It does not gracefully shut down Plasma, it does not remember your open programs, etc…

1 Like

There is a typo here.

qdbus org.kde.LogoutPrompt /LogoutPrompt  promptShutdown

Should be

qdbus org.kde.LogoutPrompt /LogoutPrompt  promptShutDown

(Capital D on Down.)

1 Like

Without prompt:
qdbus org.kde.Shutdown /Shutdown logout

1 Like

I have this in my ~/.aliases that takes care of all my command line Plasma session management issues:

# Various aliases for session control and power management in KDE Plasma
# Logging out of Plasma, keeping termux and screen sessions
# These are the pre-Plasma 6 versions
#alias klogout="qdbus org.kde.ksmserver /KSMServer logout 1 0 1"
#alias klogout-force="qdbus org.kde.ksmserver /KSMServer logout 0 0 1"
# These are the Plasma 6 versions
alias klogout="qdbus6 org.kde.LogoutPrompt /LogoutPrompt org.kde.LogoutPrompt.promptLogout"
alias klogout-force="qdbus6 org.kde.Shutdown /Shutdown org.kde.Shutdown.logout"
alias kshutdown="qdbus6 org.kde.LogoutPrompt /LogoutPrompt promptShutDown"
alias kshutdown-force="qdbus6 org.kde.Shutdown /Shutdown org.kde.Shutdown.logoutAndShutdown"
alias kreboot="qdbus6 org.kde.LogoutPrompt /LogoutPrompt promptReboot"
alias kreboot-force="qdbus6 org.kde.Shutdown /Shutdown  org.kde.Shutdown.logoutAndReboot"
alias klock="qdbus6 org.kde.screensaver /ScreenSaver Lock"
alias khibernate="qdbus6 org.kde.Solid.PowerManagement /org/freedesktop/PowerManagement Hibernate"
# Suspend doesn't really work for some reason
# alias ksuspend="qdbus org.kde.Solid.PowerManagement /org/freedesktop/PowerManagement Suspend"
# But Sleep works
alias ksleep="qdbus6 org.kde.kglobalaccel /component/org_kde_powerdevil invokeShortcut 'Sleep'"


1 Like

@David_Edmunson, does a dbus equivalent exist for Switch User? I ask because it’d be quicker than running promptLogout, but qdbus org.kde.LogoutPrompt /LogoutPrompt doesn’t appear to return a relevant method:

method void org.kde.LogoutPrompt.promptAll()
method void org.kde.LogoutPrompt.promptLogout()
method void org.kde.LogoutPrompt.promptReboot()
method void org.kde.LogoutPrompt.promptShutDown()
method QDBusVariant org.freedesktop.DBus.Properties.Get(QString interface_name, QString property_name)
method QVariantMap org.freedesktop.DBus.Properties.GetAll(QString interface_name)
signal void org.freedesktop.DBus.Properties.PropertiesChanged(QString interface_name, QVariantMap changed_properties, QStringList invalidated_properties)
method void org.freedesktop.DBus.Properties.Set(QString interface_name, QString property_name, QDBusVariant value)
method QString org.freedesktop.DBus.Introspectable.Introspect()
method QString org.freedesktop.DBus.Peer.GetMachineId()
method void org.freedesktop.DBus.Peer.Ping()

See qdbus --system org.freedesktop.DisplayManager

Though I’m not sure we’ll keep that forever and ever

1 Like