Linux下自制簡易番茄鐘

姓名:王懷帥? 學號:16040410035

轉(zhuǎn)載自:http://www.itdecent.cn/p/11c5ef5d8d42=有修改

【嵌牛導讀】:擴展其他功能,做一個更完美的番茄鐘軟件。

【嵌牛鼻子】:測試命令 編寫 Shell

【嵌牛提問】:為什么要在Linux環(huán)境下自制簡易番茄鐘?

【嵌牛正文】:

1. 前言

作為一個程序員,隨著年齡的增長,眼睛已經(jīng)不像年輕時候那么耐用了。之前 20 幾歲時還可以每天自學很多小時,凌晨 1 點睡,早上6 點起來。

請見程序員在簡書 | 關(guān)于我的法蘭西

不知不覺,小編馬上也快到而立之年了。近來覺得要好好養(yǎng)生了,因為程序員這個職業(yè),雖說很有意思,但對健康確實損害挺大。

可以參看我之前寫的幾篇文章:

程序員如何保持健康

程序員如何長壽 | 從CSDN大牛博主猝死想到的

程序員在法國 | "投資"健康,半年減13公斤

比如我們的眼睛,一天盯著電腦一般會超過 10 個小時(上班 7 小時 + 回家數(shù)小時)。

像我這樣做自媒體的,那回家還得寫文章、錄視頻、看書。再加上現(xiàn)在移動終端的興起,免不了看一下微信等,眼睛誠然傷不起也~

而且,作為程序員,久坐對腰部,頸部,等等都有損害。

因此,我迫切需要用一個類似番茄鐘的東西來幫我定時。每隔一段時間,提醒我離開電腦,站起來走一走,倒杯水,閉目養(yǎng)神。

我在公司里所用的操作系統(tǒng)是 Linux 發(fā)行版 Ubuntu,我就想能不能不安裝番茄鐘軟件 (網(wǎng)上一搜不少。有些是在線的,比如https://tomato-timer.com/,還有一些是瀏覽器插件),而自己用Shell 腳本來實現(xiàn)一個簡易的番茄鐘。

這樣我把這個 Shell 的路徑添加到 Path 環(huán)境變量中,就可以當成命令來執(zhí)行了,很方便。

2. 測試命令

既然要實現(xiàn)多少時間做什么,我們不禁想到之前在我寫的那課Linux探索之旅 | 第三部分第五課:延時執(zhí)行,唯慢不破中的 at 命令,可以用于延時執(zhí)行任務(wù)。

那么用 at 命令實現(xiàn)延時之后,做什么好呢?為了不影響其他同事,我們不能放一段音樂或視頻。

因此,最好是顯示一張圖片,而且是全屏顯示,這樣便于提醒自己:時間到了,該休息一下了。

我們可以去網(wǎng)上下載一張這樣的圖片:

保存為 protect_eyes.jpg(名字隨便?。?,然后把它放在隨便那個目錄里,比如我暫時放在家目錄中。

要顯示圖片,我們可以用feh這個圖片查看軟件。

所以我們可以來測試以下命令:

echo 'env DISPLAY=:0 feh -F ~/protect_eyes.jpg' | at now+1 minutes

解釋一下以上的命令:

echo :用于把單引號擴起來的命令作為要執(zhí)行的指令傳遞給 at 命令。

at now+1 minutes :表示在當前時間之后 1 分鐘執(zhí)行。

env DISPLAY=:0 :feh 命令需要指定 DISPLAY 環(huán)境變量,在 Linux / Unix 類操作系統(tǒng)上,DISPLAY 變量用來設(shè)置將圖形顯示到何處。

feh -F ~/protect_eyes.jpg :用 feh 來顯示 ~/protect_eyes.jpg 這張圖片。-F 參數(shù)表示「全屏顯示」圖片。

所以上面的命令表示:「在當前時間的 1 分鐘之后,用 feh 來全屏顯示 protect_eyes.jpg 這張圖片」。

我們按下回車鍵,執(zhí)行這句命令,1 分鐘之后,圖片被全屏顯示了。

3. 編寫 Shell

既然命令行得通,我們就編寫一個 Shell 腳本,把命令加進去即可。

關(guān)于 Shell,可以參看我寫的Linux探索之旅 | 第五部分第二課:一入Shell深似海,酷炫外殼惹人愛。

那么我們就用文本編輯器來創(chuàng)建一個 Shell 腳本好了,名字就叫 tomato_clock 好了 (tomato 是英語「番茄」的意思;clock 是英語「鐘」的意思),當然你可以起隨便什么名字,比如 pomodoro(番茄工作法):

vim tomato_clock

然后在里面寫入以下代碼 :

#!/bin/bash

echo 'env DISPLAY=:0 feh -F ~/protect_eyes.jpg' | at now+30 minutes

保存退出。我這里設(shè)置了 30 分鐘,你可以隨便設(shè)置延遲時間。

接著,給腳本加上可執(zhí)行權(quán)限:

chmod +x tomato_clock

再把這個腳本移動到我家目錄的 bin 目錄中,這個 bin 目錄是我自己創(chuàng)建的,里面包含了我自定義的一些腳本,而 bin 目錄的路徑已經(jīng)在 Path 環(huán)境變量中了:

mv tomato_clock ~/bin

之后,你就可以在隨便那個目錄中輸入

tomato_clock

來啟動一個番茄鐘了。按下回車,運行后會顯示:

雖然好像什么也沒顯示,但它已經(jīng)在運行了,

一個番茄鐘到點之后,就會顯示你自定義的圖片。然后你可以再啟動一個。

4. 總結(jié)

如果要堅持做程序員,那么請好好對待自己的身體。運動是最好的,推薦游泳。

at 命令可以方便地執(zhí)行延時任務(wù)。但 at 命令只能執(zhí)行某個(或某幾個)命令一次。如果你想讓任務(wù)定時執(zhí)行,那么你可以使用 crontab 命令,如Linux探索之旅 | 第三部分第五課:延時執(zhí)行,唯慢不破所述。

你可以優(yōu)化這個程序,比如加入取消延時任務(wù)的參數(shù);或者擴展其他功能,做一個更完美的番茄鐘軟件。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容