純文字

發佈於:

最近似乎對於 GUI 上滿滿的冗余物件感到厭煩。或者說,GUI 本身就是一種能 將畫面上塞滿各種資訊的設計。多工作業系統,或許需要 GUI 方能完美發揮其 實力,但畫面上東西一多,無用的資訊也就必然變多了。有太多時候是設計者主 張「這裡要有個按鈕」、「那裡要有個圖示」,而使用者未必全數理解與同意。

無獨有偶,前同事 @jackdoe 似乎也是如此感受,幾周前發表了一則感嘆文:tty.txt

我手邊隨身工作機是部裝著 macOS 的 mac 筆電,沒有能把 GUI 完全關掉,進 入 tty 模式工作的手段。但可以只開個 iTerm、Emacs,用來「模擬」純文字介 面的體驗。

於是我著手嘗試,在周末幾天,基本上只留 iTerm 與 Emacs 兩個視窗,並且都 開到全螢幕。試著讓所有事情都能在文字界面中完成。

寫程式自然是沒有問題,只要不寫 GUI 程式就行了(呃)

若是寫程式之外的,比方說閱讀、消磨時間等等。目前大致上是依賴 RSS / Atom / Usenet Newsgroup 為新資訊來源,SNS 的話目前只看 Twitter 與 Plurk,也都還能應付。

純文字介面的軟體,目前實際上有用的約是這幾項:

mpv 之啟動雖然是在 iTerm 內,但在播放影片時會跳個獨立視窗出來。由於其 UI 也算是精簡無比,所以就讓它過關。

讀 RSS / Atom / Newsgroup 這幾項功能都算是純文字介面基本能力了,基本上 已經很久以來都是這套設定,也不太需要另外調整。只是現在很多網站未必會提 供資訊源料,如果要持續追蹤,還得再靠像 fetchrss.com 這種第三方服務。

瀏覽器算是比較困難的,雖然目前是 w3m, eww 兩著混者用。但已經有不少網站 是沒開 javascript 就等於沒用的狀態,而有支援 javascript 的文字模式瀏覽 器似乎並不存在。故且就是... 基本上還算能用,碰到真的無法對付又不得不用 的網站,再轉去 Firefox。

看 Plurk 的話,必須是開手機版:

w3m -cookie https://plurk.com/m/

雖然會有點分不太清楚文章與文章的界線,但意外的,還算堪用。改用 eww 的 話也可以,而且還會顯示圖片(反而變成不純文字了)。

eww 這個 Emacs 中的瀏覽器,比我想像中的還要更好用一些。以前在 Emacs 中 的瀏覽器 w3 十分重而緩慢,算不上是能用。但 eww 與其核心元件 shr 算是又 快又還不錯,連一部份 CSS 顏色都有支援。如果是要臨時查幾個關鍵字,直接 M-x eww 後輸入關鍵字,就可以看到 duckduckgo 的搜尋結果。基本上也可以拿來 看 Ptt Web 版。

說起來,現在使用瀏覽器的一大目的,就是去消費那些滔滔不絕的 UGC -- 雖說 是 User-Generated content,但這名稱說不定已經不準確了。Youtuber 都早已 是一種職業別了,應該改說是 PGC -- Professional-Generated Content 比較 名符其實一些。

以消費 youtube 上內容為目的話,其實可以透過 youtube RSS 源料、配合 Newsboat 與 mpv 來完成。

youtube.com 其實一直都是有替每個公開頻道與公開播放列表提供 RSS 源,但 這方面的資訊只間接出在某官方文件之中。總之,youtube RSS 源的網址格式為:

https://www.youtube.com/feeds/videos.xml?channel_id=XXXXX
https://www.youtube.com/feeds/videos.xml?playlist_id=XXXXX

最後 XXXXX 的部分須以實際的 id 替代。實際的 id 可由網址取得。比方說這是個頻道頁面:

https://www.youtube.com/channel/UCGbpr46Y8aDyO2s_W_3SfkA

對應到的 channel_id 則為 UCGbpr46Y8aDyO2s_W_3SfkA 這字串。若為播放列頁面:

https://www.youtube.com/watch?v=FcnucACc1Ig&list=PLmAiqVA08klEOkq3aikIi4wYnH6V6ixpL

對應到的 playlist_id 則為 list 參數之值 PLmAiqVA08klEOkq3aikIi4wYnH6V6ixpL

而 mpv 也可以透過 youtube-dl 來直接播放所指定的 youtube 網址:

mpv 'https://www.youtube.com/watch?v=q_8o-LsObLI'

就算這網址是直播,也能播放。

這麼一來,就能用 newsboat 去直接訂閱 youtube 頻道,並且設定一鍵播放。 這一連動需要稍微寫點 shell script。

首先將 newsboat 設定中的 "browser" 改掉:

browser "~/bin/newsboat-browser.sh $u"

~/bin/newsboat-browser.sh 的內容如下:

#!/bin/bash
url=$1
if [ ${url:0:32} == 'https://www.youtube.com/watch?v=' ]; then
    mpv $url
else
    w3m $url
fi

這 shell script 基本上是先判斷參數是否為 youtube.com 影片網址,是的話 就用 mpv 去開,不然就用 w3m 開。

如此這般設定完畢之後,在 newsboat 中就能以 o 鍵來開 youtube 影片了。

若是依某 Youtube 官方文件匯出個人訂閱列表的 OPML 後,也可以直接再 將此 opml 檔案整份匯進 newsboat 內。

結果,與其說是「純」文字界面,不如說這只是試著將 GUI 的使用減到最小程 度的一種嘗試。嘗試了好幾天下來,意外的發現基本上各種需求都還算可以對付。 可惜現在 Slack 的 IRC Gateway 已經沒了,若是還在,顯然我也會改用 IRC client 去上 Slack 。