Skip to content

Cannot use IME when cursor position != 0 #7906

@zty012

Description

@zty012

Similar (but different) issue: #7485

Describe the bug

Cannot use fcitx5 to type characters when cursor position != 0

Situation Cursor position Action Behavior
1 0 Type a CJK character ✅ ok
2 0 Type an ASCII character ✅ ok
3 != 0 Type a CJK character ImeEvent::Commit triggered, but didn't insert into text_input
4 != 0 Type an ASCII character ✅ ok

To Reproduce

(use wgpu renderer)

use eframe;
fn main() {
    let options = eframe::NativeOptions::default();
    let app = eframe::run_native(
        "My app",
        options,
        Box::new(|_cc| Ok(Box::new(App::default()))),
    );
}
#[derive(Default)]
struct App {
    text_edit: String,
}
impl eframe::App for App {
    fn update(&mut self, ctx: &eframe::egui::Context, frame: &mut eframe::Frame) {
        eframe::egui::Window::new("My Window").show(ctx, |ui| {
            ui.text_edit_singleline(&mut self.text_edit);
        });
    }
}

Steps to reproduce the behavior:

  1. Type any character in the text_input
  2. Use fcitx5 to type any CJK character
  3. The character didn't insert into the text_input

Expected behavior
Insert the CJK character into the text_input

Screenshots

recording.mp4

Desktop (please complete the following information):

  • OS: Arch Linux
  • WM: Niri 25.11

Additional context

RUST_LOG=egui=debug,eframe=debug,winit=debug [2026-02-14T11:19:51Z INFO eframe] Both the glow and wgpu renderers are available. Using wgpu. [2026-02-14T11:19:51Z DEBUG eframe] Using the wgpu renderer [2026-02-14T11:19:51Z DEBUG eframe::native::wgpu_integration] Event::Resumed [2026-02-14T11:19:51Z DEBUG eframe::native::file_storage] Loading app state from /home/zty/.local/share/myapp/app.ron… [2026-02-14T11:19:51Z DEBUG winit::event_loop] winit::ActiveEventLoop::create_window; window_attributes=WindowAttributes { inner_size: Some(Logical(LogicalSize { width: 1280.0, height: 800.0 })), min_inner_size: None, max_inner_size: None, position: None, resizable: true, enabled_buttons: WindowButtons(CLOSE | MINIMIZE | MAXIMIZE), title: "My app", maximized: false, visible: false, transparent: false, blur: false, decorations: true, window_icon: None, preferred_theme: None, resize_increments: None, content_protected: false, window_level: Normal, active: true, cursor: Icon(Default), parent_window: None, fullscreen: None, platform_specific: PlatformSpecificWindowAttributes { name: None, activation_token: None, x11: X11WindowAttributes { visual_id: None, screen_id: None, base_size: None, override_redirect: false, x11_window_types: [Normal], embed_window: None } } } [2026-02-14T11:19:51Z DEBUG winit::window] winit::Window::request_inner_size; size=Physical(PhysicalSize { width: 1600, height: 1000 }) [2026-02-14T11:19:51Z DEBUG egui_winit] Failed to set window size [2026-02-14T11:19:51Z DEBUG winit::window] winit::Window::set_maximized; maximized=false [2026-02-14T11:19:51Z DEBUG egui_wgpu::setup] Creating wgpu instance with backends Backends(VULKAN | GL | METAL | DX12 | BROWSER_WEBGPU) [2026-02-14T11:19:51Z INFO egui_wgpu] There were 2 available wgpu adapters: {backend: Vulkan, device_type: DiscreteGpu, name: "NVIDIA GeForce RTX 5060 Laptop GPU", driver: "NVIDIA", driver_info: "590.48.01", vendor: NVIDIA (0x10DE), device: 0x2D59}, {backend: Gl, device_type: Other, name: "NVIDIA GeForce RTX 5060 Laptop GPU/PCIe/SSE2", driver_info: "3.3.0 NVIDIA 590.48.01", vendor: NVIDIA (0x10DE)} [2026-02-14T11:19:51Z DEBUG egui_wgpu] Picked wgpu adapter: backend: Vulkan, device_type: DiscreteGpu, name: "NVIDIA GeForce RTX 5060 Laptop GPU", driver: "NVIDIA", driver_info: "590.48.01", vendor: NVIDIA (0x10DE), device: 0x2D59 [2026-02-14T11:19:52Z DEBUG winit::window] winit::Window::set_visible; visible=true [2026-02-14T11:19:52Z DEBUG winit::window] winit::Window::set_cursor_visible; visible=true [2026-02-14T11:19:52Z DEBUG winit::window] winit::Window::set_cursor_visible; visible=true [2026-02-14T11:19:52Z DEBUG winit::window] winit::Window::set_cursor_visible; visible=true [2026-02-14T11:19:52Z DEBUG winit::window] winit::Window::set_cursor_visible; visible=true [2026-02-14T11:19:52Z DEBUG winit::window] winit::Window::set_ime_allowed; allowed=true [2026-02-14T11:19:52Z DEBUG winit::window] winit::Window::set_ime_cursor_area; position=Physical(PhysicalPosition { x: 537, y: 446 }) size=Physical(PhysicalSize { width: 350, height: 22 }) [2026-02-14T11:19:53Z DEBUG winit::window] winit::Window::set_ime_cursor_area; position=Physical(PhysicalPosition { x: 537, y: 446 }) size=Physical(PhysicalSize { width: 350, height: 22 }) [2026-02-14T11:19:53Z DEBUG winit::window] winit::Window::set_ime_cursor_area; position=Physical(PhysicalPosition { x: 537, y: 446 }) size=Physical(PhysicalSize { width: 350, height: 22 }) [2026-02-14T11:19:53Z DEBUG winit::window] winit::Window::set_ime_cursor_area; position=Physical(PhysicalPosition { x: 537, y: 446 }) size=Physical(PhysicalSize { width: 350, height: 22 }) [2026-02-14T11:19:53Z DEBUG winit::window] winit::Window::set_ime_cursor_area; position=Physical(PhysicalPosition { x: 537, y: 446 }) size=Physical(PhysicalSize { width: 350, height: 22 }) [2026-02-14T11:19:53Z DEBUG winit::window] winit::Window::set_ime_cursor_area; position=Physical(PhysicalPosition { x: 537, y: 446 }) size=Physical(PhysicalSize { width: 350, height: 22 }) [2026-02-14T11:19:53Z DEBUG winit::window] winit::Window::set_ime_cursor_area; position=Physical(PhysicalPosition { x: 537, y: 446 }) size=Physical(PhysicalSize { width: 350, height: 22 }) [2026-02-14T11:19:53Z DEBUG winit::window] winit::Window::set_ime_cursor_area; position=Physical(PhysicalPosition { x: 537, y: 446 }) size=Physical(PhysicalSize { width: 350, height: 22 }) [2026-02-14T11:19:53Z DEBUG winit::window] winit::Window::set_ime_cursor_area; position=Physical(PhysicalPosition { x: 537, y: 446 }) size=Physical(PhysicalSize { width: 350, height: 22 }) [2026-02-14T11:19:53Z DEBUG winit::window] winit::Window::set_ime_cursor_area; position=Physical(PhysicalPosition { x: 537, y: 446 }) size=Physical(PhysicalSize { width: 350, height: 22 }) [2026-02-14T11:19:53Z DEBUG winit::window] winit::Window::set_ime_cursor_area; position=Physical(PhysicalPosition { x: 537, y: 446 }) size=Physical(PhysicalSize { width: 350, height: 22 }) [2026-02-14T11:19:53Z DEBUG winit::window] winit::Window::set_ime_cursor_area; position=Physical(PhysicalPosition { x: 537, y: 446 }) size=Physical(PhysicalSize { width: 350, height: 22 }) [2026-02-14T11:19:53Z DEBUG winit::window] winit::Window::set_cursor_visible; visible=true [2026-02-14T11:19:53Z DEBUG winit::window] winit::Window::set_ime_cursor_area; position=Physical(PhysicalPosition { x: 537, y: 446 }) size=Physical(PhysicalSize { width: 350, height: 22 }) [2026-02-14T11:19:53Z DEBUG winit::window] winit::Window::set_ime_cursor_area; position=Physical(PhysicalPosition { x: 537, y: 446 }) size=Physical(PhysicalSize { width: 350, height: 22 }) [2026-02-14T11:19:53Z DEBUG winit::window] winit::Window::set_ime_cursor_area; position=Physical(PhysicalPosition { x: 537, y: 446 }) size=Physical(PhysicalSize { width: 350, height: 22 }) [2026-02-14T11:19:53Z DEBUG winit::window] winit::Window::set_ime_cursor_area; position=Physical(PhysicalPosition { x: 537, y: 446 }) size=Physical(PhysicalSize { width: 350, height: 22 }) [2026-02-14T11:19:53Z DEBUG winit::window] winit::Window::set_ime_cursor_area; position=Physical(PhysicalPosition { x: 537, y: 446 }) size=Physical(PhysicalSize { width: 350, height: 22 }) [2026-02-14T11:19:53Z DEBUG winit::window] winit::Window::set_ime_cursor_area; position=Physical(PhysicalPosition { x: 537, y: 446 }) size=Physical(PhysicalSize { width: 350, height: 22 }) [2026-02-14T11:19:53Z DEBUG winit::window] winit::Window::set_ime_cursor_area; position=Physical(PhysicalPosition { x: 537, y: 446 }) size=Physical(PhysicalSize { width: 350, height: 22 }) [2026-02-14T11:19:53Z DEBUG winit::window] winit::Window::set_ime_cursor_area; position=Physical(PhysicalPosition { x: 537, y: 446 }) size=Physical(PhysicalSize { width: 350, height: 22 }) [2026-02-14T11:19:53Z DEBUG winit::window] winit::Window::set_ime_cursor_area; position=Physical(PhysicalPosition { x: 537, y: 446 }) size=Physical(PhysicalSize { width: 350, height: 22 }) [2026-02-14T11:19:53Z DEBUG winit::window] winit::Window::set_ime_cursor_area; position=Physical(PhysicalPosition { x: 537, y: 446 }) size=Physical(PhysicalSize { width: 350, height: 22 }) [2026-02-14T11:19:53Z DEBUG winit::window] winit::Window::set_ime_cursor_area; position=Physical(PhysicalPosition { x: 537, y: 446 }) size=Physical(PhysicalSize { width: 350, height: 22 }) [2026-02-14T11:19:53Z DEBUG winit::window] winit::Window::set_ime_cursor_area; position=Physical(PhysicalPosition { x: 537, y: 446 }) size=Physical(PhysicalSize { width: 350, height: 22 }) [2026-02-14T11:19:53Z DEBUG winit::window] winit::Window::set_ime_cursor_area; position=Physical(PhysicalPosition { x: 537, y: 446 }) size=Physical(PhysicalSize { width: 350, height: 22 }) [2026-02-14T11:19:53Z DEBUG winit::window] winit::Window::set_ime_cursor_area; position=Physical(PhysicalPosition { x: 537, y: 446 }) size=Physical(PhysicalSize { width: 350, height: 22 }) [2026-02-14T11:19:53Z DEBUG winit::window] winit::Window::set_ime_cursor_area; position=Physical(PhysicalPosition { x: 537, y: 446 }) size=Physical(PhysicalSize { width: 350, height: 22 }) [2026-02-14T11:19:53Z DEBUG winit::window] winit::Window::set_ime_cursor_area; position=Physical(PhysicalPosition { x: 537, y: 446 }) size=Physical(PhysicalSize { width: 350, height: 22 }) [2026-02-14T11:19:53Z DEBUG winit::window] winit::Window::set_ime_cursor_area; position=Physical(PhysicalPosition { x: 537, y: 446 }) size=Physical(PhysicalSize { width: 350, height: 22 }) [2026-02-14T11:19:53Z DEBUG winit::window] winit::Window::set_ime_cursor_area; position=Physical(PhysicalPosition { x: 537, y: 446 }) size=Physical(PhysicalSize { width: 350, height: 22 }) [2026-02-14T11:19:54Z DEBUG winit::window] winit::Window::set_ime_cursor_area; position=Physical(PhysicalPosition { x: 537, y: 446 }) size=Physical(PhysicalSize { width: 350, height: 22 }) [2026-02-14T11:19:54Z DEBUG winit::window] winit::Window::set_ime_cursor_area; position=Physical(PhysicalPosition { x: 537, y: 446 }) size=Physical(PhysicalSize { width: 350, height: 22 }) [2026-02-14T11:19:54Z DEBUG winit::window] winit::Window::set_ime_cursor_area; position=Physical(PhysicalPosition { x: 537, y: 446 }) size=Physical(PhysicalSize { width: 350, height: 22 }) [2026-02-14T11:19:54Z DEBUG winit::window] winit::Window::set_ime_cursor_area; position=Physical(PhysicalPosition { x: 537, y: 446 }) size=Physical(PhysicalSize { width: 350, height: 22 }) [2026-02-14T11:19:54Z DEBUG winit::window] winit::Window::set_ime_cursor_area; position=Physical(PhysicalPosition { x: 537, y: 446 }) size=Physical(PhysicalSize { width: 350, height: 22 }) [2026-02-14T11:19:54Z DEBUG winit::window] winit::Window::set_ime_cursor_area; position=Physical(PhysicalPosition { x: 537, y: 446 }) size=Physical(PhysicalSize { width: 350, height: 22 }) [2026-02-14T11:19:54Z DEBUG winit::window] winit::Window::set_ime_cursor_area; position=Physical(PhysicalPosition { x: 537, y: 446 }) size=Physical(PhysicalSize { width: 350, height: 22 }) [2026-02-14T11:19:54Z DEBUG winit::window] winit::Window::set_ime_cursor_area; position=Physical(PhysicalPosition { x: 537, y: 446 }) size=Physical(PhysicalSize { width: 350, height: 22 }) [2026-02-14T11:19:54Z DEBUG winit::window] winit::Window::set_ime_cursor_area; position=Physical(PhysicalPosition { x: 537, y: 446 }) size=Physical(PhysicalSize { width: 350, height: 22 }) [2026-02-14T11:19:54Z DEBUG winit::window] winit::Window::set_ime_cursor_area; position=Physical(PhysicalPosition { x: 537, y: 446 }) size=Physical(PhysicalSize { width: 350, height: 22 }) [2026-02-14T11:19:54Z DEBUG winit::window] winit::Window::set_ime_cursor_area; position=Physical(PhysicalPosition { x: 537, y: 446 }) size=Physical(PhysicalSize { width: 350, height: 22 }) [2026-02-14T11:19:54Z DEBUG winit::window] winit::Window::set_cursor_visible; visible=true [2026-02-14T11:19:54Z DEBUG winit::window] winit::Window::set_ime_cursor_area; position=Physical(PhysicalPosition { x: 537, y: 446 }) size=Physical(PhysicalSize { width: 350, height: 22 }) [2026-02-14T11:19:54Z DEBUG winit::window] winit::Window::set_cursor_visible; visible=true [2026-02-14T11:19:54Z DEBUG winit::window] winit::Window::set_ime_cursor_area; position=Physical(PhysicalPosition { x: 537, y: 446 }) size=Physical(PhysicalSize { width: 350, height: 22 }) [2026-02-14T11:19:54Z DEBUG winit::window] winit::Window::set_ime_cursor_area; position=Physical(PhysicalPosition { x: 537, y: 446 }) size=Physical(PhysicalSize { width: 350, height: 22 }) [2026-02-14T11:19:54Z DEBUG winit::window] winit::Window::set_ime_cursor_area; position=Physical(PhysicalPosition { x: 537, y: 446 }) size=Physical(PhysicalSize { width: 350, height: 22 }) [2026-02-14T11:19:54Z DEBUG winit::window] winit::Window::set_ime_cursor_area; position=Physical(PhysicalPosition { x: 537, y: 446 }) size=Physical(PhysicalSize { width: 350, height: 22 }) [2026-02-14T11:19:54Z DEBUG winit::window] winit::Window::set_ime_cursor_area; position=Physical(PhysicalPosition { x: 537, y: 446 }) size=Physical(PhysicalSize { width: 350, height: 22 }) [2026-02-14T11:19:54Z DEBUG winit::window] winit::Window::set_ime_cursor_area; position=Physical(PhysicalPosition { x: 537, y: 446 }) size=Physical(PhysicalSize { width: 350, height: 22 }) [2026-02-14T11:19:54Z DEBUG winit::window] winit::Window::set_ime_cursor_area; position=Physical(PhysicalPosition { x: 537, y: 446 }) size=Physical(PhysicalSize { width: 350, height: 22 }) [2026-02-14T11:19:54Z DEBUG winit::window] winit::Window::set_ime_cursor_area; position=Physical(PhysicalPosition { x: 537, y: 446 }) size=Physical(PhysicalSize { width: 350, height: 22 }) [2026-02-14T11:19:54Z DEBUG winit::window] winit::Window::set_ime_cursor_area; position=Physical(PhysicalPosition { x: 537, y: 446 }) size=Physical(PhysicalSize { width: 350, height: 22 }) [2026-02-14T11:19:54Z DEBUG winit::window] winit::Window::set_ime_cursor_area; position=Physical(PhysicalPosition { x: 537, y: 446 }) size=Physical(PhysicalSize { width: 350, height: 22 }) [2026-02-14T11:19:54Z DEBUG winit::window] winit::Window::set_ime_cursor_area; position=Physical(PhysicalPosition { x: 537, y: 446 }) size=Physical(PhysicalSize { width: 350, height: 22 }) [2026-02-14T11:19:54Z DEBUG winit::window] winit::Window::set_ime_cursor_area; position=Physical(PhysicalPosition { x: 537, y: 446 }) size=Physical(PhysicalSize { width: 350, height: 22 }) [2026-02-14T11:19:54Z DEBUG winit::window] winit::Window::set_ime_cursor_area; position=Physical(PhysicalPosition { x: 537, y: 446 }) size=Physical(PhysicalSize { width: 350, height: 22 }) [2026-02-14T11:19:54Z DEBUG winit::window] winit::Window::set_ime_cursor_area; position=Physical(PhysicalPosition { x: 537, y: 446 }) size=Physical(PhysicalSize { width: 350, height: 22 }) [2026-02-14T11:19:54Z DEBUG winit::window] winit::Window::set_ime_cursor_area; position=Physical(PhysicalPosition { x: 537, y: 446 }) size=Physical(PhysicalSize { width: 350, height: 22 }) [2026-02-14T11:19:54Z DEBUG winit::window] winit::Window::set_ime_cursor_area; position=Physical(PhysicalPosition { x: 537, y: 446 }) size=Physical(PhysicalSize { width: 350, height: 22 }) [2026-02-14T11:19:54Z DEBUG winit::window] winit::Window::set_ime_cursor_area; position=Physical(PhysicalPosition { x: 537, y: 446 }) size=Physical(PhysicalSize { width: 350, height: 22 }) [2026-02-14T11:19:54Z DEBUG winit::window] winit::Window::set_ime_cursor_area; position=Physical(PhysicalPosition { x: 537, y: 446 }) size=Physical(PhysicalSize { width: 350, height: 22 }) [2026-02-14T11:19:54Z DEBUG winit::window] winit::Window::set_ime_cursor_area; position=Physical(PhysicalPosition { x: 537, y: 446 }) size=Physical(PhysicalSize { width: 350, height: 22 }) [2026-02-14T11:19:54Z DEBUG winit::window] winit::Window::set_ime_cursor_area; position=Physical(PhysicalPosition { x: 537, y: 446 }) size=Physical(PhysicalSize { width: 350, height: 22 }) [2026-02-14T11:19:54Z DEBUG winit::window] winit::Window::set_ime_cursor_area; position=Physical(PhysicalPosition { x: 537, y: 446 }) size=Physical(PhysicalSize { width: 350, height: 22 }) [2026-02-14T11:19:54Z DEBUG winit::window] winit::Window::set_ime_cursor_area; position=Physical(PhysicalPosition { x: 537, y: 446 }) size=Physical(PhysicalSize { width: 350, height: 22 })
fcitx5-diagnose output # System Info: 1. `uname -a`:
    Linux mist 6.18.7-zen1-1-zen #1 ZEN SMP PREEMPT_DYNAMIC Sat, 24 Jan 2026 00:47:26 +0000 x86_64 GNU/Linux
  1. lsb_release -a:

    LSB Version:	n/a
    Distributor ID:	Arch
    Description:	Arch Linux
    Release:	rolling
    Codename:	n/a
    
  2. lsb_release -d:

    Description:	Arch Linux
    
  3. /etc/lsb-release:

    DISTRIB_ID="Arch"
    DISTRIB_RELEASE="rolling"
    DISTRIB_DESCRIPTION="Arch Linux"
    
  4. /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
    
  5. Desktop Environment:

    Cannot determine desktop environment.

  6. XDG SESSION TYPE:

    XDG_SESSION_TYPE='wayland'
    
  7. Bash Version:

    BASH_VERSION='5.3.9(1)-release'
    

Environment:

  1. DISPLAY:

    DISPLAY=':0'
    
    
    WAYLAND_DISPLAY='wayland-1'
    
  2. Keyboard Layout:

    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. All locales:

      C
      C.utf8
      POSIX
      zh_CN.utf8
      
    2. Current locale:

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

    1. Home:

      /home/zty
      
    2. ${XDG_CONFIG_HOME}:

      Environment variable XDG_CONFIG_HOME is not set.

      Current value of XDG_CONFIG_HOME is ~/.config (/home/zty/.config).

    3. Fcitx5 Settings Directory:

      Current fcitx5 settings directory is ~/.config/fcitx5 (/home/zty/.config/fcitx5).

  5. Current user:

    The script is run as zty (1000).

Fcitx State:

  1. executable:

    Found fcitx5 at /usr/bin/fcitx5.

  2. version:

    Fcitx version: 5.1.17

  3. process:

    Found 2 fcitx5 processes:

       1754 fcitx5
       2385 fcitx5-plasma-t
    
  4. fcitx5-remote:

    fcitx5-remote works properly.

  5. DBus interface:

    Using dbus-send to check dbus.

    Owner of DBus name org.fcitx.Fcitx5 is :1.62.

    PID of DBus name org.fcitx.Fcitx5 owner is 1754.

    Debug information from dbus:

       Group [wayland:] has 14 InputContext(s)
      IC [2bee4e3fc59248b9b249bc527bfcfba0] program: frontend:dbus cap:c001000032 focus:1
      IC [3c78d331e10740378fd108e3f79ae517] program: frontend:wayland_v2 cap:72 focus:0
      IC [05896a9c66dd4da08138a8da8a4f4e9d] program:quickshell frontend:dbus cap:1e001800072 focus:0
      IC [2c0d4159e17043a0ae4d3344744b665a] program:zen frontend:dbus cap:e001000032 focus:0
      IC [5f17e659f9da4dec8de866ebafb86ffc] program:quickshell frontend:dbus cap:1e001800072 focus:0
      IC [5937973db33749b799d2e2bf430e01df] program:BambuStudio frontend:wayland_v2 cap:72 focus:0
      IC [70baf0209bc5406f91b1ad925d5b669c] program: frontend:dbus cap:c001000032 focus:0
      IC [bbb57c0eaa2f4c55bc1fc0c6605b5e9d] program:com.mitchellh.ghostty frontend:wayland_v2 cap:72 focus:0
      IC [a2622b29d7e847b4848709ef55892e29] program:zen frontend:dbus cap:e001000072 focus:0
      IC [44c3b7464cfe4f1aa4f9533ea0cb6636] program:zen frontend:wayland_v2 cap:72 focus:0
      IC [cd0ac85cd7d8400eb13457d0b0dad82d] program:code frontend:wayland_v2 cap:72 focus:0
      IC [1f486494e3f74f59ba4980bac8d8ef0a] program:zen frontend:dbus cap:6001000032 focus:0
      IC [8cd901991ff74afb90db991387102431] program:com.mitchellh.ghostty frontend:wayland_v2 cap:72 focus:0
    Group [x11::0] has 451 InputContext(s)
      IC [3d4443ec1a274527a1b818fdab2e7a20] program:bambu-studio frontend:dbus cap:6000000020 focus:0
    Input Context without group
    

Frontends setup:

The environment variable checked by this script only shows the environment under current shell. It is still possible that you did not set the environment to the whole graphic desktop session. You may inspect the actual environment variable of a certain process by using xargs -0 -L1 /proc/$PID/environ for a certain process that you find not working.

Xim:

  1. ${XMODIFIERS}:

    Environment variable XMODIFIERS is set to "@im=fcitx" correctly.
    Xim Server Name from Environment variable is fcitx.

  2. XIM_SERVERS on root window:

    Xim server name is the same with that set in the environment variable.

  3. XIM encoding:

    Your LC_CTYPE is set to C whose encoding is not UTF-8. You may have trouble committing strings using XIM.

Qt:

  1. qt4 - ${QT4_IM_MODULE}:

    Environment variable QT_IM_MODULE is set to "fcitx" correctly.

    fcitx5-qt4-immodule-probing not found.

  2. qt5 - ${QT_IM_MODULE}:

    Environment variable QT_IM_MODULE is set to "fcitx" correctly.

    Using fcitx5-qt5-immodule-probing to check the actual im module to be used under current environment:

    QT_QPA_PLATFORM=wayland
    QT_IM_MODULE=fcitx
    IM_MODULE_CLASSNAME=fcitx::QFcitxPlatformInputContext
    
  3. qt6 - ${QT_IM_MODULE}:

    Environment variable QT_IM_MODULE is set to "fcitx" correctly.

    Using fcitx5-qt6-immodule-probing to check the actual im module to be used under current environment:

    QT_QPA_PLATFORM=wayland
    QT_IM_MODULE=fcitx
    IM_MODULE_CLASSNAME=fcitx::QFcitxPlatformInputContext
    
  4. Qt IM module files:

    Found fcitx5 im module for qt6: /usr/lib/qt6/plugins/platforminputcontexts/libfcitx5platforminputcontextplugin.so.
    Found unknown fcitx qt module: /usr/lib/qt6/plugins/plasma/kcms/systemsettings/kcm_fcitx5.so.
    Found fcitx5 im module for qt: /usr/lib/qt/plugins/platforminputcontexts/libfcitx5platforminputcontextplugin.so.
    Found fcitx5 qt6 module: /usr/lib/fcitx5/qt6/libfcitx-quickphrase-editor5.so.
    Found unknown fcitx qt module: /usr/lib/office6/qt/plugins/platforminputcontexts/libfcitxplatforminputcontextplugin.so.

    Following error may not be accurate because guessing Qt version from path depends on how your distribution packages Qt. It is not a critical error if you do not use any Qt application with certain version of Qt or you are using text-input support by Qt under Wayland.
    Cannot find fcitx5 input method module for Qt4.

Gtk:

  1. gtk - ${GTK_IM_MODULE}:

    Environment variable GTK_IM_MODULE is set to "fcitx" correctly.

    fcitx5-gtk2-immodule-probing not found.

    Using fcitx5-gtk3-immodule-probing to check the actual im module to be used under current environment:

    GTK_IM_MODULE=fcitx
    

    Using fcitx5-gtk4-immodule-probing to check the actual im module to be used under current environment:

    GTK_IM_MODULE=fcitx
    
  2. gtk-query-immodules:

    1. gtk 2:

      Found gtk-query-immodules for gtk 2.24.33 at /usr/bin/gtk-query-immodules-2.0.
      Version Line:

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

      Failed to find fcitx5 in the output of /usr/bin/gtk-query-immodules-2.0

      Cannot find fcitx5 im module for gtk 2.

    2. gtk 3:

      Found gtk-query-immodules for gtk 3.24.51 at /usr/bin/gtk-query-immodules-3.0.
      Version Line:

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

      Found fcitx5 im modules for gtk 3.24.51.

      "/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 IM module cache:

    1. gtk 2:

      Found immodules cache for gtk 2.24.33 at /usr/lib/gtk-2.0/2.10.0/immodules.cache.
      Version Line:

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

      Failed to find fcitx5 in immodule cache at /usr/lib/gtk-2.0/2.10.0/immodules.cache

      Cannot find fcitx5 im module for gtk 2 in cache.

    2. gtk 3:

      Found immodules cache for gtk 3.24.51 at /usr/lib/gtk-3.0/3.0.0/immodules.cache.
      Version Line:

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

      Found fcitx5 im modules for gtk 3.24.51.

      "/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 IM module files:

    1. gtk 2:

      All found Gtk 2 immodule files exist.

    2. gtk 3:

      All found Gtk 3 immodule files exist.

    3. gtk 4:

      All found Gtk 4 immodule files exist.

Configuration:

Fcitx Addons:

  1. Addon Config Dir:

    Found fcitx5 addon config directory: /usr/share/fcitx5/addon.

  2. Addon List:

    1. Found 27 enabled addons:

      Simplified and Traditional Chinese Translation 5.1.11
      Classic User Interface 5.1.17
      Clipboard 5.1.17
      Cloud Pinyin 5.1.11
      DBus 5.1.17
      DBus Frontend 5.1.17
      Emoji 5.1.17
      Fcitx4 Frontend 5.1.17
      Full width character 5.1.11
      IBus Frontend 5.1.17
      Input method selector 5.1.17
      Keyboard 5.1.17
      KDE Input Method Panel 5.1.17
      Status Notifier 5.1.17
      Notification 5.1.17
      Pinyin 5.1.11
      Extra Pinyin functionality 5.1.11
      Punctuation 5.1.11
      Quick Phrase 5.1.17
      Spell 5.1.17
      Table 5.1.11
      Unicode 5.1.17
      DBus Virtual Keyboard 5.1.17
      Wayland 5.1.17
      Wayland Input method frontend 5.1.17
      XCB 5.1.17
      X Input Method Frontend 5.1.17
      
    2. Found 0 disabled addons:

  3. Addon Libraries:

    All libraries for all addons are found.

  4. User Interface:

    Found 3 enabled user interface addons:

    Classic User Interface
    KDE Input Method Panel
    DBus Virtual Keyboard
    

Input Methods:

  1. /home/zty/.config/fcitx5/profile:

    [Groups/0]
    # Group Name
    Name=默认
    # Layout
    Default Layout=us
    # Default Input Method
    DefaultIM=shuangpin
    
    [Groups/0/Items/0]
    # Name
    Name=keyboard-us
    # Layout
    Layout=
    
    [Groups/0/Items/1]
    # Name
    Name=shuangpin
    # Layout
    Layout=
    
    [GroupOrder]
    0=默认
    

Log:

  1. date:

    Sat Feb 14 19:11:45 CST 2026
    
  2. /home/zty/.config/fcitx5/crash.log:

    /home/zty/.config/fcitx5/crash.log not found.

Warning: the output of fcitx5-diagnose contains sensitive information, including the distribution name, kernel version, name of currently running programs, etc.

Though such information can be helpful to developers for diagnostic purpose, please double check and remove as necessary before posting it online publicly.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething is broken

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions