我不是在谈论shutdown
命令reboot
。我想从命令行启动与按下 KDE 桌面内的注销/重启/关机按钮时执行的相同例程。
答案1
对于 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
三个整数参数分别confirm
是sdtype
sdmode
KWorkSpace::请求关闭。其值在页面顶部有说明。由于该页面已消失,因此以下是其值(仍然存在于缓存)。
enum ShutdownConfirm {
ShutdownConfirmDefault = -1,
ShutdownConfirmNo = 0,
ShutdownConfirmYes = 1
}
ShutdownConfirmDefault
:服从用户的确认设置。ShutdownConfirmNo
:不确认,不询问直接关机。ShutdownConfirmYes
:始终确认,即使用户已关闭也会询问。
enum ShutdownType {
ShutdownTypeDefault = -1,
ShutdownTypeNone = 0,
ShutdownTypeReboot = 1,
ShutdownTypeHalt = 2,
ShutdownTypeLogout = 3
}
ShutdownTypeDefault
:选择上一个操作,如果是第一次则选择默认操作。ShutdownTypeNone
:仅注销。ShutdownTypeReboot
:注销并重新启动机器。ShutdownTypeHalt
:注销并停止机器。ShutdownTypeLogout
:暂时性脑损伤。请勿使用。与 ShutdownTypeNone 相同
enum ShutdownMode {
ShutdownModeDefault = -1,
ShutdownModeSchedule = 0,
ShutdownModeTryNow = 1,
ShutdownModeForceNow = 2,
ShutdownModeInteractive = 3
}
ShutdownModeDefault
:选择上一个模式,如果是第一次则选择默认模式。ShutdownModeSchedule
:当所有活动会话都退出时安排关机(停止或重新启动)。ShutdownModeTryNow
:如果没有活动会话,则关闭。否则不执行任何操作。ShutdownModeForceNow
:强制关机。终止所有可能活动的会话。ShutdownModeInteractive
:弹出一个对话框询问用户如果会话仍然处于活动状态该怎么做。
答案2
因此我尝试了 Gilles 提出的答案,但它仅适用于 KDE4。
在我的显卡进行系统更新后,我无法再注销、重启或关机。最后找到了这个命令工作:
qdbus org.kde.ksmserver /KSMServer logout 0 0 0
我的消息来源是这里,他们对此进行了更多讨论。我不确定是否有其他选择。论坛主题讨论 KDE5 关机选项。上述命令似乎已正常关闭我的系统。我的所有程序都按预期恢复,布局顺序正确,而且我似乎没有遗漏任何东西。如果这不起作用,请发表评论,我会调整我的答案,但到目前为止,当我的系统被锁定时,这就是正常关闭 KDE5 的所有方法。(我显然可以使用关机命令或调用 init,但这些都不是正常关闭。)
答案3
对于任何版本的 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
。