Ubuntu下的定时提醒&自动锁屏程序(保护眼睛)
0x00 前言
过长时间看屏幕对眼睛很不好,所以想写一个脚本,来提醒我该让眼睛休息了。希望达到这样的目的:
- 开机自动运行
- 定时提醒,然后自动锁屏
- 解锁后再过设定的时间,又会自动提醒、锁屏
我的操作系统是Ubuntu14.04,桌面环境是gnome。
0x01 查阅资料
1.弹出提示
notify-send '该休息了'
2.锁屏命令:
gnome-screensaver-command -l
3.进入屏幕保护状态
gnome-screensaver-command -a
4.查询是否在屏幕保护状态
gnome-screensaver-command -q
5.开机自动运行,编辑文件/etc/rc.local
vi /etc/rc.local
用户登录时,bash先自动执行系统管理员建立的全局登录脚本:/ect/profile,然后bash在用户目录下按顺序查找三个特殊文件:~/.bash_profile、~/.bash_login、~/.profile,只执行最先找到的一个。因此,只需根据实际需要在上述文件中加入命令就可以实现用户登录时自动运行某些程序(类似于DOS下的Autoexec.bat)。
0x02 用Python实现
#coding:utf8
import os
import time
import subprocess
BufferTime = 10 #缓冲时间,单位 秒
IntervalTime = 40 #间隔时间,单位 分钟
while True:
time.sleep(IntervalTime*60)
os.system("notify-send -u normal -i appointment-new '该休息了' '注意保护眼睛~'")
time.sleep(BufferTime)
os.system("gnome-screensaver-command -l")
time.sleep(1)
os.system("gnome-screensaver-command -a")
#检查是否处于屏幕保护状态
while True:
x = subprocess.check_output(['gnome-screensaver-command','-q'])
if "The screensaver is inactive" in str(x):
#不处于屏幕保护状态
break
else:
continue
time.sleep(1)
将这个脚本保存为/home/werner/.protectEyes.py,然后编辑文件/etc/rc.local,在最后一行添加:
python /home/werner/.protectEyes.py &
这个脚本实现的效果是当用户登录时会自动运行,每隔IntervalTime分钟,就会提示用户该休息了,显示提示信息后,再过BufferTime秒会自动进入屏幕保护状态。当退出屏幕保护状态后(不是解锁后,我没有找到判断是否锁屏的方法),再过IntervalTime分钟,又会有新一轮的休息提示和自动进入屏幕保护状态。
(2016年8月16日更新)发现一个软件Eyerest做了同样的事情,参考通过定时锁屏,提醒用户休息的软件 [Eyerest]。
(2018年1月6日更新)在Ubuntu14.04中,用命令“gnome-session-properties”可打开有图形界面的开机自运行配置。