我已经能够成功地休眠并恢复我的 Ubuntu 12.04 台式电脑,使用我记录在这个答案中。但是,我现在遇到一个问题,每当 PC 恢复时,它才不是锁定屏幕。
系统从休眠状态恢复后如何锁定屏幕?
答案1
~/.bashrc
我在文件中添加了一个别名
alias hibernate='sudo echo "Hibernating..."; gnome-screensaver-command -l; sudo pm-hibernate;'
这样它就会锁定屏幕前冬眠。
答案2
我可以使用以下命令解决此问题
sudo pm-hibernate; gnome-screensaver-command -l
请注意,你应该以普通用户身份运行而不能以 root 用户身份进行锁定工作,因为在 Ubuntu 中默认情况下,root 用户没有密码,因此恢复后,只需摇动鼠标即可解锁锁屏。
答案3
我有另一种解决方法。我刚刚复制了/etc/acpi/sleep.sh
此/etc/acpi/hibernate.sh
内容pm-hibernate
if [ x$LOCK_SCREEN = xtrue ]; then
if pidof xscreensaver > /dev/null; then
for x in /tmp/.X11-unix/*; do
displaynum=`echo $x | sed s#/tmp/.X11-unix/X##`
getXuser;
if [ x"$XAUTHORITY" != x"" ]; then
export DISPLAY=":$displaynum"
. /usr/share/acpi-support/screenblank
fi
done
fi
fi
现在我可以通过电源菜单或睡眠按钮锁定来休眠
答案4
有一个更好的方法,使用 systemd 在休眠前自动锁定屏幕
在 中创建一个文件,/etc/systemd/system/lock-on-hibernate.service
内容如下:
[Unit]
Description="Make extra sure to lock the screen when hibernating"
[Service]
Type=oneshot
ExecStart=loginctl lock-sessions
[Install]
WantedBy=hibernate.target
然后启用它
sudo systemctl daemon-reload
sudo systemctl enable lock-on-hibernate.service
现在 hibernatw 就像正常一样systemctl hibernate
它将在您恢复之前自动锁定您的屏幕
注意:我使用的是 Fedora 37,您的系统可能使用不同的休眠系统。因此,请确保您使用正确的WantedBy
目标。(例如WantedBy=systemd-hibernate.target
)