Chinese input fails in some apps: locate the failing stage
Use switching, candidates, and commits to distinguish session, engine, app integration, font, and popup-position problems.
Based on public documentation; not hardware-tested. Match the instructions to your version and hardware.
Input failure may mean no switching, no candidates, failed commits, or simply boxes instead of characters. Separate symptoms before changing the wrong layer. Without any working app, complete the basic Pinyin guide first.
This workflow is based on source and upstream documentation. It does not treat one community post’s application flags as a universal fix.
1. Compare the same sentence
Section titled “1. Compare the same sentence”Type nihao, select “你好”, and return to English in an ordinary browser field, an idle Foot prompt, and a temporary editor document. Do not execute terminal test text with Enter; enter insert mode in Neovim.
| Observation | Record | Purpose |
|---|---|---|
| Switching | Selected method before and after | Key path versus later processing |
| Candidates | Whether Pinyin produces candidates | Engine processing versus commits |
| Commit | Whether selected characters enter the app | Framework versus application integration |
| Display | Boxes, corrupted text, or misplaced popup | Separate display from missing engines |
“Browser switches, shows candidates, commits; editor switches and shows candidates but cannot commit” narrows the failure much better than “Chinese is broken.” Different apps’ indicators do not prove identical input paths.
2. Every app fails: session and engine
Section titled “2. Every app fails: session and engine”Query inside the logged-in graphical desktop:
systemctl --user status omarchy-fcitx5 --no-pagerpacman -Q fcitx5 fcitx5-chinese-addonsThe service name belongs to the pinned source. Older or independently managed installations may lack it; “unit not found” does not itself prove Fcitx is uninstalled.
This service follows the graphical session and requires a Wayland environment. Seeing it inactive over SSH or before graphical login does not establish desktop failure. Service source
With the service running, check Pinyin in fcitx5-configtool’s current list. Installed package, running service, and selected engine are separate conditions. Inspect this boot’s log if needed:
journalctl --user -b -u omarchy-fcitx5 --no-pagerDo not add a second autostart instance. For a confirmed transient fault in the existing service, save input first, then restart it:
systemctl --user restart omarchy-fcitx5This interrupts input and composition. Repeat the sentence test. For repeated crashes, keep logs rather than using repeated restarts as diagnosis.
3. Switching fails: focus and conflicts
Section titled “3. Switching fails: focus and conflicts”Focus a real editable field, not a password or shortcut-recorder field. Check the local binding list and Fcitx settings. This source uses Super + I, not an assumed Ctrl + Space; see switching keys.
If selecting Pinyin through its menu works but the key does not, investigate the key path first. Record the old key before testing another, compare two apps, and restore it afterward. Application completion shortcuts may conflict; one failure does not require reinstalling an engine.
4. One app fails: how does it connect?
Section titled “4. One app fails: how does it connect?”Apps can use native Wayland text-input protocols or toolkit input modules; XWayland has its own integration requirements. The same app name may behave differently with another version, launch path, or backend.
Fully quit the failing app after saving work, confirm its background instance has exited, then launch from your normal desktop entry. Existing processes may retain old environments; closing one window does not necessarily restart the application.
Collect the terminal’s environment and system modules:
printenv WAYLAND_DISPLAY DISPLAY QT_IM_MODULE GTK_IM_MODULE XMODIFIERSpacman -Q fcitx5-gtk fcitx5-qtThis describes the terminal, not necessarily a desktop-launched app. System Qt plugins do not prove that a proprietary app with bundled Qt uses them. Missing variables are not automatically errors, particularly an unset GTK_IM_MODULE.
This source’s session environment sets QT_IM_MODULE=fcitx and XMODIFIERS=@im=fcitx, without forcing GTK_IM_MODULE in that file. Environment source
Upstream documents different requirements by toolkit and backend and warns that Chromium/Electron defaults and flags change. Establish the specific version, actual backend, and supported input route, then make one application-scoped test using its current documentation. Record and undo launch changes without improvement; do not write every suggested environment variable globally. Fcitx Wayland integration
5. Boxes, misplaced candidates, and special fields
Section titled “5. Boxes, misplaced candidates, and special fields”| Symptom | First investigation | Comparison |
|---|---|---|
| Committed Chinese appears as boxes | Font contains Chinese glyphs | Display the same text in another app |
| Candidates misplaced but commits work | Backend, scale, field location | Move the same app to another display and record behavior |
| Normal field works, password field has no candidates | Field may disable input methods | Test ordinary text without sharing real passwords |
| Editor failure in one mode | Insert mode and mappings | Same mode and phrase in a temporary document |
For displacement, record each monitor’s scale and app location; see displays. Do not change every monitor’s scale first for an issue isolated to one app.
6. Read diagnostics and request useful help
Section titled “6. Read diagnostics and request useful help”fcitx5-diagnoseIt collects system, session, frontend, and config information; it does not automatically repair every warning. Focus on relevant findings: service state, current engines, and modules used by the failing app. Missing modules for unused toolkits need not explain this failure.
Native Wayland contexts do not necessarily list every app by name. A missing app name alone is not proof it failed to connect. Diagnostic reading guide
Report Omarchy and app versions, engine, launch entry, a working comparison app, the three observations, and any scale or suspend relationship. Inspect user paths and environment content before sharing reports. Success means switching, candidates, commits, and English return work in normal fields after restarting the app; temporary keys and launch changes must be restored or explicitly documented.
Sources and scope
Section titled “Sources and scope”Reviewed on 2026-10-12: Omarchy input, Fcitx diagnostics, Wayland integration, and pinned session service. Compatibility needs version-specific verification; no single flag set is promised to work everywhere.