Some applications no longer work with Fcitx5 in Wayland

I have been using Fcitx5 for a while, but recently, applications using Wayland no longer use Fcitx5.

From what I see, everything that tries to use Wayland by default doesn’t work and requires either GTK_IM_MODULE or QT_IM_MODULE to be set to fcitx.

For example, KDE/System software, such as Kate or System Settings, requires QT_IM_MODULE to be set, while Firefox requires GTK_IM_MODULE to be set. In contrast, Vivaldi won’t use Fcitx5 even when both are set.

From what I see from fcitx5-diagnose, unless GTK_IM_MODULE or QT_IM_MODULE are set, nothing even uses the Wayland dbus.

In my environment variables, I have only set XMODIFIERS=@im=fcitx, and I’m using Fcitx5 Wayland Launcher in virtual keyboard settings. From what I saw, these are the only required settings.

Has something changed that now requires both QT_IM_MODULE and GTK_IM_MODULE to be set?, and does anyone have any idea how to make Vivaldi use Fcitx5?

System Info

System:
  Kernel: 6.14.0-2-rt3-MANJARO arch: x86_64 bits: 64 compiler: gcc v: 15.1.1
    clocksource: tsc avail: hpet,acpi_pm
    parameters: BOOT_IMAGE=/boot/vmlinuz-6.14-rt-x86_64
    root=UUID=e25eb414-7401-4086-851c-0725906b306f rw quiet splash
    udev.log_priority=3
  Desktop: KDE Plasma v: 6.3.6 tk: Qt v: N/A info: frameworks v: 6.17.0
    wm: kwin_wayland vt: 1 dm: SDDM Distro: Manjaro base: Arch Linux
Machine:
  Type: Desktop System: Gigabyte product: X570 AORUS ELITE v: -CF
    serial: <superuser required>
  Mobo: Gigabyte model: X570 AORUS ELITE serial: <superuser required>
    uuid: <superuser required> UEFI: American Megatrends LLC. v: F40d
    date: 09/02/2024
CPU:
  Info: model: AMD Ryzen 5 5600X bits: 64 type: MT MCP arch: Zen 3+ gen: 3
    level: v3 note: check built: 2022 process: TSMC n6 (7nm) family: 0x19 (25)
    model-id: 0x21 (33) stepping: 0 microcode: 0xA20102B
  Topology: cpus: 1x dies: 1 clusters: 1 cores: 6 threads: 12 tpc: 2
    smt: enabled cache: L1: 384 KiB desc: d-6x32 KiB; i-6x32 KiB L2: 3 MiB
    desc: 6x512 KiB L3: 32 MiB desc: 1x32 MiB
  Speed (MHz): avg: 3706 min/max: 550/4654 boost: enabled scaling:
    driver: amd-pstate-epp governor: performance cores: 1: 3706 2: 3706 3: 3706
    4: 3706 5: 3706 6: 3706 7: 3706 8: 3706 9: 3706 10: 3706 11: 3706 12: 3706
    bogomips: 88804
  Flags-basic: avx avx2 ht lm nx pae sse sse2 sse3 sse4_1 sse4_2 sse4a ssse3
    svm
  Vulnerabilities:
  Type: gather_data_sampling status: Not affected
  Type: ghostwrite status: Not affected
  Type: itlb_multihit status: Not affected
  Type: l1tf status: Not affected
  Type: mds status: Not affected
  Type: meltdown status: Not affected
  Type: mmio_stale_data status: Not affected
  Type: reg_file_data_sampling status: Not affected
  Type: retbleed status: Not affected
  Type: spec_rstack_overflow mitigation: Safe RET
  Type: spec_store_bypass mitigation: Speculative Store Bypass disabled via
    prctl
  Type: spectre_v1 mitigation: usercopy/swapgs barriers and __user pointer
    sanitization
  Type: spectre_v2 mitigation: Retpolines; IBPB: conditional; IBRS_FW;
    STIBP: always-on; RSB filling; PBRSB-eIBRS: Not affected; BHI: Not
    affected
  Type: srbds status: Not affected
  Type: tsx_async_abort status: Not affected
Graphics:
  Device-1: Advanced Micro Devices [AMD/ATI] Navi 32 [Radeon RX 7700 XT / 7800
    XT] vendor: Sapphire driver: amdgpu v: kernel arch: RDNA-3 code: Navi-3x
    process: TSMC n5 (5nm) built: 2022+ pcie: gen: 4 speed: 16 GT/s lanes: 16
    ports: active: DP-1,DP-2 empty: HDMI-A-1,HDMI-A-2,Writeback-1
    bus-ID: 0c:00.0 chip-ID: 1002:747e class-ID: 0300
  Device-2: Logitech Brio 100 driver: snd-usb-audio,uvcvideo type: USB
    rev: 2.0 speed: 480 Mb/s lanes: 1 mode: 2.0 bus-ID: 1-1:2 chip-ID: 046d:094c
    class-ID: 0102 serial: <filter>
  Display: wayland server: X.org v: 1.21.1.18 with: Xwayland v: 24.1.8
    compositor: kwin_wayland driver: X: loaded: amdgpu
    unloaded: modesetting,radeon alternate: fbdev,vesa dri: radeonsi
    gpu: amdgpu d-rect: 5120x1440 display-ID: 0
  Monitor-1: DP-1 pos: right model: Gigabyte M27Q X serial: <filter>
    built: 2022 res: mode: 2560x1440 hz: 240 scale: 100% (1) dpi: 109 gamma: 1.2
    size: 596x335mm (23.46x13.19") diag: 684mm (26.9") ratio: 16:9 modes:
    max: 2560x1440 min: 640x480
  Monitor-2: DP-2 pos: primary,left model: Gigabyte M27Q serial: <filter>
    built: 2024 res: mode: 2560x1440 hz: 170 scale: 100% (1) dpi: 93 gamma: 1.2
    size: 597x336mm (23.5x13.23") diag: 801mm (31.5") ratio: 16:9 modes:
    max: 2560x1440 min: 720x400
  API: EGL v: 1.5 hw: drv: amd radeonsi platforms: device: 0 drv: radeonsi
    device: 1 drv: swrast gbm: drv: kms_swrast surfaceless: drv: radeonsi
    wayland: drv: radeonsi x11: drv: radeonsi
  API: OpenGL v: 4.6 compat-v: 4.5 vendor: amd mesa v: 25.2.1-arch1.4
    glx-v: 1.4 direct-render: yes renderer: AMD Radeon RX 7800 XT (radeonsi
    navi32 LLVM 20.1.8 DRM 3.61 6.14.0-2-rt3-MANJARO) device-ID: 1002:747e
    memory: 15.62 GiB unified: no display-ID: :1.0
  API: Vulkan v: 1.4.321 layers: 13 device: 0 type: discrete-gpu name: AMD
    Radeon RX 7800 XT (RADV NAVI32) driver: mesa radv v: 25.2.1-arch1.4
    device-ID: 1002:747e surfaces: N/A
  Info: Tools: api: clinfo, eglinfo, glxinfo, vulkaninfo
    de: kscreen-console,kscreen-doctor gpu: amdgpu_top,radeontop
    wl: wayland-info,wlr-randr x11: xdpyinfo, xprop, xrandr
Audio:
  Device-1: Advanced Micro Devices [AMD/ATI] Navi 31 HDMI/DP Audio
    driver: snd_hda_intel v: kernel pcie: gen: 4 speed: 16 GT/s lanes: 16
    bus-ID: 0c:00.1 chip-ID: 1002:ab30 class-ID: 0403
  Device-2: Advanced Micro Devices [AMD] Starship/Matisse HD Audio
    vendor: Gigabyte driver: snd_hda_intel v: kernel pcie: gen: 4 speed: 16 GT/s
    lanes: 16 bus-ID: 0e:00.4 chip-ID: 1022:1487 class-ID: 0403
  Device-3: Logitech Brio 100 driver: snd-usb-audio,uvcvideo type: USB
    rev: 2.0 speed: 480 Mb/s lanes: 1 mode: 2.0 bus-ID: 1-1:2 chip-ID: 046d:094c
    class-ID: 0102 serial: <filter>
  Device-4: Audio-Technica AT2020USB+
    driver: hid-generic,snd-usb-audio,usbhid type: USB rev: 1.1 speed: 12 Mb/s
    lanes: 1 mode: 1.1 bus-ID: 5-4:2 chip-ID: 0909:001c class-ID: 0300
  API: ALSA v: k6.14.0-2-rt3-MANJARO status: kernel-api with: aoss
    type: oss-emulator tools: alsactl,alsamixer,amixer
  Server-1: sndiod v: N/A status: off tools: aucat,midicat,sndioctl
  Server-2: JACK v: 1.9.22 status: off tools: N/A
  Server-3: PipeWire v: 1.4.7 status: active with: 1: pipewire-pulse
    status: active 2: wireplumber status: active 3: pipewire-alsa type: plugin
    tools: pactl,pw-cat,pw-cli,wpctl
Network:
  Device-1: Intel Ethernet 10-Gigabit X540-AT2 driver: ixgbe v: kernel pcie:
    gen: 2 speed: 5 GT/s lanes: 4 link-max: lanes: 8 port: N/A bus-ID: 05:00.0
    chip-ID: 8086:1528 class-ID: 0200
  IF: enp5s0f0 state: down mac: <filter>
  Device-2: Intel Ethernet 10-Gigabit X540-AT2 driver: ixgbe v: kernel pcie:
    gen: 2 speed: 5 GT/s lanes: 4 link-max: lanes: 8 port: N/A bus-ID: 05:00.1
    chip-ID: 8086:1528 class-ID: 0200
  IF: enp5s0f1 state: up speed: 10000 Mbps duplex: full mac: <filter>
  Device-3: Intel I211 Gigabit Network vendor: Gigabyte driver: igb v: kernel
    pcie: gen: 1 speed: 2.5 GT/s lanes: 1 port: f000 bus-ID: 06:00.0
    chip-ID: 8086:1539 class-ID: 0200
  IF: enp6s0 state: down mac: <filter>
  IF-ID-1: mullvpn state: unknown speed: 10000 Mbps duplex: full mac: N/A
  IF-ID-2: virbr0 state: down mac: <filter>
  Info: services: NetworkManager,systemd-timesyncd
Bluetooth:
  Device-1: TP-Link UB500 Adapter driver: btusb v: 0.8 type: USB rev: 1.1
    speed: 12 Mb/s lanes: 1 mode: 1.1 bus-ID: 3-4:3 chip-ID: 2357:0604
    class-ID: e001 serial: <filter>
  Report: btmgmt ID: hci0 rfk-id: 0 state: up address: N/A
Drives:
  Local Storage: total: 6.37 TiB used: 750.16 GiB (11.5%)
  SMART Message: Unable to run smartctl. Root privileges required.
  ID-1: /dev/nvme0n1 maj-min: 259:0 vendor: Samsung model: SSD 980 PRO with
    Heatsink 2TB size: 1.82 TiB block-size: physical: 512 B logical: 512 B
    speed: 63.2 Gb/s lanes: 4 tech: SSD serial: <filter> fw-rev: 5B2QGXA7
    temp: 52.9 C scheme: GPT
  ID-2: /dev/nvme1n1 maj-min: 259:5 vendor: Samsung
    model: SSD 970 EVO Plus 2TB size: 1.82 TiB block-size: physical: 512 B
    logical: 512 B speed: 31.6 Gb/s lanes: 4 tech: SSD serial: <filter>
    fw-rev: 2B2QEXM7 temp: 48.9 C scheme: GPT
  ID-3: /dev/sda maj-min: 8:0 vendor: Samsung model: SSD 860 EVO 1TB
    size: 931.51 GiB block-size: physical: 512 B logical: 512 B speed: 6.0 Gb/s
    tech: SSD serial: <filter> fw-rev: 4B6Q scheme: GPT
  ID-4: /dev/sdb maj-min: 8:16 vendor: Seagate model: ST2000DM008-2FR102
    size: 1.82 TiB block-size: physical: 4096 B logical: 512 B speed: 6.0 Gb/s
    tech: HDD rpm: 7200 serial: <filter> fw-rev: 0001 scheme: GPT
Partition:
  ID-1: / raw-size: 1.82 TiB size: 1.79 TiB (98.37%) used: 750.16 GiB (40.9%)
    fs: ext4 dev: /dev/nvme1n1p2 maj-min: 259:7
  ID-2: /boot/efi raw-size: 300 MiB size: 299.4 MiB (99.80%)
    used: 324 KiB (0.1%) fs: vfat dev: /dev/nvme1n1p1 maj-min: 259:6
Swap:
  Alert: No swap data was found.
Sensors:
  System Temperatures: cpu: 53.0 C mobo: 38.0 C gpu: amdgpu temp: 57.0 C
    mem: 75.0 C
  Fan Speeds (rpm): N/A gpu: amdgpu fan: 592
Info:
  Memory: total: 32 GiB available: 31.26 GiB used: 9.59 GiB (30.7%)
  Processes: 579 Power: uptime: 2h 13m states: freeze,mem,disk suspend: deep
    avail: s2idle wakeups: 0 hibernate: platform avail: shutdown, reboot,
    suspend, test_resume image: 12.48 GiB services: org_kde_powerdevil,
    power-profiles-daemon, upowerd Init: systemd v: 257 default: graphical
    tool: systemctl
  Packages: 2414 pm: dpkg pkgs: 0 pm: pacman pkgs: 2370 libs: 549
    tools: pamac,yay pm: rpm pkgs: 0 pm: flatpak pkgs: 44 Compilers:
    clang: 20.1.8 gcc: 15.2.1 Shell: Zsh v: 5.9 default: Bash v: 5.3.3
    running-in: konsole inxi: 3.3.39

Have you tried this?

https://fcitx-im.org/wiki/Using_Fcitx_5_on_Wayland#Chromium_.2F_Electron

I believe ibus is a vaild alternative.

Sorry for the late reply.

While it could be an alternative, I would prefer to try to find the reason for the problem before giving up and trying an alternative.

Yes, I tried using -enable-features=UseOzonePlatform --ozone-platform=wayland --enable-wayland-ime as it says for KDE Plasma, but it still doesn’t work.
And it actually says, “You could unset GTK_IM_MODULE & QT_IM_MODULE,” which still doesn’t make sense as to why I need to set them

Where do you set these variables?
I set them on /etc/environment like following.

XMODIFIERS=@im=fcitx
GTK_IM_MODULE=fcitx
QT_IM_MODULE=fcitx

I’m using Manjaro Sway, so it might not work on your environment.

As im using Manjaro KDE i set these variable also on /etc/environment

As it says on the wiki only set this

XMODIFIERS=@im=fcitx

and set the virtual keyboard in the settings to Fctix5 wayland launcher

Also, I’m pretty sure the problem is related to Kwin not starting Fcitx5 but some other service, or autostart, but I’m not sure which, and why it starts instead of Kwin as it should

Edit: Accidentally pasted etc/environment instead of XMODIFIERS=@im=fcitx

Can you input characters with fctix5 on Vivaldi when you execute Vivaldi from terminal app?
Have you configured fcitx5 with fcitx5-configtool?

Can you input characters with fctix5 on Vivaldi when you execute Vivaldi from terminal app?

I tried executing Vivaldi from the terminal, but it has the same problem.
When I was first troubleshooting the problem, I used the terminal to set the two other environment variables.

Have you configured fcitx5 with fcitx5-configtool?

Yes, I added multiple input methods and configured some settings. Unless you think it’s something specific, I don’t believe this is the problem, as I have been using Fcitx5 without issue for a few months, until now.

Did this issue happen to coincide with whenever you started using a realtime kernel?

Or, perhaps more pertinently, a kernel that reached EOL six months ago (24th Mar 2025)…

I’d strongly suggest you tend to that before anything else, as updates for kernel 6.14 are no longer provided from the official Manjaro repositories.

Additionally, there is no real benefit from running a RealTime kernel, unless application demands it; such as professional audio production, for example; even then, rarely.

I suggest kernel 6.12 (LTS) for general stability, otherwise kernel 6.16 seems to be receiving accolades, currently.


After tending to your kernel(s), if the issue persists, try creating a new User account (for testing purposes) to verify whether or not your issue persists in a fresh environment.

This can often be an important troubleshooting step, and helps to rule out local configuration problems as the culprit.

Regards.

2 Likes

Did this issue happen to coincide with whenever you started using a realtime kernel?

I updated to 6.14 rt a few months ago from 6.12, but I remember it was still supported (I think I looked at the Linux kernel and not for Manjaro), and after updating the kernel, fcitx, and everything else worked without a problem.

I suggest kernel 6.12 (LTS) for general stability, otherwise kernel 6.16 seems to be receiving accolades, currently.

I updated to kernel 6.16, as I had many issues with kernel 6.12. However, fcitx still doesn’t work with Wayland unless I add other environment variables.

if the issue persists, try creating a new User account (for testing purposes) to verify whether or not your issue persists in a fresh environment.

I created a new user, and on that user, fcitx worked without an issue.

One more thing I noticed is that on that user, when I do fcitx5-diagnose in Fcitx State - process, it shows two processes, fcitx and fcitx-wayland, while on my primary user, it only shows the fcitx process without the fcitx-wayland.

Do you have any ideas or suggestions on why fcitx-wayland doesn’t start, even after I set the virtual keyboard to fcitx 5 wayland launcher, as it is the same settings as on the test user?

I found the solution after I saw that it had worked on the test user.

I started searching configs and settings related to KDE and KWin, and I found that these were the settings at ~/.config/kwinrc,

[Wayland]
EnablePrimarySelection=false
InputMethod[$e]=/usr/share/applications/fcitx5-wayland-launcher.desktop
VirtualKeyboardEnabled=false

I’m not sure why, but VirtualKeyboardEnabled was set to false. After changing it to true, fcitx works like it should. I wonder why it was even changed to false, as it wasn’t even possible to change it from the system settings.

Thank you everyone for the help with the issue, and for also warning me that I’m using an unsupported kernel :slight_smile:

2 Likes

Well, I had found Using Fcitx 5 on Wayland for a little extra reference, but I suppose you don’t need it now.

Good to know you’re back on track. :wink:

Regards.

1 Like

This topic was automatically closed 3 days after the last reply. New replies are no longer allowed.