如何从命令行安全地关闭/重启/注销 KDE?

如何从命令行安全地关闭/重启/注销 KDE?

我不是在谈论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

三个整数参数分别confirmsdtypesdmodeKWorkSpace::请求关闭。其值在页面顶部有说明。由于该页面已消失,因此以下是其值(仍然存在于缓存)。

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 && kdehaltwget "http://something" ; kdehalt

相关内容