2011年8月6日 星期六

Framebuffer console 完全生存指南


Framebuffer console 完全生存指南(以下資料基於2011年六月現役軟體測試並推薦)
前言:For you or not

顯示與輸入中、日文

多媒體相關

文字編輯相關

檔案管理器

結語


前言
請注意本文不適合以下讀者:
1.不用某M公司的窗戶以外作業系統者
2.沒有圖形介面就覺得電腦壞了、還想用滑鼠控制游標把它拖進垃圾桶者
3.完全沒有UNIX基礎者

本文可能推薦給以下類型讀者:
1.看圖形介面看膩了、不管水果牌、M牌你都覺得不再充滿刺激
2.打算用沈浸式學習UNIX
3.已經有framebuffer、但是覺得好像不夠實用者。
4.由於第一點延伸、相信以後最潮、最夯、最超爆干帥的就是指令介面user者
5.恨透了慢吞吞的開機、想要十秒就上的少壯派(?
本文將著重在如何應用framebuffer處理日常生活應用,包含看圖、看影片、聽音樂、閱讀PDF文件、製作投影片、文件、檔案管理等應用、你會發覺沒了圖形介面、卻少了開機時間、多了生產力、可用記憶體,看到開完機只用了30MB左右記憶體可說是箇中樂趣無窮!
(開發環境討論包含編輯器、編譯器、debugger等不在本文討論範圍內、相信其實大家也很熟、通常不過就Emacs/VI、GCC跟GDB而已、相關文件也很多、與本次想要討論的生活應用比較脫節)
關於Framebuffer介紹跳過、請自行wiki。 XD

 對於設置您手上的Linux kernel使其支援Framebuffer者、如果您的核心是2.6.37以後建議可以參照KMS設置方法、建議可以參考Gentoo的三篇各自關於AMD/ATIIntelnVidia的說明。比較舊的請參照vesafb或uvesafb等方式。在此也不多贅述。


顯示與輸入中、日文:
首先這是個頗拐彎抹角的問題、也是這個問題讓曾經在大學時野心勃勃的孫某放棄了立志終端機為家的野心。首先大家應該要知道核心裡面不會內建多國語言字體。因此需要userspace的程式來輔助render多國語言的各類文字。(在往下細讀以前您會需要有合適的相關字體安裝在您的系統上、大多字體會放在/usr/share/fonts底下、如有意外請按照您的套件進行安裝、並建議經過X11測試顯示。)
1.FBTerm
本文中使用的userspace終端機程式、經測試可以正確無誤顯示中日文。
2.UCIMF
請注意完整安裝ucimf-chewing與ucimf-openvanilla、加上openvanilla-modules的日文cin table、最後加上fbterm_ucimf,你就準備好上路了! 首先、建議你先在自己的home目錄底下、準備好.fbtermrc的設定檔,其中大部分的人都會想更動的就是font-name與font-size,孫某依照個人習慣設定為
font-names=Monaco
font-size=16
可以選擇的字體清單你應該可以透過fc-list這個指令查到。UCIMF的設定可以透過ucimf-start進行、請記得選擇"hiragana.cin" "katakana.cin" "nippon.cin"等已支援完整的平假名、片假名與日文漢字輸入。 啟動fbterm的時候可以用這行: LC_CTYPE="en_US.utf8" fbterm -i fbterm_ucimf 請fbterm一起啟動ucimf、預設是Ctrl+Space就可以開始輸入了。




多媒體相關:
由於framebuffer可利用每個像素、所以也不用在擔心得像是沒有framebuffer的終端機看個圖片影片還要用ASCII code來排。

看圖:fbvfbi
請直覺的用fbv或fbi參數加上要瀏覽的檔案即可。fbv如果遇上太大的檔案不想慢慢捲動來看的話可以用-f或-k來fit螢幕大小。

閱讀PDF文件:
通常可以用fbi所附得fbgs即可、但是一想到他跟fbv功能有所重複、機器上又剛好有裝imagemagick﹍所以利用imagemagick也能轉換pdf成圖片的功能寫了以下的小script:
#!/bin/bash
basename=`basename "${1}" .pdf`
echo "basename is $basename"
convert -density 150 "${1}" "$basename.jpg"
export IFS=$'\n'
for i in `ls $basename*.jpg`; do
fbv "$i";
done
rm $basename-*.jpg
取名直覺一點叫fbpdf、就可以呼叫fbv看轉換過的圖檔﹍翻頁?你可以當作作業回家練習一下、看看吃到什麼按鍵叫他把i往回遞減或遞增即可(其實我在耍懶﹍)

影片播放:
目前已知mplayer, mplayer2(mplayer的fork), XINE, VLC等都有支援fbdev輸出、但是想當然爾、這裡沒有官方驅動介入、不能期待硬體加速解碼。個人測試目前是mplayer2播放的流暢度較mplayer佔上風、兩方參數應該沒差。
以mplayer2為例、要求輸出到fbdev請加上-o fbdev或-o fbdev2。要求全螢幕最理想是用-fs -zoom這個方式、支援比較好的聽說會自動拉全螢幕、如果你命不太好(誤)請自行用-vf scale=<水平像素>:<垂直像素>來達成、萬一很不幸這樣軟體scale出來的全螢幕會lag的話、建議加上-sws 4參數代表使用運算負擔較低的nearest neighbor來取代預設的bilinear scaling。
HD影片會不會播不動?根據孫某手上這台倒楣鬼ThinkPad Edge 13搭載的Turion Neo L625+780G來看、搭配mplayer2內附支援multithread的ffmpeg可以安定播放720P(包含scale到全螢幕)、播不動1080P也好像沒差、畢竟解析度才1366x768而已OTL

補充:個人特製mplayer2播放用bash script
為了要達成自動zooming與套用習慣的參數。只有mplayer者可以直接把全部mplayer2改成mplayer、請先打開設定幾個基本變數:
1. PLAYERARGS:mplayer/mplayer2的參數設定、請自行依照mplayer/mplayer2的男人(man)設置、本script中有個人習慣常用參數、可以由修改這些參數開始出發。
2. NATIVEWIDTH&NATIVEHEIGHT:使用螢幕的長寬參數。(預設1366, 768)
3. MINIMUMHEIGHTTOZOOM:進入全螢幕最低的影片縱向解析度要求、比這低的「不會」拉成全螢幕,避免傷眼(?

修完以後丟在/usr/bin/之類的地方、以後播放就方便多了。

音樂播放:MOC:music on console


當初剛看到這軟體一整個就是瞠目結舌、心想:真的假的有這種專為console打造的播放軟體啊﹍
實際一用發覺介面直覺用選單控制、有EQ支援、有播放清單編輯、tag顯示、透過ffmpeg支援了大部分常見的格式、也支援ogg vorbis、musepack、flac、aac等。一應俱全令人讚嘆不已!硬要說有什麼小缺點的話、大概就是得背點按鍵就是了。詳細請按"?"求助慢慢適應吧~





文字編輯相關:
如果您還不會用任何一個文字編輯器、如Emacs或Vi的話,您需要迫切學會的就是一個文字編輯器。這裡的文字編輯器不比圖形介面下的kwrite, gedit的親和。相反的、您可能會需要記得大量的組合鍵或是指令。但是如果您願意潛心學習的話、您或許會發現「寫程式/文件/投影片竟然手完全不用離開鍵盤去握滑鼠」的成就感與生產力是非常令人滿足的。

投影片、文件編輯:LaTeX
孫某想其實還沒有提起、很多人(尤其是學術界出身者)就已經想起它的惡名昭彰的大名!
孫某想這廝文件特多、也不需讓敝人班門弄斧,普通文件推薦江老師的介紹。如果是投影片建議可以安裝latex-beamer、配合其說明服用。配上剛剛閱覽pdf的方法就可以一邊編輯一邊瀏覽了才對。
而在Linux上有tetex或tex live等選擇,關鍵字已經附上請大家回各自套件調查如何安裝了。



檔案管理器:MC:midnight commander

MC跟MOC一樣也是讓孫某一摸就上手的好東西。介面很樸實就像是傳統FTP軟體一樣的左右兩個column、可以在兩邊交換操作。一開始初學者最容易惱羞的地方:連help都不知道怎麼查、明明底下有個1[Help]確不知道怎麼觸發他(如果沒有GPM尤其容易這樣﹍),底下那一行依照1-10是由F1-F10對應觸發、上面的menu是用F9觸發。
其中大多人自然會有疑問的地方就是:「我選擇一個檔案以後、誰會成為預設的處理程式呢?」請選擇上面menubar的"command"-&amp;amp;amp;amp;amp;amp;amp;gt;"Edit extension file"、就會叫出一串長長的rules、您就可以依照副檔名編輯open=跟view=呼叫的命令即可。萬一看不懂副檔名寫法的話建議請去K一下regular expression。


結語:對!我有病!
不知道是孫某孤僻病發作、還是想要出門用電腦比較帥、或是又想強化個人identity之類等奇怪原因、花了約快一週陸陸續續摸出了這些拾人牙慧的心得。當然還是要感謝這些FOSS的作者們,也要期許自己早點能夠有所回饋。 如果您也有想在framebuffer完成的生活應用(別跟我提遊戲了﹍這裡連OpenGL都沒得跑啊)沒有提及、竭誠歡迎您一起討論。

後記:UCIMF與nippon.cin打架﹍要五毛(一個字符)給一塊(一個字符加一串數字)

修正一下、目前ucimf沒有吃anthy、openvanilla-modules給的nippon.cin table直接用會在ucimf輸出的時候一起輸出除了想要的字符以外、會多一個數字在後面。因此改了一份移除chardef第三個欄位的cin table供取用。
nippon-kai.cin




技術難度:3.5顆星

4 則留言:

  1. 您好

    很實用的的文章, 想請教您, 文章中提到 "完整安裝ucimf-chewing"
    請問如何安裝 chewing,
    我一直找不到方法
    感謝

    回覆刪除
    回覆
    1. 您好,很高興還有人對本文內容有興趣QQ

      其實最近我比較推薦的是改用UIM、原因是因為UIM同時有X的frontend(uim-xim)與終端機的frontend(uim-fep)、如果你也有用X環境的話便不需要再多裝另一個IM system。除此以外UIM設置中日文輸入也相對比較輕鬆,你只要另外再補上uim-chewing與anthy之後、跑uim-module-manager --register anthy chewing註冊這兩者即可,執行時只需要在fbterm環境執行uim-fep就可以看到底下出現一條輸入法空間(好像以前的倚天?)

      如果有不順手的地方的話、你可以直接修改.uim的設定、或是折衷一下改用X環境的uim-pref-qt4或uim-pref-gtk來修改快速鍵與開關輸入法等細部行為,一樣會套用在uim-fep的狀況下。

      希望這些簡略的步驟能夠幫上忙,如有其他疑問歡迎再來討論

      刪除
  2. 您好,
    謝謝您的建議,我試裝了 UIM , 可是安裝過程沒發現 uim-chewing 的套件, 請問邀如何安裝?

    回覆刪除
    回覆
    1. 您好、先歡迎您再次來訪,
      關於如何安裝uim-chewing、這方面由於大部分我知道的套件都沒有提供官方提供的package、應該是要您手動自行編譯安裝的,不過好消息是過程不會太困難、以下官方的連結有提供完整的說明: https://github.com/chewing/uim-chewing
      如果您使用的是*ubuntu的話、請先依照官方說明安裝編譯所需的基本軟體:https://help.ubuntu.com/community/CompilingEasyHowTo

      歡迎有疑惑再來討論。

      刪除