安装的 opensuse13.1, 使用 gnome3.10 时,wps、virtualbox 按 ctrl+ 空格,无法激活输入法。但是在 kde 桌面就可以,请问怎么解决啊?谢谢
用的什么输入法? ibus 还是 fctix ? 在 Gnome3.10 下除了 wps 和 virtualbox,其他程序都正常吗?
好像用的是 fctix,好像默认的就是这个输入法。我只安装了这 2 个额外的程序,其他的输入法都正常。非常感谢您
fcitx 我没怎么接触过,所以没法帮助你,不过你可以试试在~/.bashrc 加上
export XMODIFIERS=“@im=fcitx”
export QT_IM MODULE=xim
export GTK_IM_MODULE=xim
然后执行:
$ source ~/.bashrc
非常感谢您,我换成 kde 桌面试试吧
作为 7 年 KDE 用户,表示欢迎!
好像是有这个解决方法。
不过 xim 好像可以写成 fcitx
忘记了。
archlinux 下我遇到过 fcitx 无法在一切 gtk 程序运行的故障。
我估计 lz 可能没有安装 fcitx-qt 的包,因为 wps 好像是 qt 软件。
不过我还是鼎力建议 lz 尝试 KDE:-)
第一:Gnome 3.10 的输入法切换快捷键是 Super+Space ,不是 Ctrl+Space ;第二:Gnome 3.10 默认没有添加输入法,请到控制中心 → 输入源里面添加中文输入法(这些输入法默认是安装的).
- 添加到 bashrc 的方法无现实意义。
- 安装 fcitx-qt4 fcitx-qt4-32bit 是正解。wps 和 VirtualBox 都是 qt 程序,wps 还是 32 位程序。GNOME 桌面默认不装 fcitx-qt4
来自 Galaxy Note 2 上的 Tapatalk 4
我和 hillwood 可以確認問題存在
昨晚我們談了一下
這個問題和 gnome-settings-daemon/main.c 有關
請看得懂程式代碼的朋友看一下
github.com/GNOME/gnome-settings-daemon/blob/master/gnome-settings-daemon/main.c
static void
set_legacy_ibus_env_vars (GDBusProxy *proxy)
{
if (is_program_in_path ("ibus-daemon") &&
keyboard_plugin_is_enabled ()) {
set_session_env (proxy, "QT_IM_MODULE", "ibus");
set_session_env (proxy, "XMODIFIERS", "@im=ibus");
}
}
gnome-settings-daemon 會將 QT_IM_MODULE 和 XMODIFIERS 設為 ibus 導致 fcitx 無法在 qt 應用程式輸入中文
要上班了,下午再和大家討論
确实。
fcitx-im.org/wiki/Note_for_GNOME_Later_than_3.6
这里是方法。用别的输入法得把 ibus 整合关掉。
好麻烦,还得去 patch gcin/fcitx 的 post/postun。
您試試看 home:swyear 中的 gnome-settings-daemon
我將那兩個設定環境變數的地方拿掉了
現在用 gnome 3 測試 fcitx
在 kwrite 可輸入中文了(fcitx-chewing)
又另外發現一個問題
fcitx 在 gnome-terminal 不能輸入中文(gcin 可以)
(找不到 3.10.1 版的 gnome-settings-daemon, 用 3.10.2 版,安裝時會有抱怨)
拿掉那个是没用的啦。上游 GNOME 不会接受这样的 patch(因为那样它们的主要整合对象 ibus 反而无法在 kde 程式用了,他们宁可牺牲我们,很无耻却很无奈的),所以 openSUSE GNOME 团队的人也不会同意你做这样的改动。还有即使你那么改了之后其它的类似问题还有很多。。。
现在我想到的方法是在 fcitx/gcin 的 %post/%postun 字段跑个脚本,判断是不是 gnome 环境(gnome-session-daemon),是 gnome 环境判断有没有除 ibus 以外的别的输入法安装(/etc/X11/xim.d 下除了 none 和 ibus 和这个输入法自己比如 fcitx 外还有没有别的文件,如果有,证明在安装 fcitx 之前已经安装了 gcin,那么 fcitx 想做的 gcin 已经做了,就什么都不做,否则就运行那个命令把 ibus 整合关掉。
因为简体 locale 的 fcitx 和繁体语系的 gcin 默认优先级都比 ibus 高,所以不会有问题。问题可能出在比如简体装 gcin,它的默认优先级万一比 ibus 低(需要确认下),用户又不知道如何改输入法优先级的话,可能会出现比如傻傻地登出,回来后不但 gcin 没用上,原来的 ibus 也不灵了。。。
来自 Galaxy Note 2 上的 Tapatalk 4
現在這個 patch 不會送到上游,因為 openSUSE 的輸入法架構和 Fedora 不同
而這樣的修改在 openSUSE 中也不會犧牲 ibus,因為 /etc/X11/xim.d/ibus 已經宣告了 QT_IM_MODULE=ibus… 所以 ibus 也可以在 qt-base 程式中輸入
我不贊成這麼做,我們應該留給使用者自由選擇輸入法框架的自由,如果我使用 kde+gcin 我太太用同一台電腦,他的帳戶仍可以使用 gnome3+ibus 才行,你用 A 輸入法,去改動 B 輸入法,這說不通
我明天會去發 bug report,並提出我的解決方案,看看其他人反應如何
但不可能永远不送吧。openSUSE(尤其是 GNOME 的维护者)认为 Upstream First 是最重要的。所以应该会建议您跟上游沟通,GNOME 上游完全是不讲道理的,他们笃定:我们选择整合 IBus,所以就要 IBus 好,其它的,开源软件,自己改。IBus 上游目前黄鹏大大几乎不管事,管事的是个 RedHat 的日本人,他的特长就是每个 bugfix 开个 git branch,你要搜罗全部 branch 才能让 IBus 整合正常工作,而且这些 branch 跟 IBus 主程式码树的程式码几乎无法协调。这被 Debian 开发者抱怨过很多次了。
这确实是一个无法避免的问题。是我考虑不周。
但是你的这个例子,在 openSUSE 很难存在。因为输入法的优先级是在 /etc/X11/xim.d 中调整的。如果你装了 gcin,你太太已经是用不了 ibus 的了,除非她自己维护 /home/username/.Xresource 并用 autostart 脚本杀死 gcin 并启动 ibus。总不能每次都让你或你太太来调整一次优先级吧。除非你做成 KDE 的 autostart 在开机时调整成 gcin,但仍解决不了你们中途换手的情况,于是你还需要一个 gnome 下相应的 autostart 来确保 gnome 启动时 xim.d 下 ibus 的优先级总是最高。总之都是需要复杂的 workaround。一个需要 workaround 才能成立的用例的反驳力是很弱的。
用 A 输入法,去改动 B 输入法。道理很简单:因为问题出在 B 输入法,B 输入法没有留给 A 输入法的使用者自由选择输入法的自由,所以要改动它,这完全是它自取其辱。
你的修复只是把这个逻辑推进了一步,去改动了真正的罪魁祸首。我也很希望你能够成功,但是据我所知它的反对力量既无知且强大。于是很可能最终落实成我这种改法,它比你直面一个个问题(相信我,整合中存在的问题不是孤立的,还有很多,因为他们在设计上就没有尊重过其它输入法的生存权)更彻底,直接隔离了问题,同时这正是上游 IBus 开发者所建议的修复方法(这里你也能够看出来他的态度是怎样的了,基本就是修理整合 IBus 出现的 IBus 问题,其它输入法抱歉你可以选择不用整合,所以我的整合不需要考虑你)。之后你在你之前的那个用例下要做的不过是在你 gnome 的 autostart 里加上一行脚本确保那个 keyboard 选项是 active 的,仅此而已。
另外你举出的这个用例其实已经违背了“软件包安装的基本原则”那就是:你选择了安装,那就代表你要用,那我们就让你用上。至于我装了,但有时候不用。这种行为是不需要发行版打包者来考虑的(如果考虑这种行为,会产生很多的问题,比如某些清理 /tmp 的 cron 任务,用户需要不需要?肯定有不需要的,那你只能放到 /usr/share 然后写个 README 让它们自己复制。比如防火墙,要不要启动?肯定有不要的。于是你装了不启动只是浪费磁盘空间。)。正是因为这样,你这个用例才需要前面我讲的那么多 workaround。而我的逻辑则相对简单,你安装 gcin 就代表你要用,那我就让你用上,用不上?谁的问题?IBus,那我就处理 IBus。
实际上可能用互斥法来对付输入法“本身”会更简单一些,因为那样不会把用户和开发者的角度对立起来。现在这么做 IBus 用户肯定会骂我,但是事实上是 IBus 流毒流到了 fcitx/gcin,我只不过给堵回去了而已,他们更应该怨 IBus 和 GNOME 以邻为壑。
作为 IBus 用户不会骂,愿意用哪个就用哪个,不用 IBus 无所谓,改天我也用用 fcitx。
從 gcin 不維護 gcin-chewing 後,我太太就使用 fcitx-chewing , 我還是繼續使用 gcin,這不是什麼困難的事,不用管優先順序只要在自己家目錄下 .profile 最後加一句 export INPUT_METHOD=gcin 她的家目錄中是 export INPUT_METHOD=fcitx 登入後各人用各人的輸入法,哪有什麼麻煩事,/etc/X11/xim.d/zh_TW/ 中的順序只是建議不是強迫,當然每個人都可以選自己要用的輸入法
可你不觉得把那个禁用 keyboard 的命令写到你的 .profile 里一样会有效吗?
PS:你的 bug report 我看了,我觉得这么写很可能会得到修复,你 assign 给 DimStar 加速一下呢?我回头去 #opensuse-gnome 和他说下。
来自 Galaxy Note 2 上的 Tapatalk 4