Linux下自制簡易番茄鍾

Linux下自制簡易番茄鍾

內容簡介


  1. 前言

  2. 測試命令

  3. 編寫 Shell

  4. 總結

1. 前言


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

請見 程序員在簡書 | 關於我的法蘭西 。

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

  • 程序員如何保持健康

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

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

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

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

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

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

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

2. 測試命令


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

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

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

Linux下自制簡易番茄鍾

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

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

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

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

解釋一下以上的命令:

  • echo :用於把單引號擴起來的命令作為要執行的指令傳遞給 at 命令。

  • at now+1 minutes :表示在當前時間之後 1 分鐘執行。

  • env DISPLAY=:0 :feh 命令需要指定 DISPLAY 環境變量,在 Linux / Unix 類操作系統上,DISPLAY 變量用來設置將圖形顯示到何處。

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

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

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

Linux下自制簡易番茄鍾

3. 編寫 Shell


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

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

vim tomato_clock

然後在裡面寫入以下代碼 :

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

保存退出。我這裡設置了 30 分鐘,你可以隨便設置延遲時間。

接著,給腳本加上可執行權限:

chmod +x tomato_clock

再把這個腳本移動到我家目錄的 bin 目錄中,這個 bin 目錄是我自己創建的,裡面包含了我自定義的一些腳本,而 bin 目錄的路徑已經在 Path 環境變量中了:

mv tomato_clock ~/bin

Linux下自制簡易番茄鍾

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

tomato_clock

來啟動一個番茄鍾了。

一個番茄鍾到點之後,你可以再啟動一個。

4. 總結


  1. 如果要堅持做程序員,那麼請好好對待自己的身體。

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

  3. 你可以優化這個程序,比如加入取消延時任務的參數;或者擴展其他功能,做一個更完美的番茄鍾軟件。

我是[謝恩銘](http://www.jianshu.com/u/44339a8a9afa),在巴黎奮鬥的軟件工程師。

[我的簡介](http://www.jianshu.com/p/e1c5835fee7d)

[我的經歷](http://www.jianshu.com/p/86c2cfe3b390)

熱愛生活,喜歡游泳,略懂烹飪。

人生格言:「向著標杆直跑」


分享到:


相關文章: