V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
falser101
V2EX  ›  Linux

求助! idea 启用原生 wayland 后无法使用 fcitx 中文输入法

  •  
  •   falser101 · 8 天前 · 1291 次点击

    ~/.config/JetBrains/IntelliJIdea2024.3/idea64.vmoption 配置 -Dawt.toolkit.name=WLToolkit 添加了这行,使用 xwayland 时输入法可用

    --add-exports=jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED
    --add-exports=jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED
    --add-exports=jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED
    --add-exports=jdk.compiler/com.sun.tools.javac.parser=ALL-UNNAMED
    --add-exports=jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED
    --add-exports=jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED
    -Xmx4096m
    -Dide.managed.by.toolbox=/home/falser/.local/share/JetBrains/Toolbox/bin/jetbrains-toolbox
    -Dsun.java2d.uiScale.enabled=true
    -Dtoolbox.notification.token=1f048724-9f7a-4a09-8c0c-df9d44ad8fda
    -Dtoolbox.notification.portFile=/home/falser/.cache/JetBrains/Toolbox/ports/d3924f5b-a107-45fc-be02-dd3ccead9373.port
    -Dawt.toolkit.name=WLToolkit 
    

    hyprctl clients,可以看到是运行到 wayland 下了

    Window 5fcf54171d60 -> tongpulsar_console – ~/.config/JetBrains/IntelliJIdea2024.3/idea64.vmoptions:
    	mapped: 1
    	hidden: 0
    	at: 10,47
    	size: 2028,1095
    	workspace: 5 (5)
    	floating: 0
    	pseudo: 0
    	monitor: 0
    	class: jetbrains-idea
    	title: tongpulsar_console – ~/.config/JetBrains/IntelliJIdea2024.3/idea64.vmoptions
    	initialClass: jetbrains-idea
    	initialTitle: 
    	pid: 83963
    	xwayland: 0
    	pinned: 0
    	fullscreen: 0
    	fullscreenClient: 0
    	grouped: 0
    	tags: 
    	swallowing: 0
    	focusHistoryID: 5
    	inhibitingIdle: 0
    

    请问下各位大佬有解决办法吗

    27 条回复    2025-03-06 16:41:08 +08:00
    wwew
        1
    wwew  
       8 天前
    用 fcitx5 ?
    falser101
        2
    falser101  
    OP
       8 天前
    @wwew 是的,这是我的# 系统信息:
    1. `uname -a`:

    Linux archlinux 6.13.4-arch1-1 #1 SMP PREEMPT_DYNAMIC Sat, 22 Feb 2025 00:37:05 +0000 x86_64 GNU/Linux

    2. `lsb_release -a`:

    LSB Version: n/a
    Distributor ID: Arch
    Description: Arch Linux
    Release: rolling
    Codename: n/a

    3. `lsb_release -d`:

    Description: Arch Linux

    4. `/etc/lsb-release`:

    DISTRIB_ID="Arch"
    DISTRIB_RELEASE="rolling"
    DISTRIB_DESCRIPTION="Arch Linux"

    5. `/etc/os-release`:

    NAME="Arch Linux"
    PRETTY_NAME="Arch Linux"
    ID=arch
    BUILD_ID=rolling
    ANSI_COLOR="38;2;23;147;209"
    HOME_URL="https://archlinux.org/"
    DOCUMENTATION_URL="https://wiki.archlinux.org/"
    SUPPORT_URL="https://bbs.archlinux.org/"
    BUG_REPORT_URL="https://gitlab.archlinux.org/groups/archlinux/-/issues"
    PRIVACY_POLICY_URL="https://terms.archlinux.org/docs/privacy-policy/"
    LOGO=archlinux-logo

    6. 桌面环境:

    无法确定桌面环境。

    7. XDG 会话类型:

    XDG_SESSION_TYPE='wayland'

    8. Bash 版本:

    BASH_VERSION='5.2.37(1)-release'

    # 环境:
    1. DISPLAY:

    DISPLAY=':1'


    WAYLAND_DISPLAY='wayland-1'

    2. 键盘布局:

    1. `setxkbmap`:

    WARNING: Running setxkbmap against an Xwayland server
    xkb_keymap {
    xkb_keycodes { include "evdev+aliases(qwerty)" };
    xkb_types { include "complete" };
    xkb_compat { include "complete" };
    xkb_symbols { include "pc+us+inet(evdev)" };
    xkb_geometry { include "pc(pc105)" };
    };

    2. `xprop`:

    _XKB_RULES_NAMES(STRING) = "evdev", "pc105", "us", "", ""

    3. Locale:

    1. 全部可用 locale:

    C
    C.utf8
    en_US.utf8
    POSIX
    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/falser

    2. `${XDG_CONFIG_HOME}`:

    环境变量 `XDG_CONFIG_HOME` 是设定为 `/home/falser/.config` 。

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

    3. Fcitx5 设置目录:

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

    5. 当前用户:

    脚本作为 falser (1000) 运行。

    # Fcitx 状态:
    1. 可执行文件:

    在 `/usr/bin/fcitx5` 找到了 fcitx5 。

    2. 版本:

    Fcitx 版本: `5.1.12`

    3. 进程:

    找到了 1 个 fcitx5 进程:

    1923 fcitx5

    4. `fcitx5-remote`:

    `fcitx5-remote` 工作正常。

    5. DBus 界面:

    使用 `dbus-send` 来检查 dbus 。

    DBus 名称 `org.fcitx.Fcitx5` 的所有者是 `:1.57`。

    DBus 名称 `org.fcitx.Fcitx5` 的 PID 所有者是 `1923`。

    来自 dbus 的调试信息:

    Group [wayland:] has 8 InputContext(s)
    IC [f752447188e442f6a5c5ca9a475b6835] program:Microsoft-edge frontend:wayland_v2 cap:72 focus:0
    IC [4e7d8373a09f4de79d478d003de70ba3] program:zen frontend:wayland_v2 cap:72 focus:0
    IC [20de7386f9ed484ab47190baeed0b200] program:wechat frontend:wayland_v2 cap:100000072 focus:0
    IC [b4340167e2ec40a1ac9c8016e77b40ed] program:jetbrains-idea frontend:wayland_v2 cap:100000072 focus:0
    IC [221ed0f1d4094aedbc9c367c0a03ab8b] program:clash-verge frontend:wayland_v2 cap:100000072 focus:0
    IC [04937c402873485e94731b323c8fc0d6] program:kitty frontend:wayland_v2 cap:100000072 focus:1
    IC [0af76c523f9f405aab41ec0985f135ea] program:Feishu frontend:wayland_v2 cap:100000072 focus:0
    IC [f7daf61527764077a4c8f25a26c74b5c] program: frontend:wayland_v2 cap:100000072 focus:0
    Group [x11::1] has 3 InputContext(s)
    IC [2c1f7e758b4742feab0da104ea948313] program:microsoft-edge frontend:dbus cap:6000000032 focus:0
    IC [fa590881e7964ceba0b5a7859b59cd8a] program:wechat frontend:fcitx4 cap:800072 focus:0
    IC [630896dfafa74a928f3b7b95b84c2bf4] program:feishu frontend:dbus cap:6000000032 focus:0
    Input Context without group

    # 前端设置:
    此脚本检查的环境变量仅能显示当前命令行的环境。仍有可能您的环境并没有应用于整个桌面。您可以通过使用命令对某个无法正常工作的进程使用命令 `xargs -0 -L1 /proc/$PID/environ` 检查此进程的实际的环境变量。

    ## Xim:
    1. `${XMODIFIERS}`:

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

    2. 根窗口上的 XIM_SERVERS:

    Xim 服务的名称与环境变量中设置的相同。

    ## Qt:
    1. qt4 - `${QT4_IM_MODULE}`:

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

    **`fcitx5-qt4-immodule-probing` 未找到.**

    2. qt5 - `${QT_IM_MODULE}`:

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

    使用 fcitx5-qt5-immodule-probing 来检查在当前环境下将被实际使用的输入法模块:

    QT_QPA_PLATFORM=wayland
    QT_IM_MODULE=fcitx
    IM_MODULE_CLASSNAME=fcitx::QFcitxPlatformInputContext

    3. qt6 - `${QT_IM_MODULE}`:

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

    使用 fcitx5-qt6-immodule-probing 来检查在当前环境下将被实际使用的输入法模块:

    QT_QPA_PLATFORM=wayland
    QT_IM_MODULE=fcitx
    IM_MODULE_CLASSNAME=fcitx::QFcitxPlatformInputContext

    4. Qt 输入法模块文件:

    找到了 fcitx5 的 qt 输入法模块:`/usr/lib/qt/plugins/platforminputcontexts/libfcitx5platforminputcontextplugin.so`。
    找到了未知的 fcitx qt 模块:`/usr/lib/office6/qt/plugins/platforminputcontexts/libfcitxplatforminputcontextplugin.so`。
    找到了 fcitx5 qt6 模块:`/usr/lib/fcitx5/qt6/libfcitx-quickphrase-editor5.so`。
    找到了 fcitx5 qt5 模块:`/usr/lib/fcitx5/qt5/libfcitx-quickphrase-editor5.so`。
    找到了未知的 fcitx qt 模块:`/usr/lib/qt6/plugins/plasma/kcms/systemsettings/kcm_fcitx5.so`。
    找到了 fcitx5 的 qt6 输入法模块:`/usr/lib/qt6/plugins/platforminputcontexts/libfcitx5platforminputcontextplugin.so`。

    下列错误也许并不准确,因为对路径所对应的 Qt 版本的猜测取决于发行版如何打包 Qt 。如果您不使用任何对应版本的 Qt 程序,或者在 Wayland 下使用 Qt 的 text-input 支持,下列错误也不是严重问题。
    **无法找到 Qt4 的 fcitx5 输入法模块。**

    ## Gtk:
    1. gtk - `${GTK_IM_MODULE}`:

    **请使用您发行版提供的工具将环境变量 GTK_IM_MODULE 设为 "fcitx" 或者将 `export GTK_IM_MODULE=fcitx` 添加到您的 `~/.xprofile` 中。参见 [输入法相关的环境变量:GTK_IM_MODULE]( http://fcitx-im.org/wiki/Input_method_related_environment_variables/zh-cn#GTK_IM_MODULE)。**

    **如果您的混成器完全支持 gtk 使用的 text-input 协议,您也可以使用 gtk 内置的 Wayland 模块。**

    使用 fcitx5-gtk2-immodule-probing 来检查在当前环境下将被实际使用的输入法模块:

    GTK_IM_MODULE=xim

    使用 fcitx5-gtk3-immodule-probing 来检查在当前环境下将被实际使用的输入法模块:

    GTK_IM_MODULE=wayland

    使用 fcitx5-gtk4-immodule-probing 来检查在当前环境下将被实际使用的输入法模块:

    GTK_IM_MODULE=wayland

    2. `gtk-query-immodules`:

    1. gtk 2:

    在 `/usr/bin/gtk-query-immodules-2.0` 找到了 gtk `2.24.33` 的 `gtk-query-immodules`。
    版本行:

    # Created by /usr/bin/gtk-query-immodules-2.0 from gtk+-2.24.33

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

    "/usr/lib/gtk-2.0/2.10.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:*"

    在 `/usr/bin/gtk-query-immodules-2.0-32` 找到了 gtk `2.24.33` 的 `gtk-query-immodules`。
    版本行:

    # Created by /usr/bin/gtk-query-immodules-2.0-32 from gtk+-2.24.33

    **无法在 `/usr/bin/gtk-query-immodules-2.0-32` 的输出中找到 fcitx5 。**

    2. gtk 3:

    在 `/usr/bin/gtk-query-immodules-3.0` 找到了 gtk `3.24.48` 的 `gtk-query-immodules`。
    版本行:

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

    已找到 gtk `3.24.48` 的 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:

    在 `/usr/lib/gtk-2.0/2.10.0/immodules.cache` 找到了 gtk `2.24.33` 的输入法模块缓存。
    版本行:

    # Created by /usr/bin/gtk-query-immodules-2.0 from gtk+-2.24.33

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

    "/usr/lib/gtk-2.0/2.10.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:*"

    在 `/usr/lib32/gtk-2.0/2.10.0/immodules.cache` 找到了 gtk `2.24.33` 的输入法模块缓存。
    版本行:

    # Created by /usr/bin/gtk-query-immodules-2.0-32 from gtk+-2.24.33

    **无法输入法模块缓存 `/usr/lib32/gtk-2.0/2.10.0/immodules.cache` 中找到 fcitx5**

    2. gtk 3:

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

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

    已找到 gtk `3.24.48` 的 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 输入法模块文件均存在。

    3. gtk 4:

    找到的全部 Gtk 4 输入法模块文件均存在。
    falser101
        3
    falser101  
    OP
       8 天前
    以上为 fcitx5-diagnose 的输出
    mizuki9
        5
    mizuki9  
       8 天前
    I use kde btw ,linux 桌面太分裂了,选个主流的坑少。
    falser101
        6
    falser101  
    OP
       8 天前
    @mizuki9 我也想回 kde 了,hyprland 动画好看
    cnt2ex
        7
    cnt2ex  
       8 天前
    我现在基本已经放弃在 wayland 上使用输入法了。只能等应用 wayland 的支持更好一点再说。
    现在要么使用 wayland 就干脆不输入中文,要么就使用 x11 打开应用。

    目前我知道的包括 chrome 系列( chromium/brave )、Electron 框架的 app (比如 vscode 、Electronmail )、jetbrain 系列等等都无法在 wayland 上使用输入法。但是 firefox 系列、thunderbird 可以。
    mizuki9
        8
    mizuki9  
       8 天前
    @cnt2ex 反正 kde 的 Wayland 支持还可以了,chromium 系、Electron 系按照 archlinux wiki 设置,Wayland 下 fcitx5 输入中文没有任何问题了。jetbrain 不清楚。 现在的 Wayland 我认为是比较成熟了,一两年前确实还是一坨,现在是我觉得是正常可用了
    ns09005264
        9
    ns09005264  
       8 天前
    https://youtrack.jetbrains.com/issue/JBR-5672/Wayland-support-input-methods

    可能 WLToolkit 还不支持 Input-Method-V3 或 V1 。
    cnt2ex
        10
    cnt2ex  
       8 天前
    @mizuki9 的确,我发现 chromium 系列和 electron 系列去年添加了 text-input-v3 的支持,可以正常使用输入法了。jetbrain 的似乎还没有。
    phithon
        11
    phithon  
       8 天前
    Ubuntu 24.04 + wayland + gnome + ibus + rime ,没遇到过输入法问题
    mizuki9
        12
    mizuki9  
       8 天前
    @cnt2ex text-input-v3 有 bug ,说是 “由于对 text-input-v3 协议的理解不同,在使用 KWin 时会出现一些问题”,chrome 看 B 站长按右方向键快进无效,会变成连续跳跃几秒进度条。所以我还是用的 text-input-v1
    barathrum
        13
    barathrum  
       8 天前
    @cnt2ex #7 这些应用其实也能用中文输入法, 但是问题很多, 经常输入法候选框不在输入的光标处, 甚至经常在另一个屏幕上, 十分难受.
    yukafans
        14
    yukafans  
       7 天前
    @barathrum 我用的 gnome+fcitx5 ,自从 electron33 开启 text-input-v3 之后你说的问题通通消失了
    Maboroshii
        15
    Maboroshii  
       7 天前
    @phithon 我记得之前 ibus 有漏字的问题(主要是 chrome 系严重),现在已经解决了吗。
    SmithJohn
        16
    SmithJohn  
       7 天前
    linux 上我直接就没装中文输入法.
    能英文尽量英文,不能英文就用谷歌的网页输入法.
    rayae
        17
    rayae  
       7 天前
    jb 系列软件的 wayland 是测试版,还不支持输入法,官方回复已经在新建文件夹了
    FanyFull
        18
    FanyFull  
       7 天前 via Android
    目前还不支持。早就说在开发中了,结果到现在杳无音讯。不知道为啥这么慢:
    https://youtrack.jetbrains.com/issue/JBR-5672/Wayland-support-input-methods
    SP00F
        19
    SP00F  
       7 天前
    sway 也是,后来干脆切 kde 了
    minami
        20
    minami  
       7 天前
    说难听的,wayland 和 wayland 之间的差异比 x11 和 xwayland 之间的差异还大,wayland 生态就是个畸形的、到处分裂的怪胎,这一切都源于 wayland 开发团队的自以为是。说正经的,你光说在 wayland 下怎么怎么样,没有任何意义,你必须带上你的发行版和桌面环境信息,同样一个号称支持了 wayland 的程序,完全有可能在 GNOME 是好的,在其他桌面环境就是彻底不能用的
    phithon
        21
    phithon  
       7 天前
    @Maboroshii 我好像没遇到过
    falser101
        22
    falser101  
    OP
       7 天前
    @cnt2ex electron 系列可以加启动参数,jetbrain 只能用 xwayland 使用才能用中文了
    falser101
        23
    falser101  
    OP
       7 天前
    @minami 每个桌面都是自己的实现,差异确实大
    minami
        24
    minami  
       6 天前
    @falser101 #23 官方的实现 weston 更是个重量级。。。太坑了,大家宁愿用别的
    yinaqu
        25
    yinaqu  
       4 天前
    我记得 jetbrains 在开发 java 原生 wayland 支持,目前还没有实现 wayland 协议的 input method 协议吧?他们的进度是真的缓慢,要再等。https://youtrack.jetbrains.com/issue/JBR-5672/Wayland-support-input-methods
    ztmzzz
        26
    ztmzzz  
       1 小时 39 分钟前 via iPhone
    hyprland 下,fcitx5 可以直接用啊,安装打开默认就是 wayland 。就是有缩放的情况下候选框不会正常缩放,还是原始比例。
    AlexHsu
        27
    AlexHsu  
       1 小时 25 分钟前
    vscode 能用 idea 就不写注释了吧 界面需要中文的时候我都是 google 网页输入法粘贴过去
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4554 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 33ms · UTC 10:06 · PVG 18:06 · LAX 02:06 · JFK 05:06
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.