系统实现:
HOME=/
SHELL=/bin/bash
* * * * * export DISPLAY=:0.0 && notify-send [“该休息一下啦”] “喝水!伸懒腰!动一动!”
python 实现:
sudo apt-get install python3-tk
#!/usr/bin/python3
from tkinter import *
top=Tk()

message='喝水时间到,休息一下吧!'

w=Label(top,text=message,bg='SeaGreen',width=1024,height=800)
w.pack()
top.mainloop()

crontab -e
* */1 * * * python3 /path/timer.py

[定时锁屏]
安装锁屏命令
sudo apt install gnome-screensaver

锁屏
gnome-screensaver-command -l

页面通知
为了更加优化,在锁屏前,弹出系统通知

notify-send -u normal -t 50000 -i appointment-new ‘1分钟后锁屏’ ‘注意休息,善待眼睛、善待颈椎’

定时任务
Terminal中输入 crontab -e 进入定时任务编辑页面(如果是第一次,会提示选择编辑器,本人选择vim)。输入如下内容:

# m h dom mon dow command
29 * * * * notify-send -u normal -t 50000 -i appointment-new ‘1分钟后锁屏’ ‘注意休息,善待眼睛、善待颈椎’
30 * * * * gnome-screensaver-command -l

奇怪的是,不管是通知还是锁屏,均无法生效。原因就在于 cron 中执行界面相关的命令,需要有如下合适的参数:$DBUS_SESSION_BUS_ADDRESS,$DISPLAY。如何给这两个参数设置合适的值呢?可以从系统中已运行的程序中获取,详情介绍请参考。
新建脚本:/usr/local/bin/gui-program-from-cron.sh,内容如下:

#!/bin/sh
[ “$#” -lt 1 ] && echo “Usage: $0 program options” && exit 1

program=”$1″
shift

user=$(whoami)
env_reference_process=$( pgrep -u “$user” xfce4-session || pgrep -u “$user” ciannamon-session || pgrep -u “$user” gnome-session || pgrep -u “$user” gnome-shell || pgrep -u “$user” kdeinit | head -1 )

export DBUS_SESSION_BUS_ADDRESS=$(cat /proc/”$env_reference_process”/environ | grep –null-data ^DBUS_SESSION_BUS_ADDRESS= | sed ‘s/DBUS_SESSION_BUS_ADDRESS=//’)
export DISPLAY=$(cat /proc/”$env_reference_process”/environ | grep –null-data ^DISPLAY= | sed ‘s/DISPLAY=//’)
“$program” “$@”

修改脚本权限:

sudo chmod +x /usr/local/bin/gui-program-from-cron.sh

再次执行 crontab -e

# m h dom mon dow command
29 * * * * /usr/local/bin/gui-program-from-cron.sh notify-send -u normal -t 50000 -i appointment-new ‘1分钟后锁屏’ ‘注意休息,善待眼睛、善待颈椎’
30 * * * * /usr/local/bin/gui-program-from-cron.sh gnome-screensaver-command -l

善待眼睛、善待颈椎,从看完本文开始!
参考:
https://blog.csdn.net/weixin_43834662/article/details/95596981?utm_medium=distribute.pc_relevant.none-task-blog-title-8&spm=1001.2101.3001.4242

以上在uos上都不行!!!