一、背景
长时间在显示器前久坐久看不仅对眼睛不好而且对腰椎颈椎造成极大伤害,可以使用定时器提醒,但多有不便——声音提示可能听不到(台式机)或者担心影响其他人;工作非常投入时随手关掉继续工作。针对定时器的两个问题,考虑采用终极方式——直接锁屏不允许工作,只能休息喝点水、站起来走走或者向远处眺望。
二、环境要求
windows还没有简单易用的第三方软件实现,所以考虑使用windows的定时+python实现。确保环境安装了python环境,可到https://www.python.org/ 下载。
三、实现
RestTimer.py内容如下,休息时间不结束一直保存锁屏态。
# -*- coding: UTF-8 -*-
import os
import time
REST_MINUTES = 10 # 请设定你自己的休息时间
def CallWinLockScreen():
os.system('rundll32.exe user32.dll, LockWorkStation')
def LockScreenLoop(secTimer: int, offset: int):
secTimer -= offset
while secTimer > 0:
if secTimer % 10 == 0:
CallWinLockScreen()
time.sleep(1)
secTimer -= 1
def main():
setTimeLeft = REST_MINUTES * 60 # 单位秒
lockScreenTime = 10 # 单位秒
timeLeft = lockScreenTime
print(f'Task a break and have {REST_MINUTES} minutes rest! Screen will be locked in {lockScreenTime}s')
print('\r{: >12}s left'.format(timeLeft), end='')
while timeLeft > 0:
time.sleep(1)
timeLeft -= 1
if timeLeft != 0:
print('\r{: >12}s left'.format(timeLeft), end='')
else:
print('\r{: >12}s left'.format(timeLeft), end='\n')
LockScreenLoop(setTimeLeft, lockScreenTime)
print('======You can work======')
if __name__ == '__main__':
main()
四、配置windows定时任务
1. Win+R打开“运行”,输入taskschd.msc
回车,打开计划任务
2. 点击创建任务,在名称写定时器任务名
3. 点击触发器-->新建,开始编辑(当前配置会在每天9:40 10:40……锁屏)
4. 点击操作--新建,设置程序脚本,确定即配置完成
5. 在主界面可见定时任务,如未启动可右键启动
五、注意事项
1. 解锁后可在出现的cmd下ctrl+c终止,定时任务会在下个时间继续执行