从hibernate状态恢复后如何锁定屏幕?

我已经能够使用我在这个答案中记录的程序成功地hibernate并恢复我的Ubuntu 12.04台式PC。 但是,我现在遇到的问题是,只要PC恢复,它就不会锁定屏幕。

系统从hibernate状态恢复后,如何锁定屏幕?

我在~/.bashrc文件中添加了一个别名

 alias hibernate='sudo echo "Hibernating..."; gnome-screensaver-command -l; sudo pm-hibernate;' 

这样它就会冬眠之前锁定屏幕。

我已经能够通过使用以下命令解决此问题

 sudo pm-hibernate; gnome-screensaver-command -l 

请注意,您应该以普通用户身份运行 ,而不是以root用户身份运行锁定,因为默认情况下在Ubuntu中,root用户没有密码,因此在恢复后,只需摇动锁定即可解锁锁定屏幕老鼠。

我有另一个解决方法。 我在pm-hibernate之前将它从/etc/acpi/sleep.sh复制到/etc/acpi/hibernate.sh

 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 

现在我可以通过电源菜单或睡眠按钮进行hibernate

不是在Ubuntu上,但以下对我有用:

 systemd-inhibit --what sleep --why "Lock screen" --mode delay xdg-screensaver lock & systemctl suspend 

如果要在hibernate之前锁定屏幕,请使用命令替换xdg-screensaver lock以锁定系统上的屏幕并使用systemctl hibernate systemctl suspend systemctl hibernate

这通过并行锁定屏幕以悬挂机器来实现。 但是,屏幕锁定命令作为延迟睡眠的抑制剂运行。 这样,systemd将等到屏幕被锁定后再执行。

如果您有阻止挂起的抑制器,请在末尾添加-i标志。