Chinese input: from Fcitx5 and Pinyin to text in your applications
Understand the input layers, configure Pinyin, and verify switching, candidates, and committed text in browsers, terminals, and editors.
Based on public documentation; not hardware-tested. Match the instructions to your version and hardware.
The goal is typing “你好,Omarchy” in an ordinary text field, returning to English, and knowing where to investigate if another application fails. Establish working Pinyin before adding dictionaries, double Pinyin, or Rime so you keep a reliable comparison.
Steps are based on current documentation and pinned source. UI names vary by language and version. This is a teaching workflow, not a hardware or application-combination test report.
1. Framework, engine, and keyboard layout
Section titled “1. Framework, engine, and keyboard layout”Keyboard keys and layout → Input-method switching and activation → Fcitx5 sends input to the selected engine → Pinyin produces candidates → Select and commit text → Application receives it through an input protocol or module| Part | Responsibility | Not responsible for |
|---|---|---|
| Keyboard layout | Key values, such as a US layout | Converting nihao into “你好” |
| Fcitx5 | Input methods, state, application interaction | Installing the framework alone does not select Pinyin |
| Pinyin engine | Conversion, candidates, dictionaries | Choosing how every app connects |
| Config tool | Method list, shortcuts, engine settings | A service that must remain open for typing |
| Application integration | Preedit and commits through Wayland or toolkit modules | Working just because a dictionary was installed |
Caps Lock Compose sequences are not the same as selecting a Chinese engine. Layouts, Compose, Pinyin, and Rime serve different functions. Input and display components
2. Check packages before assuming the engine is missing
Section titled “2. Check packages before assuming the engine is missing”pacman -Q fcitx5 fcitx5-chinese-addons fcitx5-configtoolInstalled packages show names and versions; missing ones report not found. The pinned core manifest already includes fcitx5-chinese-addons, but actual installations, older versions, and personal removals vary. Manifest
When needed, install the engine or tool through Omarchy:
omarchy pkg add fcitx5-chinese-addons fcitx5-configtoolRead the transaction’s package changes. Installation establishes that files exist; you still need the engine in the current list and working in the session.
3. Add Pinyin to the active method list
Section titled “3. Add Pinyin to the active method list”fcitx5-configtoolInspect the current list first. Do not add Pinyin again if it is present. Otherwise find it in the add-method dialog; disable the current-language-only filter if it hides other languages.
Keep the keyboard entry needed for direct English input, add Pinyin, and apply. Record the original order and shortcuts for undo. An engine appearing among available methods is not proof it is in the current list.
The pinned source provides a Simplified Chinese Pinyin preset. If you used Omarchy’s language setup, inspect the existing selection before manually changing it, rather than repeatedly overwriting the same settings. Preset source
4. Match switching keys to your version
Section titled “4. Match switching keys to your version”This source binds Super + I to cycle input languages forward and Super + Shift + I backward. Its Fcitx preset also uses a lone Shift to switch between an engine and direct input; exact behavior depends on the engine and personal settings.
omarchy menu keybindings --printCheck your local list, then test. Do not assume an old guide’s Ctrl + Space is the global Chinese switch: this source reserves it for terminal multiplexers and handles direct input in terminals. Desktop bindings · Fcitx preset
Record any custom key before changing it. Change one combination, test two applications, then decide whether to keep it. Desktop and application shortcuts can conflict.
5. Complete an input transaction, not just an icon change
Section titled “5. Complete an input transaction, not just an icon change”Use an ordinary text field, not a password or shortcut-recording field:
- Click it and confirm the cursor is inside.
- Select Pinyin and type
nihao. - Observe preedit or candidates, select “你好”, and confirm it is committed into the field.
- Type Chinese punctuation, return to direct English input, and type
Omarchy. - Edit with Backspace to confirm the application received text rather than only the candidate UI changing.
| Observation | Stage verified |
|---|---|
| Switching state changes | Input-method selection |
| Pinyin produces candidates | Engine processing |
| “你好” appears in the app | Text commit received |
| English works after switching back | Direct input |
An icon change does not prove a successful commit. Misplaced candidates do not mean the engine is inactive.
6. Verify browser, terminal, and editor separately
Section titled “6. Verify browser, terminal, and editor separately”| Place | Test and caveat |
|---|---|
| Ordinary browser text field | Same sentence; record candidates and commits |
| Idle Foot shell prompt | Type briefly without pressing Enter, then clear it; Chinese typing does not test whether shell commands are valid |
| Temporary editor document | Enter an editable mode; Neovim normal and insert modes differ |
Use the same text and record “switches / candidates / commits.” One fully working app provides a comparison. For failures elsewhere, use application-specific diagnosis before reinstalling everything.
Committed text displayed as boxes may be missing font glyphs, not a switching failure. For candidate displacement, record monitor scale, application backend, and where it occurs.
7. Configuration and undo boundaries
Section titled “7. Configuration and undo boundaries”Record original shortcuts and engine settings. Before larger edits, copy Fcitx configuration:
cp -a -i ~/.config/fcitx5 ~/.config/fcitx5.before-input-editOnly run it when the source exists. If the destination already exists, choose a new name rather than merging successive configurations and calling the result an original. -a preserves structure and attributes; -i asks before overwriting files.
For simple undo, restore the list and shortcuts in the tool. For directory restoration, stop the input service using the actual session manager, save the present directory separately, follow your backup tool’s restore procedure, and log in again. Do not overwrite a directory while the service may write settings back.
Personal dictionaries and input data may also live in ~/.local/share/fcitx5, depending on the engine. Config alone is not a complete dictionary backup. Rime uses its own engine-specific schemas and dictionaries; Pinyin files are not Rime schemas. See backups.
Sources and scope
Section titled “Sources and scope”Reviewed on 2026-10-12: Omarchy input, pinned switch bindings, Fcitx config, and Fcitx5 setup. This covers basic Pinyin; a browser version’s launch flags are not a universal application fix.