DIY一个高大上带提醒的计时器,简单实用,你还在等什么
发布时间:2020-07-19 15:02:29
来源:51CTO
阅读:1124
作者:实验楼
小编心语:锵锵锵!小编我又来了!昨天发了一篇比较实用的《Python聊天室》,鉴于反响还不错,SO ,小编也想给大家多分享点有用的干货,让大家边学边用。好了,闲话不多说,今天要给各位看官们介绍的是基于C语言的带提醒功能计时器。
你还在为错过重要的事情而心烦不已吗?
你还在为没抢到某米手机而扼腕叹息吗?
你还在为没领到美食免单而空遗口水吗?
从今天起,这些都不是问题,且看小编我给你一一道来!
咳咳咳~上菜啦~
dialog+ncurse实现命令行带提醒功能计时器
一、说明
这次项目课要实现的东西功能很简单,但是却用到了好几个东西,包括dialog,ncurses库,zenity, moc, 用了这么多东西最后也就是个定时器-_-||。不过我想先告诉你的是为什么是它。这原因呢有两个,一个是之前看到有用户反应希望项目课有一些综合性稍强的内容,这个项目课就是了,结合了shell编程和C语言编程,C语言编程除了包含本身的内容还涉及到了如何使用外部库来实现我们想要的功能;这第二个原因 是,我自己需要一个这样的定时器啊,我要每周二中午12点的时候准时抢小米手机(抢了几次没抢到啊,就是因为时间没掐准,不够快),所以就想要一个定时器 了,我想的是除了要实现基本功能外还要求“看起来,高大上”。
二、功能介绍
既然我是要实现一个命令行的定时器,要想“高大上”,那就必须要用到命令行的图形库了,一开始想到的是ncurses,这就得完全用C语言来开发了,后来又想到可以用shell下的dialog(基于ncurses实现的命令行图形对话框,包含一些常用的构件)来完成一部分功能,比如设定时间的界面可以用dialog的timebox构件来实现,如下图
本想是不是可以用dislog实现全部我想要的效果,比如在设定时间之后,进入倒计时界面,类似下面的效果
这实际是tmux内建时钟效果。然后翻翻dialog的文档,发现连字体大小都没法设置,也无法设置构件内文本的显示位置,那就没办法了,不过 dislog底层就是基于ncurses来实现的,我也就用ncurses来实现倒计时显示的这个功能吧。最后实现的效果如下,是不是山寨得跟原版(tmux, ctrl+b t)一样。
这样就满足了嘛,当然不,我们还要再加点东西,让它像闹钟一样时间到放歌音乐如何,或者再弹个窗,免得我埋头工作忘了"正事"(抢手机),播放音乐我用moc(一个流行的命令行音乐播放器),弹窗用zentiy(基于gtk构件的简单弹出式对话框)
功能介绍完了,下面就让我们来实现吧
三、具体实现
1.使用dialog设定时间
这个功能在shell脚本中实现
我们创建了一个函数functionSetTime()
{
local c_hour=`date +%H`
local c_minute=`date +%M`
local c_time=`date +%H:%M:%S`
s_time=`dialog --stdout --title "Set Time" --time-format %H\:%M\:%S --timebox\
"Current t