自从发现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

http://www.libfetion.cn

解决方法:

  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的。如图:

Skype

在select IM中选择scim bridge,而不是网上他人所说的xim。之后聊天窗口中用crtl+space切换中文输入,就可以输入中文了。

ibus的话需要选择XIM,默认的ibus无法调用出输入法,可能和我在~/.profile里的设置有关。

Skype ibus

~/.profile ` export XMODIFIERS=@im=ibus export GTK_IM_MODULE=ibus export QT_IM_MODULE=ibus ibus-daemon -d -x `

  1. 长效解决方案,修改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=SCIM if [ -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暂时无法验证,我会找时间去验证一下。如果有问题请留言指出,我会更新以免误导他人。谢谢!

  1. 通过用户的~/.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下输入中文:-)