You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
82 lines
1.9 KiB
82 lines
1.9 KiB
#!/bin/bash
|
|
###
|
|
# @Author: Zhang Yueqian zhangyueqian@antiy.cn
|
|
# @Date: 2022-11-01 09:47:56
|
|
# @LastEditors: Zhang Yueqian zhangyueqian@antiy.cn
|
|
# @LastEditTime: 2022-11-02 15:08:56
|
|
# @FilePath: /screensaver/backend/medr-lightdm-dpms-enable
|
|
# @Description: 在lightdm(greeter)界面启用屏幕休眠功能
|
|
#
|
|
# 本程序需安装在 /usr/local/bin/ 目录下, 配置到 /etc/lightdm/50-medr-dpms.conf 文件中
|
|
###
|
|
|
|
# 休眠时间设置文件路径
|
|
TIMEOUT_FILE=/var/run/medr-lightdm
|
|
|
|
# 是否锁屏判断文件
|
|
LOCK_FILE=/var/run/medr-lightdm-lock
|
|
|
|
# 默认休眠时间(分钟)
|
|
DEFAULT_TIMEOUT=10
|
|
# 确认文件存在
|
|
if [ ! -f $TIMEOUT_FILE ]; then
|
|
touch $TIMEOUT_FILE
|
|
fi
|
|
|
|
# 获取休眠超时配置, 如果未设置或设置格式非数字, 则返回默认配置 $DEFAULT_TIMEOUT
|
|
function get_timeout() {
|
|
# 首先保证TIMEOUT文件可被修改
|
|
chmod 777 $TIMEOUT_FILE
|
|
|
|
# 读取TIMEOUT内容并确认为数字
|
|
TIMEOUT=$(cat $TIMEOUT_FILE)
|
|
|
|
case $TIMEOUT in
|
|
'' | *[!0-9]*) echo $DEFAULT_TIMEOUT ;;
|
|
*) echo $TIMEOUT ;;
|
|
esac
|
|
}
|
|
|
|
# 获取调用方有没有要求黑屏
|
|
function get_blank() {
|
|
# 确保文件可修改
|
|
chmod 777 $LOCK_FILE
|
|
|
|
# 读取命令
|
|
LOCK_CMD=$(cat $LOCK_FILE)
|
|
case $LOCK_CMD in
|
|
"BLANK" | "blank") echo "yes" ;;
|
|
*) echo "no" ;;
|
|
esac
|
|
|
|
# 清空命令文件
|
|
echo 'done' >$LOCK_FILE
|
|
}
|
|
|
|
# 入口函数, 读取设置并调用xset
|
|
function main() {
|
|
# 读取超时配置并转换为秒
|
|
TIMEOUT=$(get_timeout)
|
|
TIMEOUT=$((TIMEOUT * 60))
|
|
|
|
# 读取是否黑屏
|
|
BLANK_SCREEN=$(get_blank)
|
|
|
|
# 必须的, 似乎是需要等待X启动
|
|
while true; do
|
|
xset q 2>&1 >/dev/null && break
|
|
sleep 1
|
|
done
|
|
sleep 10
|
|
|
|
# 利用X的dpms功能触发屏幕休眠
|
|
xset dpms 0 0 $TIMEOUT
|
|
|
|
sleep 10
|
|
|
|
if [ x"$BLANK_SCREEN" == "xyes" ]; then
|
|
xset dpms force off
|
|
fi
|
|
}
|
|
|
|
main &
|
|
|