从 i3 休眠

从 i3 休眠

我正在尝试使用 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 hibernatesudo 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为无密码运行

  1. 检查 systemctl 的位置: which systemctl

  2. 将 sudoers 和 i3 config 中的 #placeholder# 中的上述命令的输出替换为:

sudoers文件:


midway ALL=(ALL) NOPASSWD: #placeholder# hibernate

i3 配置:


bindsym Mod1+Shift+F4  exec sudo #placeholder# hibernate

希望这更容易理解。

相关内容