我正在尝试使用 i3 的快捷方式进入休眠状态。我的 i3 配置文件如下所示:
14 # Keyboard friendly exit
15 set $exit exit: [l]ock, [e]logout, [h]ibernate, [r]eboot, [s]hutdown
16 mode "$exit" {
17 bindsym h exec "i3lock; systemctl hibernate"; mode "default"
18 bindsym l exec i3lock -c 000000; mode "default"
19 bindsym e exec i3-msg exit
20 bindsym r exec systemctl reboot
21 bindsym s exec systemctl poweroff
22 bindsym Escape mode "default"
23 bindsym Return mode "default"
24 }
当我在正确模式下按 h 时,我的电脑会自动锁定但不会休眠。我尝试过用 替换,systemctl hibernate
但sudo systemctl hibernate
也没用。
在终端上,我可以sudo systemctl hibernate
休眠,同时systemctl hibernate
系统会提示我使用此消息进行身份验证
Failed to hibernate system via logind: Access denied
==== AUTHENTICATING FOR org.freedesktop.systemd1.manage-units ===
Authentication is required to start 'hibernate.target'.
Authenticating as: $User,,, ($user)
Password:
我可以正确地从 i3 关机并重新启动,但不能进入休眠状态。
编辑:我有一个交换分区和休眠功能,如果从命令行完成的话sudo sytemctl hibernate
。
我的 fstab 如下所示:
# Swap
UUID=424242-4242-4242-4242-4242424242 none swap sw 0 0
答案1
你能在 sudoers 中为 systemctl hibernate 上的 nopasswd 创建一个新行,看看效果如何吗?
我已将 hibernate 映射到 Alt + Shift + F4,并且已将我的 ID 配置sudo systemctl hibernate
为无密码运行
检查 systemctl 的位置:
which systemctl
将 sudoers 和 i3 config 中的 #placeholder# 中的上述命令的输出替换为:
sudoers文件:
midway ALL=(ALL) NOPASSWD: #placeholder# hibernate
i3 配置:
bindsym Mod1+Shift+F4 exec sudo #placeholder# hibernate
希望这更容易理解。