发新帖

【问题】关于ibus中文输入的问题

heavenzone / 2017-11-15 02:26
浏览: 107 / 回复: 4
查看: 107|回复: 4

【问题】关于ibus中文输入的问题

[复制链接]
收藏
跳转到指定楼层
最近安装了社区版manjaro-i3,一直都好好的,今天不知道为什么突然不能用ibus输入中文,估计是升级了一下导致的(猜测是pygobject3.26这个包的问题,卸载ibus,重新安装ibus的时候提示pygobject3.26与pygobject3.24冲突)。

无论是之前正常还是现在不正常,我已经在`.bashrc`中加了下面几句:

  1. export GTK_IM_MODULE=ibus
  2. export XMODIFIERS=@im=ibus
  3. export QT_IM_MODULE=ibus
复制代码

所有locale显示全部都是zh_CN.UTF-8。

## 先说说之前正常情况下的一些异常情况

manjaro-i3自带了dmenu和morc_menu

- morc_menu菜单不显示中文名称(按道理全部都设置成zh_CN.UTF-8,菜单会显示中文)
- 使用dmenu和morc_menu启动Rstudio用ibus不能输入中文
- 使用dmenu和morc_menu启动其他程序,例如firefox、pcmanfm等程序,可以输入中文
- 使用i3绑定的快捷键启动firefox、pcmanfm等程序可以输入中文
- 使用urxvt启动Rstudio可以输入中文,在`.Xresources`设置了·urxvt.inputMethod: ibus`,如果不设这个在urxvt上不能输入中文,用urxvt启动的程序也不能输入中文

## 现在不正常的情况是

- 使用urxvt启动其他程序都可以输入中文,在`.Xresources`设置了·urxvt.inputMethod: ibus`,如果不设这个在urxvt上不能输入中文,用urxvt启动的程序也不能输入中文
- 使用dmenu和morc_menu启动Rstudio用ibus不能输入中文
- 使用dmenu和morc_menu启动其他程序,例如firefox、pcmanfm等程序,也不可以输入中文
- 使用i3绑定的快捷键启动firefox、pcmanfm等程序不可以输入中文

## 疑问

- 为什么dmenu和morc_menu启动的程序不能输入中文?难道是它们启动的环境不支持中文?为什么之前是可以呢?
- 全部locale都设成`zh_CN.UTF-8`为什么通过i3绑定快捷键启动morc_menu显示的菜单不显示中文呢?
- 既然用urxvt在`.Xresources`设置了`urxvt.inputMethod: ibus`,就可以输入中文了,那么有什么方法也可以对其他程序做同样的设置?或者说直接在启动桌面环境的时候就做这个全局设置?

求大神科普一下关于中文输入的知识。







1

主题

340

帖子

986

积分

-rw-r--r--

Rank: 4

积分
986
wtz 发表于 5 天前 | 显示全部楼层
LOCALES全部设成“zh_CN.UTF-8”也不一定会显示中文,比如Gnome、KDE都有自己的API和配置,语言和区域设置是可以独立于系统设置的。
至于输入法,可能是升级后缺少后端的库,比如ibus-qt5、ibus-gtk3之类的。RStudio是用Qt写的,和PCManFM等Gtk程序有显著不同。fcitx有时候也会因为这个原因而无法输入中文。
纯属猜测。求真大神解释。

1

主题

3

帖子

29

积分

-r--------

Rank: 1

积分
29
heavenzone 发表于 5 天前 | 显示全部楼层
本帖最后由 heavenzone 于 2017-11-15 19:23 编辑

@wtz

arch是有一个包ibus-qt的,即使我安装了ibus-qt并没有对在rstudio输入中文起什么作用。不过我不安装的话,也可以在urxvt启动的rstudio里面输入中文。

今天我打开了`/usr/bin/rstudio-bin`,发现是这样的:

  1. $ cat /usr/bin/rstudio-bin
  2. #!/bin/sh
  3. export QT_DIR=/usr/lib/rstudio/bin
  4. export QT_PLUGIN_PATH=$QT_DIR/plugins
  5. export QT_QPA_PLATFORM_PLUGIN_PATH=$QT_PLUGIN_PATH/platforms
  6. export KDEDIRS=/usr
  7. exec /usr/lib/rstudio/bin/rstudio "$@"
复制代码


于是我添加了一行`export QT_IM_MODULE=ibus`,也就是改为如下:

  1. $ cat /usr/bin/rstudio-bin
  2. #!/bin/sh
  3. export QT_DIR=/usr/lib/rstudio/bin
  4. export QT_PLUGIN_PATH=$QT_DIR/plugins
  5. export QT_QPA_PLATFORM_PLUGIN_PATH=$QT_PLUGIN_PATH/platforms
  6. export KDEDIRS=/usr
  7. export QT_IM_MODULE=ibus
  8. exec /usr/lib/rstudio/bin/rstudio "$@"
复制代码


这样发现就可以在morc_menu和dmenu下面启动的rstudio里面输入中文了。

那么现在的问题是,为什么我已经在`.bashrc`里面已经添加了下面这三行环境变量代码,而morc_menu和dmenu却没有继承呢?

  1. # ibus
  2. export GTK_IM_MODULE=ibus
  3. export XMODIFIERS=@im=ibus
  4. export QT_IM_MODULE=ibus
复制代码


为什么在其他程序里面就可以直接输入中文呢?

-_-!

1

主题

340

帖子

986

积分

-rw-r--r--

Rank: 4

积分
986
wtz 发表于 5 天前 | 显示全部楼层
heavenzone 发表于 2017-11-15 19:22
@wtz

arch是有一个包ibus-qt的,即使我安装了ibus-qt并没有对在rstudio输入中文起什么作用。不过我不安装 ...

可能morc_menu和dmenu启动其他程序的时候会重置环境变量?
个人没用过i3wm,纯属猜测。

3

主题

183

帖子

669

积分

-r--r--r--

Rank: 3Rank: 3

积分
669
woodelf 发表于 5 天前 | 显示全部楼层
Hmm,遇到过同样的问题,没找到原因,只说解决方法。
我是在.profile中添加了几行配置,解决了中文输入问题。
  1. if [ "$DESKTOP_SESSION" = "i3" ]; then
  2.     export XMODIFIERS=@im=fcitx
  3.     export GTK_IM_MODULE=fcitx
  4.     export QT_IM_MODULE=fcitx
  5. fi
复制代码

morc_menu在我仓库里没有,不便测试。但是要能正确显示中文,需要具备三个条件:1、LC_MESSAGES设置为中文locale,2、程序本身支持中文locale,3、程序的UI字体支持中文显示。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回列表 返回版块 返回顶部