我想让应用程序继续运行,但合上盖子时屏幕会锁定。我不想进入睡眠模式,因为这会阻止我的下载和正在播放的音乐。另外,我很懒,在合上盖子之前拒绝使用Win+ L。我只想合上盖子并立即锁定。请不要使用屏幕保护程序选项。
答案1
还有很长的路要走,所以让我们开始工作吧。
重要的是要了解这些事件将被 root 拥有的进程捕获。需要修复以允许 root 在普通用户的 X 环境中运行进程。为了使环境变量可供 root 使用:
gedit ~/export_x_info
并粘贴以下内容
# Export the dbus session address on startup so it can be used by any other environment
sleep 5
touch $HOME/.Xdbus
chmod 600 $HOME/.Xdbus
env | grep DBUS_SESSION_BUS_ADDRESS > $HOME/.Xdbus
echo 'export DBUS_SESSION_BUS_ADDRESS' >> $HOME/.Xdbus
# Export XAUTHORITY value on startup so it can be used by cron
env | grep XAUTHORITY >> $HOME/.Xdbus
echo 'export XAUTHORITY' >> $HOME/.Xdbus
保存并关闭。然后使其可执行:
chmod 700 ~/export_x_info
现在将其设置为在启动时运行。在 Gnome 2 中,系统 > 首选项 > 会话,然后单击添加。在 Ubuntu Unity 中,单击右上角的齿轮图标,选择启动程序,然后单击添加。
Name: X Environment Variables
Command: /home/your_user/export_x_info
现在你需要编辑/etc/acpi/lid.sh
捕捉盖子打开和关闭事件的文件
gksudo gedit /etc/acpi/lid.sh
并粘贴
/home/your_user/lid_event
之后#!/bin/bash
。保存并关闭。
现在您需要为关闭事件创建一个脚本,以便您可以锁定屏幕。
gedit ~/lid_event
并粘贴以下内容。将 user_name 更改为您的用户名
#!/bin/bash
grep closed /proc/acpi/button/lid/LID0/state
if [ $? = 0 ]
then
source /home/user_name/.Xdbus
DISPLAY=:0.0 su user_name -c "gnome-screensaver-command -l"
fi
/proc/acpi/button/lid/LID0/state
还要使用文件管理器检查文件,因为 LID0 可能是 LID。
现在使用以下命令重新启动 ACPI
sudo /etc/init.d/acpid restart
确保笔记本电脑盖关闭时的电源管理选项设置为不执行任何操作