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

243 天前
 falser101

~/.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

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

3263 次点击
所在节点    Linux
38 条回复
wwew
243 天前
用 fcitx5 ?
falser101
243 天前
@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
243 天前
以上为 fcitx5-diagnose 的输出
mizuki9
243 天前
mizuki9
243 天前
I use kde btw ,linux 桌面太分裂了,选个主流的坑少。
falser101
243 天前
@mizuki9 我也想回 kde 了,hyprland 动画好看
cnt2ex
243 天前
我现在基本已经放弃在 wayland 上使用输入法了。只能等应用 wayland 的支持更好一点再说。
现在要么使用 wayland 就干脆不输入中文,要么就使用 x11 打开应用。

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

可能 WLToolkit 还不支持 Input-Method-V3 或 V1 。
cnt2ex
243 天前
@mizuki9 的确,我发现 chromium 系列和 electron 系列去年添加了 text-input-v3 的支持,可以正常使用输入法了。jetbrain 的似乎还没有。
phithon
243 天前
Ubuntu 24.04 + wayland + gnome + ibus + rime ,没遇到过输入法问题
mizuki9
243 天前
@cnt2ex text-input-v3 有 bug ,说是 “由于对 text-input-v3 协议的理解不同,在使用 KWin 时会出现一些问题”,chrome 看 B 站长按右方向键快进无效,会变成连续跳跃几秒进度条。所以我还是用的 text-input-v1
barathrum
243 天前
@cnt2ex #7 这些应用其实也能用中文输入法, 但是问题很多, 经常输入法候选框不在输入的光标处, 甚至经常在另一个屏幕上, 十分难受.
yukafans
243 天前
@barathrum 我用的 gnome+fcitx5 ,自从 electron33 开启 text-input-v3 之后你说的问题通通消失了
Maboroshii
243 天前
@phithon 我记得之前 ibus 有漏字的问题(主要是 chrome 系严重),现在已经解决了吗。
SmithJohn
243 天前
linux 上我直接就没装中文输入法.
能英文尽量英文,不能英文就用谷歌的网页输入法.
rayae
243 天前
jb 系列软件的 wayland 是测试版,还不支持输入法,官方回复已经在新建文件夹了
FanyFull
243 天前
目前还不支持。早就说在开发中了,结果到现在杳无音讯。不知道为啥这么慢:
https://youtrack.jetbrains.com/issue/JBR-5672/Wayland-support-input-methods
SP00F
242 天前
sway 也是,后来干脆切 kde 了
minami
242 天前
说难听的,wayland 和 wayland 之间的差异比 x11 和 xwayland 之间的差异还大,wayland 生态就是个畸形的、到处分裂的怪胎,这一切都源于 wayland 开发团队的自以为是。说正经的,你光说在 wayland 下怎么怎么样,没有任何意义,你必须带上你的发行版和桌面环境信息,同样一个号称支持了 wayland 的程序,完全有可能在 GNOME 是好的,在其他桌面环境就是彻底不能用的

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1114355

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX