Linux 番茄时钟 定时

Posted 你笑了

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux 番茄时钟 定时相关的知识,希望对你有一定的参考价值。

shell 脚本

clock.sh

#!/bin/bash
if [ $1 == 0 ]
then
at -d `atq | awk -v ORS=" " \'{a[NR]=$1} END {for(i=1;i<=NR;i++){print a[i]}}\'` 2> /dev/null
kill `ps -ef | grep feh | grep -v grep | awk \'{print $2}\' | sed -n \'1p\'` 2>/dev/null
espeak -v zh "取消"
else
time1=${1:-45}
time2=$[$time1+5]
espeak -v zh "$time1"
echo "env DISPLAY=:1 feh -F ~/Downloads/icon/th.jpeg" | at now +$time1 minutes
echo "env DISPLAY=:1 animate -backdrop ~/Downloads/icon/fd.gif" | at now +$time2 minutes
echo "ps -ef | grep lazha2 | grep -v grep | awk \'{print \\$2}\' | sed -n \'1p\' | xargs kill 2> /dev/null" | at now +$time1 minutes
feh ~/Downloads/icon/lazha2.jpg
fi

解释

if [ $1 == 0 ]
then
# 取消刚才设定的闹钟
at -d `atq | awk -v ORS=" " \'{a[NR]=$1} END {for(i=1;i<=NR;i++){print a[i]}}\'`
# 关闭图片
kill `ps -ef | grep feh | grep -v grep | awk \'{print $2}\' | sed -n \'1p\'` 2>/dev/null
espeak -v zh "取消"
else
# 默认45分钟
time1=${1:-45}
# 如果到点后仍意犹未尽,那么5分钟后全屏提示
time2=$[$time1+5]
# 普通话读出时间,需要安装 espeak,可以玩一下
espeak -v zh "$time1"
# time1 时间后,在外接屏上显示指定图片,修改路径`~/Downloads/icon/th.jpeg`,按`Esc`关闭图片
echo "env DISPLAY=:1 feh -F ~/Downloads/icon/th.jpeg" | at now +$time1 minutes
# time2 时间后,在全部屏幕上显示指定gif动画,修改路径`~/Downloads/icon/fd.gif`,按`Esc`关闭图片
echo "env DISPLAY=:1 animate -backdrop ~/Downloads/icon/fd.gif" | at now +$time2 minutes
# time1 时间后,关闭提示图片,这里需要 grep lazha2(图片名),否则上面的 th.jpeg 可能不会显示就被关闭了
echo "ps -ef | grep lazha2 | grep -v grep | awk \'{print \\$2}\' | sed -n \'1p\' | xargs kill 2> /dev/null" | at now +$time1 minutes
# 因为有时候不知道是否已经开启,显示一张【提示图片】,修改路径`~/Downloads/icon/lazha2.jpg`
feh ~/Downloads/icon/lazha2.jpg
fi

添加快捷方式

  1. /usr/share/applications/目录下添加 clock.desktop 文件
    sudo vim /usr/share/applications/clock.desktop
[Desktop Entry]
Name=Clock
Exec=sh /home/lfp/bin/clock.sh
Icon=/home/lfp/Downloads/icon/clock.png
Type=Application
StartupNotify=true

Actions=time1;time2;cancel;

[Desktop Action time1]
Name=30分钟
Exec=sh /home/lfp/bin/clock.sh 30

[Desktop Action time2]
Name=35分钟
Exec=sh /home/lfp/bin/clock.sh 35

[Desktop Action cancel]
Name=取消时钟
Exec=sh /home/lfp/bin/clock.sh 0


需要自己修改的地方

  1. Exec 路径,修改为自己clock脚本所在路径
  2. Icon 路径,修改为你要显示的图片的路径
  3. Actions 可以自己添加或修改时间,修改之后需要重启dock
    alt + F2 打开对话框,输入 "r",回车重启生效
  1. 添加可执行权限
    sudo chmod +x /usr/share/applications/clock.desktop

  2. 此时在程序列表中就会显示该快捷方式

    可以右键添加到收藏夹快捷启动

资源

th.jpeg

fd.gif

clock.png

lazha2.jpg

以上是关于Linux 番茄时钟 定时的主要内容,如果未能解决你的问题,请参考以下文章

Linux时间子系统之四:定时器的引擎:clock_event_device

Linux内核时钟系统和定时器实现

定时任务的前世今生[内含Linux时钟常规定时组件介绍]

定时任务的前世今生[内含Linux时钟常规定时组件介绍]

vc++2010设置和c#一样的代码段,vs2010 两下tab设置

Linux内核定时器