• 5
  • Aug

那天在Toy上看到下一代输入法框架 ibus,当时没什么感觉,只是觉得名字ibus有点意思。

今天把ibus的代码git下来后一看:原来ibus是一个基于pygtk、dbus的一个输入法引擎!!!兴趣立马大增。

当初还以为是基于Unix Socket的、只提供了Qt的图形接口的C/S输入法引擎。现在一看ibus中的三样核心技术(Python, dbus, gtk)都是目前我学习的方向,因此打算好好研究一下ibus。

-----

ibus的全称是input bus,是由scim-python的作者Shawn.P.Huang所开发的。

中文领域还有两个正在开发当中的输入法引擎,分别是scim2和imbus,分别是由胡正和苏哲领导开发。不过进展不明,特别是imbus,最近的commit都是半年前了。

与scim2和imbus基于C/C++所不同的是,ibus是基于Python的。你会说肯定会效率问题怎么解决?我想只要不是打字打到每分钟500个以上,不用管这个问题了吧?

Python开发迅速,加上Shawn.P.Huang的活跃开发,应该有理由相信ibus能很快地成熟起来并得到应用。

废话不多说,初探一下ibus吧!

先说dbus

ibus使用了dbus作为C/S架构的核心部分,这个的应用实在是棒。因为dbus是一个高效、低延时的IPC通讯总线,而且有着完善的Python绑定,俺在Ubuntu Tweak也是用dbus来搞一些系统级的服务调用的。

记得之前遇到过Fitx输入法的作者,Fitx输入法的是基于scim-python的,不过后端的引擎是基于Unix Socket的。这两种通讯管道哪个好呢?这个就没有深入研究了,我只知道dbus是基于注册的服务,提供的接口和语言绑定比较丰富和灵活,这样前端也可以比较多样化了(现在就有Qt4前端了)。

因为自己也只是初识dbus,Unix Socket更是没用过,这方面也不好多说。希望能从ibus那学习到更多有关dbus的东西。

再说pygtk

说ibus是基于pygtk的,不如说是基于pygobject的,当然底层是glib。

ibus的基类:自定义的Object,就是继承于gobject.GObject。在整个ibus引擎中(特别是在daemon),都广泛用到了gobject,也就是信号/回调之类。用Python来写定义GObject就是方便,如果用C语言那真是麻烦死了。所以想学pygtk的核心部分的朋友,去参考一下ibus也不错。

……<<<<<<<……俺是疯哥线……>>>>>>>……

不能光看不做,于是打算安装试用一下。折腾了很久,才把ibus安装上去。

因为过程实在是太复杂了,所以这里只讲主要过程。

安装过程是参考这里:http://code.google.com/p/ibus/wiki/ReadMe,只安装了ibus本身和PinYin engine。

ibus默认依赖Qt4,这个倒没关系,不过无论我怎么configure均通过不了。无奈之下,把configure.ac中有关Qt的去掉,然后在Makefile.am和Makeifle.in中也把Qt相关的去掉,终于成功编译了ibus。

编译完后运行ibus,一堆Python错误。一看,Ubuntu 8.04的python-dbus不合乎要求,没有dbus.server这个包,ibus需要0.83,但默认0.82。于是上Index of /releases/dbus-python下载了个0.83的python-dbus安装更新之。

终于可以运行ibus的daemon了,可是执行GTK_IM_MODULE=ibus gedit,在gedit中就是打不开ibus。

再去研究,发现make install时把im相关的东西安装至了/usr/lib/gtk-2.0/immodules,而Ubuntu下默认是集中在/usr/lib/gtk-2.0/2.10.0/immodules这的。于是手动移到那个目录,并手动编辑了:/usr/lib/gtk-2.0/2.10.0/immodule-files.d/libgtk2.0-0.immodules 这个文件。

重新登录GNOME,呼~ibus终于出现了!

虽然我不是用拼音的,但是还是硬着头皮试用了一个安装了PinYin的ibus。

用了一会,感觉非常满意!

界面很漂亮,输入效果也很棒,还支持Fcitx式的直接输英文:这意味着我将来可以非常自然地过渡至使用ibus!

看下面的截图:

在Leafpad里使用ibus

浮动条,很小巧

PinYin的设置界面,很详细。

因为是一个全新的输入法(不像scim-python是基于scim的),所以ibus拥有一些scim不具备的特性,而且输入法正在不断开发当中,我相信ibus一定会成为最牛的输入法的!哈哈。

今天先熟悉下,往后抽出时间来继续看源码,希望能为开发尽一点自己的能力!

Tags: dbus, Python, pygtk, ibus.

» You can leave a comment.

26 Comments

  1. 楼主的blog要红了,呵呵

  2. 此BLOG正在火...

  3. mephisto

    效率问题不光是指速度。

  4. 有什么特别之处吗?不知道怎么样 也去装个试试

  5. Qt >= 4.3.5 在哪找哦。。。大哥

  6. TTG

    好啊,界面是gtk的,那qt4的依赖是干什么的

  7. 早就听说了。。特别期待。。
    不过。。听你这么一说。。吓得我有点不敢搞了。。

  8. @可乐:
    即使安装了Qt4不过还是会提示没有开发包,所以我把这行注释掉了。你也注释吧!

    @TTG:
    qt4的依赖是提供KDE环境的输入法框架。

    @xiws:
    确实有点麻烦,因为作者是在Fedora下开发的,Ubuntu需要改很多东西才行。

  9. tom

    可否像scim那樣,有繁簡過濾,因為我想用漢語拼音打繁體字的.

  10. ./configure --with-gtk-im-module-dir=/usr/lib/gtk-2.0/2.10.0/immodules --disable-qt4-immodule

  11. @tom:
    暂时没发现繁简过滤,只有中英切换。

    @yegle:
    嘿嘿,作者更新了,可以使用这个编译选项了。

  12. 路过

    "你会说肯定会效率问题怎么解决?我想只要不是打字打到每分钟500个以上,不用管这个问题了吧?"

    你是否理解什么是效率?..一个输入法效率是指...启动和激活它时的速度.输入时上字的反应速度之类的如果上字慢就会出现掉字的情况.明白?......用openoffice测试一下就知道..

    一个好的输入法.除了上面说的几点.还要看它的资源占用.CPU占用.兼容性

  13. Neoriva

    不错的输入法的说~
    Linux上的中文输入和中文字体实在是少得可怜~多点文泉驿~多点ibus该多好………………

  14. SeceretZero

    这么牛,等待源更新。

  15. 嗯~多谢路过兄的指导,效率问题我说的太简单了。

    另外,Ubuntu 8.04的朋友估计要到8.10才能顺利装上这个输入法,因为8.04源里的dbus-python不合乎要求,我已经请求开发者将Ubuntu 8.10的dbus-python升级至最新版,不知道什么时候会更新。

  16. ibus初探...

    转自: imtx.cn
    事实上我一直希望能够看到一个不像scim那样老是发生冲突的非引擎式的专门的拼音输入法。我认为用户需要的只是一个输入法,要么是拼音要么是五笔或者其他,而不是可以容.....

  17. rgaobj

    一个好的输入法,效率、稳定性、高效词库缺一不可,LINUX下输入法太少了,好用的更少,不过很看好IBUS,因为我现在正在用的就是SCIM-PYTHON,跟人感觉很不错,就是效率低了一些,还有选词仍然不够智能,希望IBUS能给广大LINUXER带来惊喜。此外,严重鼓励TualatriX童鞋深入的参与进去,帮助完善,我对于PYTHON是完全不了解,估计就帮不上多少忙了,有时间一定多学习

  18. linuxboy

    我现在用的是0825的snapshot,感觉比以前好用很多。已经支持横排候选框,输入反应速度也快了,支持数字小键盘开启状态下用快捷键切换中英文输入状态。感觉很不错。

  19. linuxboy

    不过,ibus还不支持码表输入法,比如二笔,比较不方便——我平时都是用二笔输入的。

  20. 听了rgaobj和linuxboy的叙述,越来越觉得ibus是未来输入法的希望了。
    有空闲时就去研究一下ibus,说深入还太早了,一点也不知道呢。

  21. laaa

    不错,fedora 9下只要一条yum命令就可以安装了

  22. xiws

    现在很想有一个单独的词频调整和用户词库管理程序。。
    这样大家的词库就。。。瓦咔咔。。

  23. 还是拼音的选项多呀。我用的是郑码的,选项少的可怜,几乎不能定制。

  24. buy ambien ships to ky 633422 acomplia 794000 how to take doxycycline nvya purchase cialis xqsin acomplia effectiveness 159375 ambien 7112 ambien 6092

  25. I woke up this morning sad but after reading this article my state of mind got better.

Leave a Comment