- 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一定会成为最牛的输入法的!哈哈。
今天先熟悉下,往后抽出时间来继续看源码,希望能为开发尽一点自己的能力!



你一定行!
楼主的blog要红了,呵呵
此BLOG正在火...
效率问题不光是指速度。
有什么特别之处吗?不知道怎么样 也去装个试试
Qt >= 4.3.5 在哪找哦。。。大哥
好啊,界面是gtk的,那qt4的依赖是干什么的
早就听说了。。特别期待。。
不过。。听你这么一说。。吓得我有点不敢搞了。。
@可乐:
即使安装了Qt4不过还是会提示没有开发包,所以我把这行注释掉了。你也注释吧!
@TTG:
qt4的依赖是提供KDE环境的输入法框架。
@xiws:
确实有点麻烦,因为作者是在Fedora下开发的,Ubuntu需要改很多东西才行。
可否像scim那樣,有繁簡過濾,因為我想用漢語拼音打繁體字的.
./configure --with-gtk-im-module-dir=/usr/lib/gtk-2.0/2.10.0/immodules --disable-qt4-immodule
@tom:
暂时没发现繁简过滤,只有中英切换。
@yegle:
嘿嘿,作者更新了,可以使用这个编译选项了。
"你会说肯定会效率问题怎么解决?我想只要不是打字打到每分钟500个以上,不用管这个问题了吧?"
你是否理解什么是效率?..一个输入法效率是指...启动和激活它时的速度.输入时上字的反应速度之类的如果上字慢就会出现掉字的情况.明白?......用openoffice测试一下就知道..
一个好的输入法.除了上面说的几点.还要看它的资源占用.CPU占用.兼容性
不错的输入法的说~
Linux上的中文输入和中文字体实在是少得可怜~多点文泉驿~多点ibus该多好………………
这么牛,等待源更新。
嗯~多谢路过兄的指导,效率问题我说的太简单了。
另外,Ubuntu 8.04的朋友估计要到8.10才能顺利装上这个输入法,因为8.04源里的dbus-python不合乎要求,我已经请求开发者将Ubuntu 8.10的dbus-python升级至最新版,不知道什么时候会更新。
ibus初探...
转自: imtx.cn
事实上我一直希望能够看到一个不像scim那样老是发生冲突的非引擎式的专门的拼音输入法。我认为用户需要的只是一个输入法,要么是拼音要么是五笔或者其他,而不是可以容.....
一个好的输入法,效率、稳定性、高效词库缺一不可,LINUX下输入法太少了,好用的更少,不过很看好IBUS,因为我现在正在用的就是SCIM-PYTHON,跟人感觉很不错,就是效率低了一些,还有选词仍然不够智能,希望IBUS能给广大LINUXER带来惊喜。此外,严重鼓励TualatriX童鞋深入的参与进去,帮助完善,我对于PYTHON是完全不了解,估计就帮不上多少忙了,有时间一定多学习
我现在用的是0825的snapshot,感觉比以前好用很多。已经支持横排候选框,输入反应速度也快了,支持数字小键盘开启状态下用快捷键切换中英文输入状态。感觉很不错。
不过,ibus还不支持码表输入法,比如二笔,比较不方便——我平时都是用二笔输入的。
听了rgaobj和linuxboy的叙述,越来越觉得ibus是未来输入法的希望了。
有空闲时就去研究一下ibus,说深入还太早了,一点也不知道呢。
不错,fedora 9下只要一条yum命令就可以安装了
现在很想有一个单独的词频调整和用户词库管理程序。。
这样大家的词库就。。。瓦咔咔。。
还是拼音的选项多呀。我用的是郑码的,选项少的可怜,几乎不能定制。
buy ambien ships to ky 633422 acomplia 794000 how to take doxycycline nvya purchase cialis xqsin acomplia effectiveness 159375 ambien 7112 ambien 6092
I woke up this morning sad but after reading this article my state of mind got better.