中文的locale在tty下查看以及輸入中文一直是個頭疼問題。FbTerm 是一個使用 frame buffer 設備或 VESA 顯卡的終端模擬器,在Ubuntu下可與ibus或fcitx配合使用,實現中文輸出和輸入。 php
附件:
文件註釋:
console截屏
screen.png [ 51.09 KiB | 被瀏覽 10629 次 ]
在Ubuntu下安裝和使用fbterm虛擬控制檯: linux
1 安裝v86d實現控制檯下vesa輸出 git
代碼:
$ sudo apt-get install v86d
爲了方便你查看顯卡可用的輸出模式,能夠安裝hwinfo github
代碼:
$ sudo apt-get install hwinfo
$ sudo hwinfo –framebuffer
這兩個包在下面的腳本中會自動安裝,若是你已經安裝了,能夠無視。 shell
2 配置framebuffer。修改/boot/default/grub,在內核啓動選項中加入framebuffer輸出和分辨率的設置,在intramfs的模塊中加入vesa的framebuffer及其設置,在intramfs的開機splash配置中開啓framebuffer(可選)。 ubuntu
以上兩個步驟很是重要,是能正常使用fbterm的基礎,而且能夠解決Ubuntu安裝Nvidia二進制驅動後grub、開機動畫和控制檯分辨率太低的問題。下面這個腳本能夠自動完成上面這兩個步驟的全部配置工做(感謝D0rkye): vim
Syntax
: [
Download
] [
[url=]Hide[/url]
] [
[url=]Select[/url]
] [
[url=]Expand[/url]
]
Using bash Syntax Highlighting
#!/bin/bash
# ———————————-
# Author: D0rkye
# Homepage:
http://d0rkye.zsenialis.com/
# Most code probably by kyleabaker:
http://kyleabaker.com/2010/07/11/how-to
… ot-screen/
#
# Fix for Ubuntu 11.04, for BURG, and some extra bloat by Paolo Bernardi (
http://paolobernardi.wordpress.com/
)
# ———————————-
# Usage: install_if_not_installed package_name
function install_if_not_installed
{
PACKAGE=」$1″
INSTALLED=$(dpkg -L 」$PACKAGE」 > /dev/null 2>&1 && echo OK || echo KO)
if [ "$INSTALLED" == "KO" ]
then
sudo apt-get install 」$PACKAGE」 -y
fi
}
# Usage: contains regexp file
function contains
{
REGEXP=」$1″
FILE=」$2″
grep 」$REGEXP」 」$FILE」 > /dev/null && echo OK || echo KO
}
install_if_not_installed v86d
install_if_not_installed hwinfo
sudo hwinfo –framebuffer
echo 」—————————————————————」
echo 」Please enter the best resolution from the list above」
echo 」It usualy looks like this >>Mode 0×0323: 1024×768 (+4096), 24 bits<<」
echo 」And you have to enter it like this >>1024×768-24<<」
echo 」—————————————————————」
read resolution
sed ’s/GRUB\_CMDLINE\_LINUX\_DEFAULT\=\」quiet\ splash\」/GRUB\_CMDLINE\_LINUX\_DEFAULT\=\」quiet\ splash\ nomodeset\ video\=uvesafb\:mode\_option\=’$resolution’\,mtrr\=3\,scroll\=ywrap\」/g’ /etc/default/grub > ./newgrub
sudo cp -f ./newgrub /etc/default/grub
rm ./newgrub
sed ’s/GRUB\_CMDLINE\_LINUX\_DEFAULT\=\」quiet\ splash\」/GRUB\_CMDLINE\_LINUX\_DEFAULT\=\」quiet\ splash\ nomodeset\ video\=uvesafb\:mode\_option\=’$resolution’\,mtrr\=3\,scroll\=ywrap\」/g’ /etc/default/burg > ./newburg
sudo cp -f ./newburg /etc/default/burg
rm ./newburg
sed ’s/\#GRUB\_GFXMODE\=640×480/GRUB\_GFXMODE\=’$resolution’/g’ /etc/default/grub > ./newgrub
sudo cp -f ./newgrub /etc/default/grub
rm ./newgrub
if [ "$(contains uvesafb /etc/initramfs-tools/modules)" == 'KO' ]
then
sudo echo 」uvesafb mode_option=$resolution mtrr=3 scroll=ywrap」 | sudo tee -a /etc/initramfs-tools/modules
fi
if [ "$(contains FRAMEBUFFER=y /etc/initramfs-tools/conf.d/splash)" == 'KO' ]
then
echo FRAMEBUFFER=y | sudo tee /etc/initramfs-tools/conf.d/splash
fi
#sed ‘s/GRUB\_CMDLINE\_LINUX\_DEFAULT\=\」\(.*\)vt\.handoff\=7\(.*\)\」/GRUB\_CMDLINE\_LINUX\_DEFAULT\=\」\1\2\」/g’ /etc/grub.d/10_linux > ./new10linux
sed ’s/vt\_handoff\=\(.*\)vt\.handoff\=7\(.*\)/vt\_handoff\=\1\2/g’ /etc/grub.d/10_linux > ./new10linux
sudo cp -f ./new10linux /etc/grub.d/10_linux
rm ./new10linux
sudo chmod +x /etc/grub.d/10_linux
sudo update-grub2
which update-burg > /dev/null 2>&1 && sudo update-burg
sudo update-initramfs -u
echo 」The resolution should be fixed after a reboot」
Parsed in 0.016 seconds, using
GeSHi
1.0.8.4
若是你看到有關burg的輸出字樣而你並無安裝burg,能夠無視。 安全
3 安裝fbterm bash
代碼:
$ sudo apt-get install fbterm
4 安裝輸入法的fbterm模塊。我使用的是fcitx,就以fcitx爲例。fcitx爲fbterm提供的輸入模塊叫fcitx-fbterm。 frontend
代碼:
sudo apt-get install fcitx-frontend-fbterm
也能夠到其github主頁上下載源碼包並編譯安裝。
代碼:
$ git clone
https://github.com/fcitx/fcitx-fbterm.git
$ cd fcitx-fbterm
$ mkdir build && cd build
$ cmake ..
$ make && sudo make install
編譯所依賴的包主要是fcitx的開發庫,fcitx-libs-dev。
5 把用戶加入到可使用framebuffer輸出的組,這個組叫video
代碼:
$ sudo adduser your_name video
6 配置fbterm,fbterm默認的配置文件在~/.fbtermrc,打開後你能夠修改虛擬終端輸出分辨率,字體,字號,背景色,前景色,甚至能夠選用背景圖片。
在這裏強調的是fbterm的一個安全特性,這個特性會讓普通用戶在控制檯下沒法使用系統快捷鍵,所以沒法調出中文輸入法。解決辦法是:
代碼:
sudo setcap ‘cap_sys_tty_config+ep’ /usr/bin/fbterm
或者:
代碼:
sudo chmod u+s /usr/bin/fbterm
7 到這裏,全部工做基本都作完了,接下來你能夠按下ctrl+alt+F1,登陸後輸入fbterm,就能夠正常顯示中文了。fcitx-fbterm提供了一個腳本,能夠直接打開fbterm並調用fcitx,命令名是fcitx-fbterm-helper
代碼:
$ env DISPLAY=:0 fcitx-fbterm-helper
若是你使用純shell,以前fcitx並無啓動,那麼
代碼:
$ env DISPLAY=:0 fcitx-fbterm-helper -l
通常狀況下,也能夠直接指定輸入法並啓動fbterm
代碼:
env DISPLAY=:0 fbterm -i fcitx-fbterm
8 爲了方便,能夠在.bashrc加入一行,用來在登陸tty的時候自動運行fbterm
代碼:
echo 「[[ $(tty) == \/dev\/tty[0-9]* ]] && fcitx-fbterm-helper」 >> ~/.bashrc
,這樣每次你從tty登陸,會自動運行fbterm及fcitx-fbterm。
9 fbterm能夠將要使用的輸入法設置寫入配置文件,在~/.fbtermc中寫入
代碼:
input-method=fcitx-fbterm
啓動fbterm後就會啓用fcitx輸入,固然你也可使用ibus-fbterm。
10 fbterm支持256色顯示,這樣看起來要漂亮一些。默認狀況下,fbterm的運行環境是echo $TERM=linux,此時使用16位色;當echo $TERM=fbterm,則使用256色。例如
代碼:
TERM=fbterm vim ~/.fbtermrc
則使用256色運行vim,這樣你就可使用vim的256色主題。一勞永逸的辦法是在fbterm中運行
代碼:
export TERM=fbterm
這樣在本次fbterm會話中將一直使用256色。256色的背景/前景色定義與~/.fbtermrc中的16位色有所不一樣,具體參考man文檔。
11 將灰白調回純白。fbter默認將白色顯示爲灰色,看上去很彆扭,在fbterm中運行
代碼:
echo -ne 「\e]P7ffffff」
12 鼠標支持。fbterm能夠與gpm server配合用鼠標進行復制/粘貼。
代碼:
sudo apt-get install gpm
sudo service gpm start
切換到fbterm,移動鼠標就能夠了。
13 fbterm設置背景圖片的方法,參考 man fbterm的150行,關於快捷鍵安全特性,參考207行
_________________
添加ppa後只更新此ppa:
update-ppa()
{ sudo apt-get update -o Dir::Etc::sourcelist=」sources.list.d/$1.list」 -o Dir::Etc::sourceparts=」-」 -o APT::Get:ist-Cleanup=」0″
}
寫入~/.bashrc,source一下,就能夠直接用,是否是很方便?以爲方便就按個贊。
[轉] http://forum.ubuntu.org.cn/viewtopic.php?f=8&t=382065