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

txw*_*ger 24 kde command-line reboot shutdown

我不是在谈论shutdownreboot命令。我想从命令行启动相同的例程,如果我按下 KDE 桌面内的注销/重新启动/关机按钮,将执行该例程。

Gil*_*il' 25

对于 KDE 5+:

qdbus org.kde.Shutdown /Shutdown logout
qdbus org.kde.Shutdown /Shutdown logoutAndReboot
qdbus org.kde.Shutdown /Shutdown logoutAndShutdown
Run Code Online (Sandbox Code Playgroud)

最后一个选项指定调用哪个方法。似乎部分支持下面提到的 KDE4 选项(重新启动不起作用,所以我最终使用了这些较新的方法)。

参考:Reddit

对于 KDE 4:

请注意,此答案是在 2010 年为 KDE 4 编写的。它可能不适用于现代系统。

qdbus org.kde.ksmserver /KSMServer org.kde.KSMServerInterface.logout -1 -1 -1
Run Code Online (Sandbox Code Playgroud)

三个整数参数是confirm,sdtypeKWorkSpace::requestShutDown 的sdmode参数。它们的值在页面顶部进行了解释。由于页面已经消失,这里是值(仍然存在于缓存中)。

enum ShutdownConfirm {
  ShutdownConfirmDefault = -1,
  ShutdownConfirmNo = 0,
  ShutdownConfirmYes = 1
}
Run Code Online (Sandbox Code Playgroud)
  • ShutdownConfirmDefault:服从用户的确认设置。
  • ShutdownConfirmNo: 不确认,不问就关机。
  • ShutdownConfirmYes:始终确认,即使用户将其关闭也要询问。
enum ShutdownMode {
  ShutdownModeDefault = -1,
  ShutdownModeSchedule = 0,
  ShutdownModeTryNow = 1,
  ShutdownModeForceNow = 2,
  ShutdownModeInteractive = 3
}
Run Code Online (Sandbox Code Playgroud)
  • ShutdownModeDefault: 如果是第一次,选择以前的模式或默认模式。
  • ShutdownModeSchedule:在所有活动会话退出时安排关闭(暂停或重新启动)。
  • ShutdownModeTryNow: 关闭,如果没有活动会话。否则什么都不做。
  • ShutdownModeForceNow: 强制关机。杀死任何可能处于活动状态的会话。
  • ShutdownModeInteractive:弹出一个对话框,询问用户如果会话仍然处于活动状态该怎么办。
enum ShutdownType {
  ShutdownTypeDefault = -1,
  ShutdownTypeNone = 0,
  ShutdownTypeReboot = 1,
  ShutdownTypeHalt = 2,
  ShutdownTypeLogout = 3
}
Run Code Online (Sandbox Code Playgroud)
  • ShutdownTypeDefault:如果是第一次,请选择上一个操作或默认操作。
  • ShutdownTypeNone: 只登出。
  • ShutdownTypeReboot: 注销并重新启动机器。
  • ShutdownTypeHalt: 注销并停止机器。
  • ShutdownTypeLogout: 暂时性脑损伤。不要用。与 ShutdownTypeNone 相同


C.D*_*.D. 5

所以我尝试了 Gilles 提出的答案,但这仅适用于 KDE4。

在对我的图形进行系统更新后,我无法再注销、重新启动或关闭。最终发现这个命令有效

qdbus org.kde.ksmserver /KSMServer logout 0 0 0
Run Code Online (Sandbox Code Playgroud)

我的消息来源来自这里,他们在那里进行了更多讨论。我不确定他是否有其他选择。论坛主题讨论 KDE5 关闭选项。上面的命令似乎优雅地关闭了我的系统。我所有的程序都按预期返回,布局顺序正确,我似乎没有遗漏任何东西。如果这不起作用,请发表评论,我会调整我的答案,但到目前为止,这就是我被锁定时正常关闭 KDE5 的全部工作。(我显然可以使用关闭命令或调用 init,但这些并不优雅。)