问题描述
我不是在谈论 shutdown
和 reboot
命令。我想从命令行启动与按下 KDE 桌面内的注销/重新启动/关闭按钮时执行的相同例程。
最佳答案
对于 KDE 5+:
qdbus org.kde.Shutdown /Shutdown logout
qdbus org.kde.Shutdown /Shutdown logoutAndReboot
qdbus org.kde.Shutdown /Shutdown logoutAndShutdown
最后一个选项指定调用哪个方法。似乎下面提到的 KDE4 选项得到了部分支持(重新启动不起作用,所以我最终使用了这些较新的方法)。
参考号:Reddit
对于 KDE 4:
请注意,此答案是在 2010 年针对 KDE 4 编写的。它可能不适用于现代系统。
qdbus org.kde.ksmserver /KSMServer org.kde.KSMServerInterface.logout -1 -1 -1
这三个整数参数是 KWorkSpace::requestShutDown 的 confirm
、 sdtype
和 sdmode
参数。它们的值在页面顶部进行了解释。由于该页面已消失,因此以下是值(仍然存在于 cache 中)。
enum ShutdownConfirm {
ShutdownConfirmDefault = -1,
ShutdownConfirmNo = 0,
ShutdownConfirmYes = 1
}
\\n
\\n
ShutdownConfirmDefault
:\\nObey the user’s confirmation setting.\\n
ShutdownConfirmNo
:\\nDon’t confirm, shutdown without asking.\\n
ShutdownConfirmYes
:\\nAlways confirm, ask even if the user turned it off.\\n
\\n
enum ShutdownType {
ShutdownTypeDefault = -1,
ShutdownTypeNone = 0,
ShutdownTypeReboot = 1,
ShutdownTypeHalt = 2,
ShutdownTypeLogout = 3
}
\\n
\\n
ShutdownTypeDefault
:\\nSelect previous action or the default if it’s the first time.\\n
ShutdownTypeNone
:\\nOnly log out.\\n
ShutdownTypeReboot
:\\nLog out and reboot the machine.\\n
ShutdownTypeHalt
:\\nLog out and halt the machine.\\n
ShutdownTypeLogout
:\\nTemporary brain damage.\\nDon’t use. Same as ShutdownTypeNone\\n
\\n
enum ShutdownMode {
ShutdownModeDefault = -1,
ShutdownModeSchedule = 0,
ShutdownModeTryNow = 1,
ShutdownModeForceNow = 2,
ShutdownModeInteractive = 3
}
\\n
\\n
ShutdownModeDefault
:\\nSelect previous mode or the default if it’s the first time.\\n
ShutdownModeSchedule
:\\nSchedule a shutdown (halt or reboot) for the time all active sessions have exited.\\n
ShutdownModeTryNow
:\\nShut down, if no sessions are active.\\nOtherwise do nothing.\\n
ShutdownModeForceNow
:\\nForce shutdown.\\nKill any possibly active sessions.\\n
ShutdownModeInteractive
:\\nPop up a dialog asking the user what to do if sessions are still active.\\n
\\n
次佳答案
所以我尝试了 Gilles 提出的答案,但这仅适用于 KDE4。
在我的图形出现 system-update 后,我无法再注销、重新启动或关机。最终发现这个命令有效:
qdbus org.kde.ksmserver /KSMServer logout 0 0 0
我的消息来源来自这里,他们在那里对此进行了更多讨论。我不确定他还有其他选择。 Forum topic discussion KDE5 shutdown options. 上面的命令似乎已经正常关闭了我的系统。我的所有程序都按预期返回,布局顺序正确,而且我似乎没有遗漏任何内容。如果这不起作用,请发表评论,我将调整我的答案,但到目前为止,这就是在我的锁定时正常关闭 KDE5 的所有方法。 (显然我可以使用 shutdown 命令或调用 init,但这些并不优雅。)
第三种答案
对于任何版本的 KDE(也许还有 GNOME 和其他版本):
在KDE控制中心(KDE3.5/trinity)中,您可以设置“不确认就停止”的键盘快捷键(应该是一个复杂的快捷键,以避免悲剧,例如 Ctrl
+ Shift
+ Alt
+ Delete
),然后运行 xvkbd
(虚拟键盘) :
xvkbd -text '\C\S\A\d'
您可以为此创建一个别名(例如 kdehalt
);
我最喜欢的一个: sleep 1h 20m && kdehalt
或 wget "http://something" ; kdehalt
。