目标:
BT5R3 安装中文输入法,同时保证:
1. 系统和应用程序全部为英文(系统菜单、应用程序工具栏、默认输入法等)
2.当需要阅读和撰写中文文档的时候,能正确的显示中文并调出中文输入法.
步骤及问题:
1. 放狗发现,通过下列方法可以安装中文包及输入法:
refer to: http://www.linuxidc.com/Linux/2012-07/65618.htm
安语言包装
apt-get install language-support-zh language-pack-zh
安装语言选择器
apt-get install language-selector-qt
apt-get install language-selector
设置
打开System-Administration-Language Support, Install/Remove Language中选择 Chinese(simplified),然后点ok.
安装完中文包后我们到Settings->System Settings->Locale->add languages
Ibus中文输入法
在终端输入:sudo apt-get install ibus-table-wubi ibus-pinyin
安装完成后在System->perferences下会出现Ibus perferences条目,在其中设置要使用的输入法。首次启动会出现:
IBus has been started! If you can not use IBus, please add below lines in $HOME/.bashrc, and relogin your desktop.
export GTK_IM_MODULE=ibus
export XMODIFIERS=@im=ibus
export QT_IM_MODULE=ibus
设置开机自动启动IBUS:
System >> Preferences >> Startup Applications
Click the button: Add
Name: ibus daemon
Command: /usr/bin/ibus-daemon –d
完成设置,logout 并重新启动 X window。发现可以中文输入法可以正常工作。但是,问题产生了。桌面及一些应用程序也变成了中文,如shell 环境:
root@bot:~# testcommand
testcommand: 没有找到命令
对于习惯于英文系统的本人来说,这种提示实在是碍眼,这也是本文开始目标一存在的原因。
2. 继续放狗,发现一篇文章讲到变量LANG的作用,并通过配置startx的参数在FC4 Linux上成功解决了这个问题。于是乎,仿照这个思路,开始观 察 BT3R5 的startx 命令。
先附上参考资料:http://blog.csdn.net/luyushuang/article/details/8996538
首先把语言跳回到 en_US(echo $LANG en_US.utf8)
打开 startx, 发现如下一行:
xinit "$client" $clientargs -- "$server" $display $serverargs
startx 实际上调用了 xinit 来初始化 X window (server and client), 为了省去读一大串的startx 的脚本,干脆 将上述命令中用到的几个参数一一 打印出来,发现不加参数(鄙人通常情况下,直接 startx 启动 xwindow)的情况下,几个参数的值依次为:
/etc/X11/xinit/xinitrc
# 此处空行,表示$clientargs 为空
/etc/X11/xinit/xserverrc
:0
-auth /tmp/serverauth.0D93ImveAw
可知,参数均来自/etc/X11/xint/xinitrc 和 /etc/X11/xinit/xserverrc, 不太清楚到时是 server 还是 client 负责语言支持,所以先从client开始,
于是开始追踪 /etc/X11/xint/xinitrc, 发现其内容为:
. /etc/X11/Xsession
file /etc/X11/Xsession 发现 Xsession 是一个shell 脚本文件,于是继续追踪进来,发现其中有如下几行:
# initialize variables for use by all session scripts
OPTIONFILE=/etc/X11/Xsession.options
SYSRESOURCES=/etc/X11/Xresources
USRRESOURCES=$HOME/.Xresources
SYSSESSIONDIR=/etc/X11/Xsession.d
USERXSESSION=$HOME/.xsession
USERXSESSIONRC=$HOME/.xsessionrc
ALTUSERXSESSION=$HOME/.Xsession
ERRFILE=$HOME/.xsession-errors
把几个文件或者位置都观察了一下,发现最关键的一个是:
SYSSESSIONDIR=/etc/X11/Xsession.d
进入这个folder 发现里面有许多看起来像是配置文件的东西:
root@bt:~# ll /etc/X11/Xsession.d/
total 64
drwxr-xr-x 2 root root 4096 2014-02-12 22:08 ./
drwxr-xr-x 10 root root 4096 2014-02-12 21:08 ../
-rw-r--r-- 1 root root 2030 2010-04-01 19:19 20x11-common_process-args
-rw-r--r-- 1 root root 878 2010-03-31 00:13 30x11-common_xresources
-rw-r--r-- 1 root root 187 2008-07-02 01:41 40x11-common_xsessionrc
-rw-r--r-- 1 root root 1535 2010-03-31 00:13 50x11-common_determine-startup
-rw-r--r-- 1 root root 197 2010-01-16 12:54 52libcanberra-gtk-module_add-to-gtk-modules
-rw-r--r-- 1 root root 670 2010-03-30 17:22 55gnome-session_gnomerc
-rw-r--r-- 1 root root 146 2010-04-01 19:07 60x11-common_localhost
-rw-r--r-- 1 root root 322 2010-03-30 20:43 70gconfd_path-on-session
-rw-r--r-- 1 root root 368 2011-01-05 06:23 75dbus_dbus-launch
-rwxr-xr-x 1 root root 2347 2014-02-12 22:08 80im-switch*
-rw-r--r-- 1 root root 1027 2010-11-12 23:23 90consolekit
-rw-r--r-- 1 root root 629 2010-03-31 00:13 90x11-common_ssh-agent
-rwxr-xr-x 1 root root 394 2013-08-22 22:37 99-vmware_vmware-user*
-rw-r--r-- 1 root root 166 2008-07-02 01:41 99x11-common_start
不太清楚这些文件用来干什么,但应该与启动 x window 的 配置项有关,于是,又傻逼的挨个浏览这些文件,(其实后来才知道,80im-switch*配置了关于输入法的内容, im means input method),打开80im-switch*的时候发现了以下内容:
# $LNG is locale <language>_<region> without .<encoding> and .<encoding>@EURO
LNG=${LC_ALL:-${LC_CTYPE:-${LANG}}}
LNG=${LNG%@*}
LNG=${LNG%.*}
LNG="zh_CN" # 这一行 为后来加上的,通过这一行,可以实现最终目标
[ -z "$LNG" ] && LNG="all_ALL" || true
echo "Setting IM through im-switch for locale=$LNG."
echo $LNG >> $HOME/record.log
# Source first found configuration under $LNG locale
for f in "$HOME/.xinput.d/${LNG}" \
"$HOME/.xinput.d/all_ALL" \
"/etc/X11/xinit/xinput.d/${LNG}" \
"/etc/X11/xinit/xinput.d/all_ALL" \
"/etc/X11/xinit/xinput.d/default" ; do
if [ -f "$f" -a -r "$f" ]; then
echo "Start IM through $f linked to $(readlink -f $f)."
. "$f"
break
fi
done
按照 上述 红色高亮部分修改80im-switch* 这个文件,保存,然后重新登录启动xwindow, 发现 要求的两个目标全部实现。
具体原理,请参照:http://blog.csdn.net/luyushuang/article/details/8996538
3. 综上,总结的达到本文开始的两个目标的方法是:
a. 按照第一步的方法,安装语言包,语言管理器(等),ibus 输入法 并配置等工作
b. 将系统调回至英文,并在/etc/X11/Xsession.d/80im-switch* 中添加LNG="zh_CN",添加位置可以是LNG=${LNG%.*}的后面。