if [ -n "$USER" ] && [ -n "$DISPLAY_VAR" ] && [ -n "$XAUTHORITY_VAR" ]; then logger "Found active graphical session for user $USER on display $DISPLAY_VAR with XAUTHORITY $XAUTHORITY_VAR" # 以该用户的身份,使用其DISPLAY和XAUTHORITY变量执行 xset dpms force off 命令 # 'su - "$USER" -c "..."' 确保在正确的用户和环境中执行命令 su - "$USER" -c "export DISPLAY=$DISPLAY_VAR; export XAUTHORITY=$XAUTHORITY_VAR; /usr/bin/xset dpms force off" if [ $? -eq 0 ]; then logger "Successfully turned off display for user $USER on $DISPLAY_VAR." exit 0 # 如果成功关闭一个显示器,则退出 else logger "Failed to turn off display for user $USER on $DISPLAY_VAR." fi fi done
logger "No graphical session found or could not turn off display."
赋予脚本执行权限:
sudochmod +x /etc/acpi/lid_close_screen_off.sh
创建盖子打开事件的脚本(用于重新打开屏幕):
sudo nano /etc/acpi/events/lid_open_screen_on
内容:
event=button/lid LID open action=/etc/acpi/lid_open_screen_on.sh
创建屏幕打开的动作脚本:
sudo nano /etc/acpi/lid_open_screen_on.sh
内容:
#!/bin/bash logger "Lid open detected. Attempting to turn on display."
if [ -n "$USER" ] && [ -n "$DISPLAY_VAR" ] && [ -n "$XAUTHORITY_VAR" ]; then logger "Found active graphical session for user $USER on display $DISPLAY_VAR with XAUTHORITY $XAUTHORITY_VAR" # xset dpms force on 开启显示器 # xset s reset 和 xset s noblank 确保屏幕保护程序不会立即重新触发 su - "$USER" -c "export DISPLAY=$DISPLAY_VAR; export XAUTHORITY=$XAUTHORITY_VAR; /usr/bin/xset dpms force on; /usr/bin/xset s reset; /usr/bin/xset s noblank" if [ $? -eq 0 ]; then logger "Successfully turned on display for user $USER on $DISPLAY_VAR." exit 0 else logger "Failed to turn on display for user $USER on $DISPLAY_VAR." fi fi done
logger "No graphical session found or could not turn on display."