fcitx / fcitx5

maybe a new fcitx.
1.59k stars 118 forks source link

请教一个问题,候选窗口在wayland/sway下不显示 #118

Closed swordhui closed 4 years ago

swordhui commented 4 years ago

新构建的linux系统,只安装了wayland/weston/sway/gtk3 和编译必须的x11 libs, 启动fcitx5后可以输入,但是候选字窗口没有出现,可能是什么原因?

fcitx5-diagnose

系统信息:

  1. uname -a:

    Linux Xg64 5.7.19 #1 SMP PREEMPT Fri Aug 28 16:16:48 CST 2020 x86_64 GNU/Linux
  2. lsb_release:

    lsb_release 未找到.

  3. /etc/lsb-release:

    DISTRIB_ID="Xiange Linux x86_64"
    DISTRIB_RELEASE="202009-systemd"
    DISTRIB_CODENAME="Sword"
    DISTRIB_DISCRIPTION="Xiange Linux x86_64 with systemd"
  4. /etc/os-release:

    NAME="Xiange Linux"
    VERSION="X86_64-202009"
    ID=xiange
    PRETTY_NAME="Xiange Linux X86_64-202009 4G LiveUSB"
    ANSI_COLOR="1;34"
    HOME_URL="http://code.google.com/p/xiangelinux"
    BUILD_ID="X86_64-LiveUSB-4G-2020.09.03"
  5. 桌面环境:

    无法确定桌面环境。

  6. Bash 版本:

    BASH_VERSION='5.0.18(1)-release'

环境:

  1. DISPLAY:

    DISPLAY=''
  2. 键盘布局:

    1. setxkbmap:

      setxkbmap 未找到.

    2. xprop:

      xprop 未找到.

  3. Locale:

    1. 全部可用 locale:

      C
      en_US
      en_US.iso88591
      en_US.utf8
      POSIX
      zh_CN.gb2312
      zh_CN.utf8
    2. 当前 locale:

      LANG=zh_CN.UTF-8
      LC_CTYPE="zh_CN.UTF-8"
      LC_NUMERIC="zh_CN.UTF-8"
      LC_TIME="zh_CN.UTF-8"
      LC_COLLATE="zh_CN.UTF-8"
      LC_MONETARY="zh_CN.UTF-8"
      LC_MESSAGES="zh_CN.UTF-8"
      LC_PAPER="zh_CN.UTF-8"
      LC_NAME="zh_CN.UTF-8"
      LC_ADDRESS="zh_CN.UTF-8"
      LC_TELEPHONE="zh_CN.UTF-8"
      LC_MEASUREMENT="zh_CN.UTF-8"
      LC_IDENTIFICATION="zh_CN.UTF-8"
      LC_ALL=
  4. 目录:

    1. 主目录:

      /home/sword
    2. ${XDG_CONFIG_HOME}:

      环境变量 XDG_CONFIG_HOME 没有设定。

      XDG_CONFIG_HOME 的当前值是 ~/.config (/home/sword/.config)。

    3. Fcitx5 设置目录:

      当前 fcitx5 设置目录是 ~/.config/fcitx5 (/home/sword/.config/fcitx5)。

  5. 当前用户:

    脚本作为 sword (1004) 运行。

Fcitx 状态:

  1. 可执行文件:

    /usr/bin/fcitx5 找到了 fcitx5。

  2. 版本:

    Fcitx 版本: 5.0

  3. 进程:

    找到了 1 个 fcitx5 进程:

      48300 fcitx5
  4. fcitx5-remote:

    fcitx5-remote 工作正常。

  5. DBus 界面:

    使用 dbus-send 来检查 dbus。

    DBus 名称 org.fcitx.Fcitx5 的所有者是 :1.83

    DBus 名称 org.fcitx.Fcitx5 的 PID 所有者是 48300

Fcitx 配置界面:

  1. 配置工具封装:

    /usr/bin/fcitx5-configtool 找到了 fcitx5-configtool。

  2. Qt 的配置界面:

    未找到 qt 的配置界面。

  3. KDE 的配置界面:

    kcmshell5 未找到.

    无法找到一个图形界面的配置工具,请安装 kcm-fcitx5fcitx5-config-qt

前端设置:

Xim:

  1. ${XMODIFIERS}:

    环境变量 XMODIFIERS 已经正确地设为了“@im=fcitx”。 从环境变量中获取的 Xim 服务名称为 fcitx.

  2. 根窗口上的 XIM_SERVERS:

    xprop 未找到.

Qt:

  1. qt4 - ${QT4_IM_MODULE}:

    环境变量 QT_IM_MODULE 已经正确地设为了“fcitx”。

  2. qt5 - ${QT_IM_MODULE}:

    环境变量 QT_IM_MODULE 已经正确地设为了“fcitx”。

  3. Qt 输入法模块文件:

    无法找到 Qt4 的 fcitx5 输入法模块。 无法找到 Qt5 的 fcitx5 输入法模块。

Gtk:

  1. gtk - ${GTK_IM_MODULE}:

    环境变量 GTK_IM_MODULE 已经正确地设为了“fcitx”。

  2. gtk-query-immodules:

    1. gtk 2:

      无法找到 gtk 2 的 gtk-query-immodules

      无法找到 gtk 2 的 fcitx5 输入法模块。

    2. gtk 3:

      /usr/bin/gtk-query-immodules-3.0 找到了 gtk 3.24.22gtk-query-immodules。 版本行:

      # Created by /usr/bin/gtk-query-immodules-3.0 from gtk+-3.24.22

      已找到 gtk 3.24.22 的 fcitx5 输入法模块。

      "/usr/lib/gtk-3.0/3.0.0/immodules/im-fcitx5.so" 
      "fcitx" "Fcitx5 (Flexible Input Method Framework5)" "fcitx5" "/usr/locale" "ja:ko:zh:*" 
      "fcitx5" "Fcitx5 (Flexible Input Method Framework5)" "fcitx5" "/usr/locale" "ja:ko:zh:*" 
  3. Gtk 输入法模块缓存:

    1. gtk 2:

      无法找到 gtk 2 的输入法模块缓存

      无法在缓存中找到 gtk 2 的 fcitx5 输入法模块。

    2. gtk 3:

      /usr/lib64/gtk-3.0/3.0.0/immodules.cache 找到了 gtk 3.24.22 的输入法模块缓存。 版本行:

      # Created by gtk-query-immodules-3.0 from gtk+-3.24.22

      已找到 gtk 3.24.22 的 fcitx5 输入法模块。

      "/usr/lib/gtk-3.0/3.0.0/immodules/im-fcitx5.so" 
      "fcitx" "Fcitx5 (Flexible Input Method Framework5)" "fcitx5" "/usr/locale" "ja:ko:zh:*" 
      "fcitx5" "Fcitx5 (Flexible Input Method Framework5)" "fcitx5" "/usr/locale" "ja:ko:zh:*" 
  4. Gtk 输入法模块文件:

    1. gtk 2:

      找到的全部 Gtk 2 输入法模块文件均存在。

    2. gtk 3:

      找到的全部 Gtk 3 输入法模块文件均存在。

配置:

Fcitx 插件:

  1. 插件配置文件目录:

    找到了 fcitx5 的插件配置目录:/usr/share/fcitx5/addon

  2. 插件列表:

    1. 找到了 25 个已启用的插件:

      Simplified and Traditional Chinese Translation
      Classic User Inteface
      Clipboard
      Cloud Pinyin
      DBus
      DBus Frontend
      Emoji
      Full width character
      IBus Frontend
      Input method selector
      Keyboard
      KDE Input Method Panel
      Status Notifier
      Notification
      Pinyin
      Extra Pinyin functionality
      Punctuation
      Quick Phrase
      Spell
      Table
      Unicode
      Wayland
      Wayland Input method frontend
      XCB
      X Input Method Frontend
    2. 找到了 0 个被禁用的插件:

  3. 插件库:

    所有插件所需的库都被找到。

  4. 用户界面:

    找到了 2 个已启用的用户界面插件:

    Classic User Inteface
    KDE Input Method Panel

日志:

  1. date:

    2020年 09月 16日 星期三 17:19:00 CST
  2. /home/sword/.config/fcitx5/crash.log:

    /crash.log 未找到.

安装顺序:

 389    2020-09-15 16:54:50  36350K     x86_64 presage-0.9.1
   390  2020-09-15 17:02:07    541K     x86_64 extra-cmake-modules-5.73.0
   391  2020-09-15 18:04:16    898K     x86_64 greetd-0.6.1
   392  2020-09-16 11:09:25     32K     x86_64 gtkgreet-0.6
   393  2020-09-16 14:34:49    610K     x86_64 fmt-7.0.3
   394  2020-09-16 14:48:10  79543K     x86_64 cldr-emoji-annotation-38.1.13.1
   395  2020-09-16 15:22:50    675K     x86_64 xcb-imdkit-2020.9
   396  2020-09-16 15:24:28    621K     x86_64 xkbcommon-0.10.0
   397  2020-09-16 15:26:30  12359K     x86_64 fcitx-5.0
   398  2020-09-16 16:15:22  51255K     x86_64 libime-2020.9
   399  2020-09-16 16:20:53    114K     x86_64 fcitx5-gtk-2020.9
   400  2020-09-16 16:48:49   3829K     x86_64 fcitx5-chinese-addons-2020.9
swordhui commented 4 years ago

IMG_20200916_175728_2

swordhui commented 4 years ago

fcitx5 & [3] 2684 xiange@Xg64 ~ $I2020-09-16 22:27:31.551006 instance.cpp:1183] Override Enabled Addons: {} I2020-09-16 22:27:31.551096 instance.cpp:1184] Override Disabled Addons: {} I2020-09-16 22:27:31.552417 addonmanager.cpp:177] Loaded addon wayland I2020-09-16 22:27:31.553059 addonmanager.cpp:177] Loaded addon xcb I2020-09-16 22:27:31.554544 addonmanager.cpp:177] Loaded addon quickphrase I2020-09-16 22:27:31.554729 addonmanager.cpp:177] Loaded addon clipboard I2020-09-16 22:27:31.554878 addonmanager.cpp:177] Loaded addon imselector I2020-09-16 22:27:31.582377 addonmanager.cpp:177] Loaded addon keyboard I2020-09-16 22:27:31.582745 addonmanager.cpp:177] Loaded addon waylandim I2020-09-16 22:27:31.684791 addonmanager.cpp:177] Loaded addon unicode I2020-09-16 22:27:31.830802 addonmanager.cpp:177] Loaded addon pinyinhelper I2020-09-16 22:27:31.831862 addonmanager.cpp:177] Loaded addon dbus I2020-09-16 22:27:31.835867 addonmanager.cpp:177] Loaded addon ibusfrontend I2020-09-16 22:27:31.836154 addonmanager.cpp:177] Loaded addon xim I2020-09-16 22:27:31.836594 addonmanager.cpp:177] Loaded addon dbusfrontend I2020-09-16 22:27:31.842388 inputmethodmanager.cpp:193] Found 695 input method(s) in addon keyboard I2020-09-16 22:27:31.843178 addonmanager.cpp:177] Loaded addon kimpanel I2020-09-16 22:27:31.864519 addonmanager.cpp:177] Loaded addon classicui I2020-09-16 22:27:31.865091 addonmanager.cpp:177] Loaded addon notificationitem I2020-09-16 22:27:31.865573 addonmanager.cpp:177] Loaded addon notifications I2020-09-16 22:27:31.865704 kimpanel.cpp:112] Kimpanel new owner

xiange@Xg64 ~ $ xiange@Xg64 ~ $ xiange@Xg64 ~ $I2020-09-16 22:27:53.642180 addonmanager.cpp:177] Loaded addon punctuation I2020-09-16 22:27:53.731112 addonmanager.cpp:177] Loaded addon pinyin I2020-09-16 22:27:53.731312 addonmanager.cpp:177] Loaded addon fullwidth I2020-09-16 22:27:53.731496 addonmanager.cpp:177] Loaded addon chttrans

xiange@Xg64 ~ $ xiange@Xg64 ~ $ls Downloads sway-session.sh wallpapers work xiange@Xg64 ~ $I2020-09-16 22:28:26.872287 addonmanager.cpp:177] Loaded addon cloudpinyin I2020-09-16 22:28:26.879446 addonmanager.cpp:177] Loaded addon spell

wengxt commented 4 years ago

需要开启 xwayland。

swordhui commented 4 years ago

需要开启 xwayland。

谢谢,还真没编译xwayland. 有不依赖xwayland的开发计划吗?

wengxt commented 4 years ago

问题比较复杂,但基本上不能算 fcitx 的问题。程序自己的支持不够好

swordhui commented 3 years ago

问题比较复杂,但基本上不能算 fcitx 的问题。程序自己的支持不够好

我简单追了一下,发现问题在于 frontend=dbus但display=wayland:, 这导致

if (stringutils::startsWith(inputContext->display(), "wayland:") && !stringutils::startsWith(inputContext->frontend(), "wayland")) { // If display is wayland, but frontend is not, then we can only do X11 // for now, though position is wrong. We don't know which is xwayland // unfortunately, hopefully main display is X wayland. // The position will be wrong anyway. auto mainX11Display = xcb()->call(); if (!mainX11Display.empty()) { if (auto *uiPtr = findValue(uis_, "x11:" + mainX11Display)) { ui = uiPtr->get(); } }

请问在wayland下如何将frontend设为wayland? 我在GTK3和QT5的程序里启动输入,frontend都是dbus, 但在weston-terminal无法启动输入法。

如果需要测试环境: 链接:https://pan.baidu.com/s/138F6EDPHtE43gl04kqMQmA 提取码:eudq 这里是一个完全从源码编译的纯wayland LiveUSB, 解压后dd写入U盘启动即可,用户名和密码均为xiange

wengxt commented 3 years ago

1、weston-terminal 根本就不支持输入法,代码里就没有。 2、并不是要fcitx选择,是要程序来选择,qt 5 不支持现行 wayland 的协议,gtk3 需要 GTK_IM_MODULE=wayland 然后才能用 frontend 那个 wayland,但是这里同时还需要你的 wayland compositor 支持,而 sway 根本就没支持 frontend 是 wayland 情况下的界面,只有部分关于按键和输入的支持(而且还bug很多)。