红联Linux门户
Linux帮助

换成fcitx输入法的一些感想

发布时间:2009-07-30 11:53:58来源:红联作者:neilhhw
开始时用fedora11的64位版本。自带的输入法ibus很是不习惯,看到很多人喜欢小企鹅输入法,我就下了源代码来安装。呵呵,道路很是曲折。首先是打rpm包吧~
呵呵,用它自带的教程不行啊,只好自己make install 可是好像无法调用fcitx,只好开个终端用命令行打fcitx启动,貌似不能自动启动,上网搜了很多教程,看到其中一篇,一下时引用
[原创]比较fcitx安装后的不同启动设置方式
2009年02月14日 星期六 21:06本文是我在fedora上使用fcitx的一点试验,开始是想解决注销后重登录fcitx的CPU占用率高的问题,对于本文,希望大家多多讨论,不吝赐教,另外请勿转载本文。
──by realasking

对于如何设置fcitx作为系统输入法一 直有几种办法,以fedora为例,一种是修改$home/.bashrc文件,然后在相应桌面环境的自动启动目录中建立.desktop或者系统链接文 件,一种是修改/etc/X11/xinit/xinput.d 中的文件并且将修改的文件拷贝为/etc/X11/xinit/xinputrc文件。对于这两种方法,网上一般认为区别仅在特定用户/特定桌面环境和所 有用户/所有桌面环境可以使用而已,且在fedora 10上,由于imswitch和fcitx冲突而必须卸载imsetting,已经失效,因此实际能采用的方法应该是第一种方法(见hades兄的 fedora 10 英文环境不能激活fcitx的解决方法,地址是:www.linuxsir.org/bbs/showthread.php

我也一直使用fcitx,采用的方法正是该文中所说的,但是最近在fedora 10的KDE 4.2桌面上使用时发现注销后重新登录系统,CPU第二个核心的占用率一直在100%,如果再次注销,则第一个核心的占用率也是100%。于是我使用 google搜索,但没有发现解决方案,对于这个问题,也仅有一处提及:www.linuxsir.org/bbs/thread325820.html 但未能解决。另外,按这种设置方式,对于不同的桌面和不同的用户均需分别设置fcitx的启动环境,感觉也有些麻烦,就想到是否和fcitx的启动设置方式有关,于是就做了以下的比较。

1.环境变量值:
export LANG="zh_CN.UTF-8"
export LC_CTYPE="zh_CN.UTF-8"
export XIM=fcitx
export XIM_PROGRAM=fcitx
export GTK_IM_MODULE=xim
export XMODIFIERS="@im=fcitx"
这个设置采用hades兄的设置值,这一部分在以下两种设置中都是一样的,只是放的文件不同。

2.设置在$home/.bashrc中
方法是将1放到$home/.bashrc中,然后ln -s $home/.kde/Autostart/fcitx fcitx,或者建立一个.desktop文件。区别:前者启动的时候不会在KDE状态栏显示,后者会有一个跳动的齿轮,直到启动成功为止。
这种方法的优点是:
a.不同用户和不同桌面环境可以有不同的XIM设置
b.如果机器安装了zhcon并设置了进入控制台自动启动zhcon,init 3切换模式fcitx会退出,不会冲突
这种方法的缺点是:
a.同优点的a点
b.注销桌面后fcitx不退出,再次登录CPU占用高

3.全局设置
在fedora 10中通过修改/etc/X11/xinit/xinputrc来实现加载fcitx我没有能成功的实现,但是考虑到profile.d文件夹可以设置全 局的环境变量,这样不论桌面环境启动多少次,fcitx可以始终只启动一次,于是在/etc/profile.d文件夹中建立以下脚本:
export LANG="zh_CN.UTF-8"
export LC_CTYPE="zh_CN.UTF-8"
export XIM=fcitx
export XIM_PROGRAM=fcitx
export GTK_IM_MODULE=xim
export XMODIFIERS="@im=fcitx"
teststr="`ps -e | grep fcitx |awk '{print $4}'|uniq`"
if [ "${teststr}" != "fcitx" ]; then
fcitx
fi
存为fcitx.sh并加执行权限。其中的teststr和判断来源于www.lslnet.com/linux/dosc1/37/linux-274352.htm (因为自己写的几行语句比之差了不少,所以就用这个网页上的了)。加上判断的目的是防止桌面的虚拟终端启动时再次尝试启动fcitx从而报错。
优点:
a.所有桌面和用户均能使用fcitx
b.注销重登录不会导致CPU占用率不正常升高
c.卸载imsetting后也能启动fcitx
缺点:
a.同优点a
b.字符界面登录也会启动fcitx,只不过会报错,同时占用资源,对于做计算不利。
c.安装zhcon后从X切换到终端可能fcitx可能会报错或者和zhcon冲突(取决于zhcon的设置方式)

对于fcitx在注销后不会被kill掉我觉得有些疑惑,因为用类似的方法设置conky在注销 后是会关闭的,但是fcitx却没有关闭。现在采用第二种设置方法也能避免CPU占用率不正常升高的问题,但是还是希望采用第一 种方法设置
呵呵,我用的时第一种。总算搞定~
文章评论

共有 9 条评论

  1. 774964107 于 2009-07-30 19:13:07发表:

    学习呀……

  2. kxajd001 于 2009-07-30 18:58:54发表:

    哈哈 学习了

  3. neilhhw 于 2009-07-30 16:25:54发表:

    呵呵,要感谢做小企鹅的大大,据说是一个人做出来的~呵呵

  4. 绿色圣光 于 2009-07-30 14:32:57发表:

    我也是用的fcitx,很好用……

  5. uwoslc 于 2009-07-30 12:55:13发表:

    打得合适

  6. yubinsd 于 2009-07-30 12:03:24发表:

    哈哈
    学习了
    我已经使用了1个月了

  7. neilhhw 于 2009-07-30 12:00:42发表:

    谢谢那些作者们~

  8. neilhhw 于 2009-07-30 12:00:16发表:

    附上ubuntu 64 && scim qq 输入法设置:
    以下时引用:

    我的系统是UBUNTU64位系统,本着尝鲜的心情安装了最新的LINUX版官方QQ。但无奈不能输入中文。

    经过仔细跟踪,发现是加载 im-scm*.so 的时候,因为QQ是32位版,而系统中的 SO是64位,所以导致加载失败。

    找到问题就容易了,把32位版的 SO 考一份就OK了。

    以下三步都需要用管理员权限,或者用 sudo 来执行
    第一步:
    把 32位版(附件):
    /usr/lib/gtk-2.0/2.10.0/immodules/ 的

    -rw-r--r-- 1 root root 67648 2008-07-31 15:31 im-scim-bridge.so
    -rw-r--r-- 1 root root 143588 2008-07-31 15:31 im-scim.so

    复制到64位系统下的lib32:
    /usr/lib32/gtk-2.0/2.10.0/immodules/


    第二步:
    cd /etc/gtk-2.0
    mv gtk.immodules.32 gtk.immodules.32.bak
    /usr/bin/gtk-query-immodules-2.0 > gtk.immodules.32

    第三步:
    把 gtk.immodules.32 文件里的 /usr/lib/ 替换成 /usr/lib32/

    附:64位下安装办法
    sudo dpkg -i --force-all linuxqq_1.0-Preview1_i386.deb

  9. neilhhw 于 2009-07-30 11:58:28发表:

    呵呵,但是好像在linux qq种调用不起来fcitx,google了下,有很多时介绍scim的我想fcitx也可以用,于是就照搬,找im-xim.so 32 位的可是找不到,我开始绝望了,呵呵,我想也许yum源种有im-xim.so,我就试了试sudo yum install im-xim.so,太让我高兴了,有i386的版本,直接yes安装,呵呵,重启qq哈哈,可以用fcitx啦~