WTF——碼農專屬終端的儀表板
之前蟲蟲的文章中介紹過很多終端軟體,也介紹過分屏神器Screen和Tmux但是畢竟他們使用配置有一點點的難度。那麼有沒有一款簡單易用,介面美觀的終端儀表板程式,實現各種所需資訊的展示呢,答案是肯定的,那就是本文我們要介紹的另一個神器WTF。

WTF——碼農專屬終端的儀表板
WTF是一個簡單,易於配置的終端資訊儀表板。使用Golang語言編寫的,使用簡單的一個YAML配置和各種模組就可以從幾個不同的源中提取我們所需資料。這些模組包括系統資訊、安全資訊、電源資訊、天氣、Git問題跟蹤、國際時間,谷歌表格以及更多內容。也能實現互動式窗格,進行操作。
安裝
WTF的安裝很簡單,可以直接安裝下載適合你作業系統(Windows、Linux、MacOS
)二進位制包,下載解壓就可以用。也可以下載原始碼編譯安裝,安裝方法如下:

WTF——碼農專屬終端的儀表板
執行
安裝後執行很簡單隻需輸入wtf就可以,wtf會自動載入預設的配置檔案~/.wtf/config.yml的模組並渲染出終端介面,介面資料也按照配置的模組中設定的重新整理時間自動重新整理介面數值。

WTF——碼農專屬終端的儀表板
上面是我做了點簡單配置後的終端儀表盤介面,顯示了世界時間、系統版本資訊、安全項、配置檔案內容和天氣以及Hacker 新聞客戶端(資料沒有加載出來)。
WTF配置
wtf的配置預設是~/.wtf/config.yml,該檔案為YAML配置的格式,儀表盤總所有顯示和資料項都是基於該配置檔案,所以如果要真正的使用好WTF就必須熟悉該配置檔案。

WTF——碼農專屬終端的儀表板
上面是我~/.wtf/config.yml預設配置部分,我們以此為例說明WTF配置。
屬性配置
屬性配置是WTF配置的第一部分,通過配置熟悉可以設定WTF全域性性的顏色、背景色、邊框等。下面列出常見的屬性:
colors.background
繪製應用程式背景的顏色。使用此顏色來設定終端背景色顏色。注意模組中如果設定了背景色,會覆蓋這個全域性設定
值:支援X11的所有顏色名稱。
colors.border.focusable
繪製可接受鍵盤焦點的小部件邊框的顏色。
值:支援X11的所有顏色名稱。
colors.border.focused
繪製當前具有鍵盤焦點的視窗小部件邊框的顏色。
值:支援X11的所有顏色名稱。
colors.border.normal
繪製無法接受焦點的小部件邊框的顏色。
值:支援X11的所有顏色名稱。
grid.columns
一個數組,定義所有列的寬度。
值:詳見下一部分網格設定部分
grid.rows
一個數組,定義所有行的高度。
值:詳見下一部分網格設定部分
openFileUtil
用於開啟檔案或URL的命令
refreshInterval
UI重新整理資料的頻率。
值:正整數,0..n。
term
可選屬性
使用這個屬性設定自定義值的執行終端。
注意:如果為此設定提供了無效值,程式會報"terminal entry not found"錯誤而崩潰。
值:任何有效的終端型別(比如:vt100,xterm,xterm-256color,ansi等)。
終端網格佈局
全域性設定部分除了 colors 部分外,就是grid部分的網格佈局配置,以蟲蟲的設定頂為例:
grid:
columns: [40, 60]
rows: [7, 13, 8, 4]
網格設定中的數字表示每個塊的字元尺寸。預設配置是兩列,寬度分別為40個字元和60個字元寬。共有4行(排),行的寬度分別為7,13,8,4個字元高。

WTF——碼農專屬終端的儀表板
模組的佈局則是通過相對的數值通過4個引數類設定位置和大小的:
top: 2 // 上面從第3行開始,即第3個位置
left: 0 // 左邊從第1列開始,即相對第1列的位置
height: 2 // 高度為兩個格子,即佔第3和4行
width: 1 // 寬度為兩個格子,即第1列的位置
該佈局就是詳見上面的上面的示意圖,注意top和left的位置都是從0開始的。
我喜歡在儀表板上看到當天的天氣。有兩個天氣模組可供選擇:天氣,只顯示文字資訊,和漂亮天氣,豐富多彩,在顯示屏中使用基於文字的圖形。
WTF常見模組介紹
當然WTF最重要的就是模組,這是所有內容的來源,它自帶一些很實用的模組,當然如果你熟悉golang和WTF的結構,你也可以自己DIY需要的模組,這也是開源軟體的優勢之一。
天氣外掛
首先是我們最常用的天氣外掛,截圖如下:

WTF——碼農專屬終端的儀表板
典型配置如下:
prettyweather: enabled: true position: top: 0 left: 0 height: 1 width: 1
Bittrex
使用Bittrex獲取加密貨幣市場的最新24小時摘要。

WTF——碼農專屬終端的儀表板
典型配置:
bittrex: enabled: true position: top: 1 left: 2 height: 3 width: 1 refreshInterval: 5 summary: BTC: displayName: Bitcoin market: - LTC - ETH colors: base: name: orange displayName: red market: name: red field: white value: green
相似模組還有Blockfolio

WTF——碼農專屬終端的儀表板
世界時間
可以根據你時區城市來,獲取當前的時間,比如:

WTF——碼農專屬終端的儀表板
典型配置:

WTF——碼農專屬終端的儀表板
CmdRunner
這個模組是把一些cmd命令的執行放到儀表盤中顯示,比如我們檢視網路資訊:

WTF——碼農專屬終端的儀表板
典型配置:
args: ["-ie"] cmd: "netstat" enabled: true position: top: 0 left: 0 height: 1 width: 1 refreshInterval: 30
args陣列用來設定命令的引數,cmd用來設定命令,如果是引數有值的引數比如curl -I 網址,agrs陣列配置為["-I", "網址"]。
Git資訊
該模組可以顯示git倉庫的資訊,效果如下:

WTF——碼農專屬終端的儀表板
典型配置如下:
git: commitCount: 5 commitFormat: "[forestgreen]%h [grey]%cd [white]%s [grey]%an[white]" dateFormat: "%H:%M %d %b %y" enabled: true position: top: 0 left: 3 height: 2 width: 2 refreshInterval: 8 repositories: - "/Users/chris/go/src/wtfutil/wtf"
githbub
截圖如下:

WTF——碼農專屬終端的儀表板
典型配置:
github: apiKey: "3276d7155dd9ee27b8b14f8743a408a9" baseURL: "" enabled: true enableStatus: true position: top: 2 left: 3 height: 2 width: 2 refreshInterval: 300 repositories: wesker-api: "UmbrellaCorp" wtf: "wtfutil" uploadURL: "" username: "wtfutil"
類似的模組還有gitlab:

WTF——碼農專屬終端的儀表板
谷歌日曆

WTF——碼農專屬終端的儀表板
典型配置:
gcal: colors: title: "red" description: "lightblue" highlights: - ['1on1|1/11', 'green'] - ['apple|google|aws', 'blue'] - ['interview|meet', 'magenta'] - ['lunch', 'yellow'] past: "gray" conflictIcon: "" currentIcon: "" displayResponseStatus: true email: "[email protected]" enabled: true eventCount: 12 multiCalendar: true position: top: 0 left: 0 height: 4 width: 1 refreshInterval: 300 secretFile: "~/.config/wtf/gcal/client_secret.json" showDeclined: true withLocation: true
電源資訊Power
當使用膝上型電腦時候,顯示你當前的電源資訊也是大有裨益的,WTF也內建了這樣模組那就是Power:

WTF——碼農專屬終端的儀表板
典型配置:
power: enabled: true position: top: 5 left: 0 height: 2 width: 1 refreshInterval: 15
檔案顯示模組Textfile
可以模組,可以在窗格中顯示檔案內容,比如你的程式原始碼,例如:

WTF——碼農專屬終端的儀表板
不過美中不足的是還不支援語法高亮,不過這也是一個hack點,同學們可以在基礎是上做個顯示原始碼的模組。以上示意圖的典型配置:
textfile: enabled: true filePath: "git/git_repo.go" position: top: 0 left: 0 height: 2 width: 1 refreshInterval: 15
以上就是我們列舉了常見一些模組,更多的資訊可以參考官方模組,或者自己DIY個性化的模組。
總之,WTF是一個非常棒的終端儀表盤顯示工具,非常適合那些需要在一個螢幕上檢視大量不同來源的資料的人。注意這個模組可以和screen和Tmux配合使用把自己的終端介面共享給其他人。