今天是2012年的最后一天,自 gnome 3.6 发布后,沉默了好几个月,我还是忍不住要吐槽,先从年初土豪苏小姐对 GNOME 3.6 的 iBus Integration 新特性开炮开始。
大概是在今年五月初的时候,苏小姐(@doublechou)在试图替换 openSUSE 默认简体中文输入法为 fcitx 时,无意中从 openSUSE GNOME 项目组的的老大 Vincent 那里得知,GNOME 正在搞输入法集成的新特性,将 ibus 设置为 GNOME 的默认输入法,并可能会被 GNOME 强行依赖。苏小姐担心这一特性会影响到用户输入法的选择权以及安装 ibus 会被强行装上整个 GNOME 3,于是带上了国内很大一群输入法的开发者和维护者跑到 GNOME 那边踢馆了,甚至后来 Vincent 也加入了战团,一群人以限制输入法选择权和强行GNOME 和 ibus 之间的强行依赖为由围着 GNOME 狂喷口水,在当时是引起了轩然大波。不过我的直觉和 TigerSoldier 的一篇技术文告诉我,这种担心是完全不会出现的。再加上我对 XKB/iBus Integration 的预览版 ibus-gjs 的试用体验感到非常良好,这里还有我试用时录制的一段视频:
所以我当时对 GNOME 3.6 的这一新特性还很赞成,如果最后的效果就是上面的视频这样的,我完全没有理由去反对,但是显然,不管是苏小姐还是山木本人,都错了。
苏小姐就错在并没有完全搞清楚 XKB/iBus Integration 的技术特性,正如 tigersoldier 的这篇技术分析文章所说,GNOME 并不强行依赖 ibus ,这取决于发行版商是否打开相应的编译选项,更不会影响输入法的选择,不管是否打开 ibus 的集成选项,你爱用什么输入法就用什么,和以前一样。但是有一点显然出乎了苏小姐意料,XKB/iBus Integration 没有丝毫的影响到其他输入法用户,这个特性严重的影响到了 ibus 用户。我错了,我严重低估了 GNOME 追求简单粗狂的雄心,你妈逼的到底对 ibus 干了些什么?!
先说说开启 ibus 集成的情况,首先遇到的就是白名单问题。我在刚开始使用 gnome 3.6 时,试图添加一个 ibus-sunpinyin ,但是我在输入源里面根本就看不到 ibus-sunpinyin ,只能看到 ibus-pinyin 和注音输入法两个,还有就是一长串我根本用不上的其他语言的输入法。后来才知道,gnome 3.6 输入法源只会现实白名单上的输入法,像 ibus-sunpinyin 这种在白名单之外的默认是不显示,只能在高级设置里面打开显示全部输入法源的选项才能看到,但是这样一来输入法源的列表将变得更长了,又有更多你用不上的输入法出现在列表里面。显然,GNOME 的开发者在设置白名单的时候就是为了防止输入法源的列表变得过长,但是之前 ibus-xkb 有个按照当前 locale 动态设置白名单(比如当前 locale 是 zh_CN,那么只显示 zh_CN 的输入法在输入源里面,其他语系的默认不显示)的良好方案他们为什么不采用,却自己拍脑门想出了一个莫名其妙的白名单方案?所以 ibus 开发者之一马晓骏也忍不住到 GNOME 的 bugzilla 踢馆去了,https://bugzilla.gnome.org/show_bug.cgi?id=688914,但得到的结果是“那两个法国人很嘴硬”。我就很奇怪了,一帮从来就不是用输入法的西欧人怎么自信得好像比我们天天都用输入法的人更了解输入法?
GNOME 的审美观显然也是很独特的,他们对粗旷风格显然偏爱到了变态的地步,你见过哪家输入法的输入框有这种大号的尺寸吗?
为了便于比较,我们再来看看正常的尺寸:
然后最另人抓狂的事情来了。如果你想在 gnome-shell 使用 ibus-pinyin 的繁体输入功能,那你做梦吧,因为 ibus panel 被屏蔽了,你没法切换到繁体模式!
最后我想到了让 GNOME 3.6 取消对 ibus 的依赖,让 ibus 以原生方式运行。结果我发现,ibus 的确以原生方式跑了起来,但是 ibus 的 tray icon 却被 gnome-shell 给屏蔽掉了!也就意味真 ibus panel 仍然处于屏蔽状态,也就是说,不管是否开启 ibus 集成选项,gnome-shell 都把 ibus 弄得很不好用,真是求生不能,求死不得!写在这里,我也想骂人!
但就目前的情况看,取消对 ibus 的依赖无疑是问题最少的,ibus 绝大部分原生的功能都可以用,所以我只用想办法说服 Vincent 编译 gnome 时关闭集成 ibus 的选项,然后等马晓骏兄继续接受开发 ibus-gjs ,这是目前最好的方案了。马晓骏兄,全体 ibus 用户等着你来拯救了!
转来Fcitx或KDE吧~ 😛
本人是 openSUSE 当前的 ibus 的维护者,你觉得我可能转投 fcitx 吗?
其实 freebsd 的 ibus 维护者是用 fcitx 的……
我以後在ibus-user回答問題的時候後面加個簽名Inputted with Fcitx
好不好?
ibus panel的上游討論:
https://bugzilla.gnome.org/show_bug.cgi?id=682318
Arch Linux Ibus-* 包(不包括[extra]/ibus主包)维护者表示, 诸多用户反馈 Gnome-shell 关闭 IBus 集成后不止是 tray icon 不科学, (GNOME里的) ibus 相关设置也不科学(虽然这是必须的).
举例: https://bugs.archlinux.org/task/32862
我在那個task下面回覆你了,其實你爲什麼報到Arch Linux而不是報到GNOME?
我表示对找回 tray icon 感到非常悲观。
因为我对ibus和gnome都并无兴趣, Arch 里的那些现存 ibus bug 我留着只是为了 track 进度.
IBus集成搞成这样我当初也没料到,还基于过时的代码傻傻地写了个分析误导了一群人,罪过
不显示trayicon可能是gnome在启动ibus的时候加入了nopanel之类的参数所致,把gnome-settings-daemon的keyboard插件屏蔽试试
编译的时候屏蔽?
不是,用dconf屏蔽,在org/gnome/settings-daemon/plugins/keyboard下面
你要是能Arch下面折騰出來那就可以拯救了很多人了……Arch那種關閉IBus集成的GNOME似乎不會自動啓動ibus-daemon……
果断叛逃到 fcitx 了,口水解决不了问题就用脚投票,只是苦了 ibus 了
昨天我又在 GNOME 3.6 上仔细的测试了一下,如果想继续用 gnome-shell 叛逃 fcitx 是必须的了,甚至 scim 都比 ibus 好用。
❓ 一直想不通,scim为什么就这么不受待见?
其他都写的挺好,除了白名单那里,那些语言是否显示不是根据你需不需要来决定的吧,那个根据locale来判断的方法更是愚蠢,正常人同一个语言需要一堆输入法吗,输入法之间切换不就是在不同语言间切换吗
ibus用了gobject,fcitx没用,所以gnome不买fcitx的账。
不是这个原因,ibus 之父黄鹏以前是 redhat 的人。而 redhat 就是 Gnome 的主导者,Gnome 采纳 ibus 就是理所当然的是。