Ubuntu下Skype和Fetion的中文输入
自从发现Pidgin和Adium中用Google Talk可以用SSL之后,自己很少用Skype聊天了。
但是近期一好友因其所在公司封了除Skype之外的所有IM,与她聊天过程中突然发现Linux下QT程序无法用scim输入中文。搜索了一下,结果解决方法不是不对就是步骤有错误的。可能是由于不同发行版本的问题,确实是会让很多刚入门的使用者感到沮丧。
研究了一下发现原因:Skype for Linux的UI是基于QT的,因此默认情况下无法用scim输入中文。当然如果你使用fcitx话是可能是没有问题的。本人比较懒,一直用系统自带的scim,外加从RH9/Fedora Core 1时代就一直用scim和智能拼音,可能习惯了。
系统环境:
Ubuntu 8.10 Intrepid Ibex x86
Locale: en_AU.UTF-8
中文输入:scim + scim-pinyin
Skype 2.0.0.72
来自Skype官方Debian repository
deb http://download.skype.com/linux/repos/debian/ stable non-free
Medibuntu源中应该也一样。
Linux Fetion 0.9.1
解决方法:
- 临时解决,适合偶尔用Skype中文text chat的人,类似于我这种
有人说需要安装scim-bridge,但是事实上从Hardy开始已经没有这个包了。我的情况是安装了如和scim-bridge相关的包:
apt-get install scim-bridge-agent scim-bridge-client-qt4 scim-bridge-client-gtk+
scim-bridge-client-qt4 (这个是为了解决libfetion中文问题装的,还没时间去研究)
scim-bridge-client-gtk+
Skype UI的contact quick search bar或者聊天输入框中点击右键,而不是在聊天窗口,那里是无法选择IM的。如图:
在select IM中选择scim bridge,而不是网上他人所说的xim。之后聊天窗口中用crtl+space切换中文输入,就可以输入中文了。
ibus的话需要选择XIM,默认的ibus无法调用出输入法,可能和我在~/.profile里的设置有关。
~/.profileexport XMODIFIERS=@im=ibus export GTK_IM_MODULE=ibus export QT_IM_MODULE=ibus ibus-daemon -d -x
- 长效解决方案,修改X/X11的Input Method配置文件,启动的时候自动hook up配置IM
/etc/X11/xinit/xinput.d/default (由于我的locale是en_AU,因此非某些人说的zh_CN),事实上这个文件可以用im-switch命令来自动完成设置。
例如设置ibus为zh_CN locale的默认输入法:
im-switch -z zh_CN -s ibus
设置GTK_IM_MODULE和QT_IM_MODULE为xim,我的默认是空
# # Define GTK and QT IM module # They may or may not be using xim as the IM. #GTK_IM_MODULE=xim
QT_IM_MODULE=xim
如果你的locale是zh_CN,则需要修改对应的
/etc/X11/xinit/xinput.d/zh_CN (zh_CN的locale也有可能是default)
下的IM Module设置,以此类推。
我的zh_CN如下:
XIM=SCIMif [ -e /usr/bin/skim ]; then
XIM_PROGRAM=” “
else
XIM_PROGRAM=/usr/bin/scim
fi
XIM_ARGS=”-d”
if [ -e /usr/lib/gtk-2.0/*/immodules/im-scim-bridge.so ]; then
GTK_IM_MODULE=scim-bridge
else
GTK_IM_MODULE=xim
fi
if [ -e /usr/lib/qt3/plugins/inputmethods/im-scim-bridge.so ]; then
QT_IM_MODULE=scim-bridge
else
QT_IM_MODULE=xim
fi
DEPENDS=”scim | skim, scim-bridge-agent, scim-bridge-client-gtk | scim-bridge-client-qt”
保存后需要重启X,这个方法由于我不想换locale又没有中文的Ubuntu VM暂时无法验证,我会找时间去验证一下。如果有问题请留言指出,我会更新以免误导他人。谢谢!
- 通过用户的~/.profile,最好不要设置Global变量/etc/profile
例如,注意,以下代码没有经过测试,请自行设定验证,如有问题请告之我再研究一下;-)
export XMODIFIERS=@im=scim export GTK_IM_MODULE=scim-bridge export QT_IM_MODULE=scim-bridge
scim -d
LibFetion
也就是Linux Fetion,Linux下的飞信客户端,也有同样的问题。同样我们可以用以上两种方法解决。
注意:聊天窗口中是无法用右键菜单选择Input Method的,只有在输入心情短语窗口才可以。
我推荐用第一种,不麻烦,也不用去改配置文件。
至于KDE/XFCE4和其他WM下我就不得而知了。很少在其他DE下输入中文:-)