在没有桌面环境的情况下从 X 关闭

4 linux shutdown not-root-user

我最近放弃了我的桌面环境,现在只使用窗口管理器 (i3) 和 X。一切都很好,我不会错过太多。除了一件事:关机按钮。我现在只能通过发出以下命令来关闭:

sudo shutdown -Ph now

从终端。这有效,但我想在 i3 中创建一个键绑定以通过单击关闭Mod+x。我不确定这是如何实现的。如果我在 say 中创建一个脚本~/shutdown并参考这个:

bindsym $mod+x exec ~/shutdown

那么这行不通;我想是因为我以普通用户身份运行,并且在此脚本中执行 sudo。我可以让终端出现并提示我输入密码(尽管我更喜欢这不需要密码,如果可能的话),但我不知道如何做到这一点。有什么方法可以完成这项工作?

使用 Arch Linux。

jw0*_*013 8

如果您使用D-Bus 会话ConsoleKit(这是大多数现代桌面系统的默认组件,因此您可能已经安装了它),则系统关机方法比sudo shutdown这种方法更简洁,并且不需要任何 root 权限。 :

dbus-send --system --print-reply --dest="org.freedesktop.ConsoleKit" \
 /org/freedesktop/ConsoleKit/Manager org.freedesktop.ConsoleKit.Manager.Stop
Run Code Online (Sandbox Code Playgroud)

同样,系统重启可以通过

dbus-send --system --print-reply --dest="org.freedesktop.ConsoleKit" \
  /org/freedesktop/ConsoleKit/Manager org.freedesktop.ConsoleKit.Manager.Restart
Run Code Online (Sandbox Code Playgroud)

您可以将它们放在脚本中并添加快捷方式或菜单项来调用它们。