-- 這兒的博文已再也不更新。linux
-- fbterm
和jfbterm
運行在覈心控制檯上,是一種 shell 程序(相似於圖形界面下的終端模擬器),依靠 freetype
和 fontconfig
來提供基本的字體渲染,不須要 X 服務也能夠支持基本的中文顯示。固然了,fbterm 的功能不只僅只有這點:若是你打算使用它並但願能得到GUI
下終端模擬器般的體驗,那還要嘗試對fbterm
終端的字體等進行調整和配置並搭配tmux
。不只如此,若是您須要的話,還能夠在上面進行播放多媒體、輸入中文、瀏覽網頁等工做……c++
-- 但遺憾的是:控制檯版本的網絡瀏覽器功能還不夠完善。它們還不提供某些圖形界面的網絡瀏覽器的某些功能,並且 Arch Linux 的官方源中已經再也不包含它們了(多是由於開發已經中止或者開發進度滯後了,這個項目貌似已經從 google code 上移除了),所以要使用它們只能選擇從 AUR 上或者從其它地方獲取源碼後手動編譯。git
-- 尷尬的是:雖然我從AUR
上獲取到了fbterm
的源代碼並能成功構建運行,但最終卻發現位於 AUR
上的 fbterm
也不是很友好(它會讓 Linux Console 在運行了 fbterm 以後就會進行某些環境的自動配置,好比設定終端類型(即設置 TERM 變量)爲 fbterm(理論上 fbterm 已經支持 256 色,而 Linux Console 僅支持 16 色),但這並非我想要的結果或者說是那些基於 ncurses 庫的僞圖形界面程序(好比 mocp 和 alsamixer 以及 mc,恰恰它們又是我所喜歡的幾個程序)不但願的,它們都很是依賴於終端類型的設定,在沒有 X 環境時它們一般但願終端類型是 linux,若是終端類型被設置成了 fbterm,它們雖然能夠正常啓動可是界面顯得有些凌亂甚至不能正常響應鍵盤輸入(儘管這能夠經過臨時設定 TERM 來更改,但每次都要這樣讓我以爲很厭煩)。除了 vim 以外。github
-- 一個好消息是:不論是使用位於AUR
上的仍是從其它地方編譯而來的,我都發現:若是在fbterm
上運行了 tmux
,那麼終端類型會被改變爲 screen,不只上面的幾個問題直接迎刃而解,貌似還多了一些特性(除了少數程序運行不正常,大多數均可以正常運行並具備不錯的顯示)。所以,若是你打算使用tmux
,那麼手動編譯就再也不是惟一選擇……shell
fbterm 依賴:vim
fbterm 在編譯時不能使用版本太新(fbterm 1.7 及如下的版本用 6.1 及以上的 gcc,g++ 編譯貌似會失敗)的編譯器進行編譯,某些特性在新版本的編譯器中可能已經被取消了。瀏覽器
若是你的系統中存在多個不一樣版本的編譯器,那麼能夠在手動編譯時經過 configure 腳本從命令行上傳遞變量給 make 來告訴 make 在編譯時到底使用系統中的哪個編譯器來做爲實際編譯。容許傳遞的變量和全部的選項能夠經過源碼包下的 ./configure --help 來獲得:bash
一些對 make 有效的環境變量:網絡
在個人Arch Linxu
系統上,gcc 版本已經是 >= 6.1,所以很天然的,編譯 fbterm 1.7 沒有成功。框架
我嘗試在編譯過程指定了在其它系統上已經編譯好的編譯器,版本稍舊(若是是在 Arch Linux 上,你能夠到它的存檔庫裏下載舊版本的 gcc 及其依賴包而後嘗試將 gcc 降級 1~2 個版本( < 6.1 >= 4.9)後再編譯,但這種方式並不推薦,由於若是你沒有在編譯完成後及時恢復 gcc 的版本到原來的版本,那些依賴於特定編譯器庫的應用可能都沒法啓動而致使整個系統都沒法啓動……)。
tmp=/usr/local/tmp-tools/gcc-4.9.2/bin CC=$tmp/gcc CXX=$tmp/g++ \ ./configure && make -j5 && sudo make install
默認安裝好未作任何配置的 fbterm 直接用普通用戶運行可能會失敗(雖然可使用根用戶來運行,但這並不推薦),fbterm 已經提供瞭解決方案並對其作出瞭解釋:
fbterm 在運行時須要臨時使用根用戶的權限來存取內核(聽說這是爲了映射某些鍵),也許給 fbterm 設置 uid 位是最合適的方法,就像 passwd 程序同樣。否則以普通用戶運行的 fbterm 會收到一個 can't change kernel keymap.....同樣的消息,這時你也許會發現 fbterm 的某些快捷鍵也用不上,好比
fbterm用於新建終端窗口的 Ctrl+Meta+C 和切換終端窗口的 Shift ←,Shift →)等。
# 普通用戶須要加入 video 組纔能有打開 fbdev 的權限。 gpasswd -a $USER video # fbterm 設置鍵盤映射時須要臨時具備存取內核的權限。 chmod u+s $(which fbterm)
若是是編譯的話,fbterm 的 terminfo 文件可能也要放到合適的位置(好比 /usr/share/terminfo/f/ $HOME/.terminfo/f/ )下。
# fbterm 的 terminfo 文件 fbterm 須要放到合適的位置。否則在 fbterm 下,某些應用(好比 vim)可能不會正常工做。 # 若是你在系統中沒有找到 fbterm 的 terminfo 文件,那能夠嘗試手動編譯: # 首先進入 fbterm 源碼下的 terminfo 目錄中: # 除非以根用戶執行,不然 tic 會將編譯出來的 terminfo 文件放到用戶級目錄中($HOME/.terminfo/f/),若是要編譯的 terminfo 文件已經存在了將會致使 tic 命令執行失敗。 tic fbterm
能夠經過傳遞參數給 fbterm 或者在配置文件中定義選項來更改它的行爲。注:配置文件不是 shell 腳本,shell 指令無效。
============ file ~/.fbtermrc ===========
font-names=DejaVu\ Sans\ Mono\ for\ Powerline:Style=Bold font-size=19 # ...... color-foreground=7 color-background=0 text-encodings=UTF-8 cursor-shape=1 # fbterm 光標形狀 cursor-interval=0 # fbterm 光標閃爍時差,0 即爲不閃爍 input-method=fcitx-fbterm # fbterm 輸入法 # .....
fbterm
基本組合鍵列表若是你以爲在 fbterm 上使用背景圖片能增長一些點綴的話,那就給 fbterm 設置背景圖片。不過在使用背景圖片以前,你可能須要先安裝 fbv。
假如你但願每次啓動 fbterm 時使用不一樣的背景圖片,那麼背景圖片的路徑可使用位置參數的形式傳遞給 fbv),若是寫成了 shell 腳本又沒有設置 fbterm 在登陸 tty 時自動啓動的話。若是 X 用的少,shell 又是 Bash,那麼能夠選擇在登陸 tty 時自動進入 fbterm,若是你但願如此的話。
下面的技巧來源於 Wiki:
============== file: ~/.bashrc ===============
[ "$TERM" = "linux" ] && echo -en "\e]P7ffffff" if [[ `tty` = \/dev\/tty[1-6] ]] && type fbterm &> /dev/null;then tmp=/home/external echo -en "\e[?25l" #hide cursor fbv -ciuker "$tmp/usr/share/backgrounds/fbterm.jpg" << EOF q EOF shift unset tmp export FBTERM_BACKGROUND_IMAGE=1 LANG="zh_CN.UTF-8" fbterm fi
fcitx-fbterm?
yong?
ibus-fbterm?
若是你但願在 fbterm 上輸入中文,那麼安裝一個 fbterm 中文輸入法並激活它就是必要的。
fcitx-fbterm
,首先進入源碼目錄,開發者推薦在單獨的目錄中進行編譯:mkdir build;cd build cmake .. && make && sudo make install
若是你已經運行桌面環境而且 fcitx 在桌面環境自動啓動的條目中,那能夠直接經過 Ctrl Space(這能夠在 fcit 配置中更改)切換(若是不能運行,能夠先嚐試執行一遍 fcitx-fbterm-helper 腳本)了。
若是你沒有運行 X 或者是沒有安裝 X 可能須要前後臺啓動 fcitx 而後直接使用 Ctrl Space 切換。然而不幸的是,搜狗拼音 for Linux 在 fbterm 上使用時出來的候選框文字全是亂碼(其它的 fcitx 框架輸入法(如 fcitx-googlepinyin,fcitx-sunpinyin 彷佛並無發現這個問題))的問題一直沒有解決。
LANG="zh_CN.UTF-8" fcitx &>/dev/null & # 屏蔽輸出與錯誤消息並在後臺運行 fcitx,一些 Linux 發行要求同時啓動 dbus。
另一個候選是小小輸入法(yong)。安裝與配置都不是很難,雖然能正確顯示候選文字也能輸入漢字但仍是存在 bug。
你也許會但願在那上面播放多媒體,但遺憾的是我也只曉得用mocp
或者cmus
能夠播放音頻;若是您想要在那上面播放視頻(哦,天哪!我都不知道你爲何會有這麼bt
、恐怖而又無聊至極的想法),那我就沒什麼辦法了(我也不想產生這種想法),可是說真的:個人確見過別人在那上面看電影……
jfbterm 和 fbterm 是一類東西,不過不管是從 AUR 上構建安裝仍是使用起來都存在着問題(一個由於依賴而從網站上下載的內核包可能會通不過 gpg 檢查致使 jfbterm 編譯沒法開始,而實際只用到了其中的部分代碼)……
ljca 2017-?