純文字
作者:gugod 發佈於:最近似乎對於 GUI 上滿滿的冗余物件感到厭煩。或者說,GUI 本身就是一種能 將畫面上塞滿各種資訊的設計。多工作業系統,或許需要 GUI 方能完美發揮其 實力,但畫面上東西一多,無用的資訊也就必然變多了。有太多時候是設計者主 張「這裡要有個按鈕」、「那裡要有個圖示」,而使用者未必全數理解與同意。
無獨有偶,前同事 @jackdoe 似乎也是如此感受,幾周前發表了一則感嘆文:tty.txt。
我手邊隨身工作機是部裝著 macOS 的 mac 筆電,沒有能把 GUI 完全關掉,進 入 tty 模式工作的手段。但可以只開個 iTerm、Emacs,用來「模擬」純文字介 面的體驗。
於是我著手嘗試,在周末幾天,基本上只留 iTerm 與 Emacs 兩個視窗,並且都 開到全螢幕。試著讓所有事情都能在文字界面中完成。
寫程式自然是沒有問題,只要不寫 GUI 程式就行了(呃)
若是寫程式之外的,比方說閱讀、消磨時間等等。目前大致上是依賴 RSS / Atom / Usenet Newsgroup 為新資訊來源,SNS 的話目前只看 Twitter 與 Plurk,也都還能應付。
純文字介面的軟體,目前實際上有用的約是這幾項:
- Emacs :: 文字編輯器
- mutt :: email
- newsboat :: RSS/Atom 閱讀
- Gnus :: email + Usenet Newsgroup 之閱讀與貼文
- mpv :: 影音播放
- w3m :: 網頁瀏覽器(需要 HTTP Cookie 時。例:plurk)
- eww :: 網頁瀏覽器
- rainbowstream / oysttyer :: 看 twitter 與發推文
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 。