Fcitx5 - ArchWiki

Jump to content
From ArchWiki

Related articles

- Fcitx
- IBus

Fcitx5 is an input method framework with a lightweight core, offering additional language support via addons. It is the successor to Fcitx.

## Installation

Install the fcitx5 package.

The fcitx5-im group pulls the main fcitx5 package, necessary #Input method module, and #Configuration tool.

Note: fcitx5 has only a basic framework, it just gives English support. If you want to input other languages, such as Chinese or Japanese, you need an Input Method Engine (IME).

See Input method#List of available input method editors for a list of available IMEs.

### Input method module

To get a better experience, you should install the following modules as per your needs. Without them, the input method may still work on most applications but you might experience input method hang up, preview window screen location error, or no preview error.

- For Qt5 programs, install fcitx5-qt.
- For GTK programs, install fcitx5-gtk.
- For Qt4 programs, install fcitx5-qt4-gitAUR.
- For Qt6 programs, install fcitx5-qt6-gitAUR.
- For date and time support, install fcitx5-lua.

Tip: Generally, installing fcitx5-qt and fcitx5-gtk is enough to handle all situations.

## Usage

### Integration

Set the following environment variables[1], then log in again.

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

Note:

- Append `SDL_IM_MODULE=fcitx` to enable support of some games that use a specific version of the SDL2 library.
- Append `GLFW_IM_MODULE=ibus` to enable support in kitty. The value of this environment variable can only be `ibus`.[2]
- As recommended by fcitx5 upstream, the environment variable should be set to `fcitx`. Some applications (such as telegram-desktop) need to set it to `fcitx5` for compatibility reasons.

If your locale is `en_US.UTF-8`, and your GTK2 application cannot activate fcitx5, you can set the input method to xim specifically for it, for example:

    $ env GTK_IM_MODULE=xim your_gtk2_application

Do not set `GTK_IM_MODULE` to xim globally as it affects GTK3 programs as well. XIM has various problems (such as the input method cannot input after restarting), so try not to use it.

#### KDE Wayland

According to Fcitx 5 WiKi, Plasma 5.27+ supports text-input-v1, text-input-v2 and text-input-v3.

To enable text-input support, quit any running Fcitx 5 process, head to System Settings > Input Devices > Virtual Keyboard, then select Fcitx 5.

You need to set `XMODIFIERS` for XWayland clients as explained in #Integration.

### Autostart

If your desktop environment implements XDG Autostart, see Autostarting#On desktop environment startup.

See Autostarting#On Xorg startup or Autostarting#On window manager startup depending on your needs.

Tip: To see if Fcitx5 is working correctly, open an application and press `Ctrl+Space` to switch between input methods (when configured), and input some words.

### Words library

#### Chinese

This article or section is a candidate for merging with Input method#List of available input method editors.

Notes: Looks like it's already covered there. (Discuss in Talk:Fcitx5)

For the Chinese input method of Fcitx5, several words libraries are currently provided in the repository:

- fcitx5-pinyin-zhwiki: A words library created by felixonmars based on Chinese Wikipedia. Applicable to Pinyin input method.
- rime-pinyin-zhwiki: A words library for Rime input method.
- fcitx5-pinyin-moegirlAUR : A words library created by outloudvi based on Moegirlpedia.
- fcitx5-pinyin-moegirl-rimeAUR: A words library for Rime input method.
- cedict: A words library converted from cedict dictionary.

Note: Manually downloaded words library files can be directly placed in the path of `~/.local/share/fcitx5/pinyin/dictionaries`. The suffix of the words library file should be .dict

### Custom words library

#### Chinese

Generally speaking, since fcitx5 supports importing the Sogou words library, there is no need to customize words library to a large extent, but fcitx5 still provides related tools.

- Install libime

The original words library file is a text file, its format is: `Character Pinyin Frequency`

After getting the original dictionary file, execute `libime_pinyindict words-library.txt words-library.dict` .

The custom dictionary file can be placed in `~/.local/share/fcitx5/pinyin/dictionaries`

Note: The following projects may help:

- Chinese characters to Pinyin
- Simplified and Traditional Chinese Conversion

## Configuration

### Configuration tool

The configuration file of fcitx5 is located at `~/.config/fcitx5`. Although you can use a text editor to edit the configuration file, you might find a GUI configuration tool much more convenient, so install the fcitx5-configtool package.

### Disable overriding XKB settings

By default Fcitx5 overrides X keyboard settings. (The ones you can set with `setxkbmap` command or graphical tools provided by desktop environments.) If you do not want that, run `fcitx5-configtool` and uncheck Addons > XCB > Allow Overriding System XKB Settings.

### Themes and appearance

#### Themes

This article or section needs language, wiki syntax or style improvements. See Help:Style for reference.

Reason: Use Template:App. (Discuss in Talk:Fcitx5)

The number of default themes is limited, you can find more themes on GitHub.

- fcitx5-breeze: Fcitx5 theme to match the KDE Breeze style.
- fcitx5-nord: Nord Color Themes.
- fcitx5-material-color: This theme gives a feeling like Microsoft PinYin. Its official repository is located at GitHub: Fcitx5-Material-Color. Its README.md file shows some beautiful configurations of one-line mode.
- fcitx5-solarizedAUR: Solarized color theme for Fcitx5.
- fcitx5-skin-fluentdark-gitAUR: Fluent-Design dark theme with blur effects and shadows.

Tip: If you are using KCM on KDE Plasma, then switch themes with: Setting > Regional Settings > Input Method > Configure addons > Classic User Interface > Theme.
Note: Theming does not work for Fcitx5 if you are using gnome-shell-extension-kimpanel-gitAUR with GNOME environment. [3]

#### Enable single-line mode

In the settings of the Pinyin input method (or Rime input method), enable Show preedit within application to enable single-line mode.

## Troubleshooting

### Diagnose problems

If you have problems using fcitx5, eg. if `Ctrl+Space` fails to work in all applications, then the first thing you should try is to diagnose using `fcitx5-diagnose`. The output of `fcitx5-diagnose` should contain clues for the most common problems.

### Fcitx5 single-line mode not working in some applications

1. If the single-line mode does not work in gtk applications such as Firefox, please install fcitx5-gtk
2. The single-line mode does not work in WPS Office and Sublime Text, this is a problem of WPS Office and Sublime Text itself, not a problem of fcitx5. [4]

### Fcitx5 has position errors in JetBrains IDEs

The cause of this issue is that the JBR shipped with the IDE is not correct, to fix this issue you need to:

Install jbr17-imfixAUR or download the alternative JetBrainRuntime and extract it, then follow JetBrains' support to change the IDE's JBR.

### Fcitx5 is not working in JetBrains IDEs

Please verify that your system locale is correct and well generated, as an incorrect locale will prevent Fcitx5 from working correctly in JetBrains IDEs.

### Emoji show abnormally in the candidate box

- Confirm you have a font with emoji support installed (such as noto-fonts-emoji)
- Set the system font as `Noto Sans CJK SC` for Simplified Chinese, for example.
- Restart Fcitx5 by the following command:

    $ kill `ps -A | grep fcitx5 | awk '{print $1}'` && fcitx5&

### Fcitx5 not available in RStudio

Run the following command:

    $ strings /usr/lib/rstudio/lib/libQt5Core.so.5 | grep "Qt 5"

Find out the version of the Qt library, use this version to recompile `libfcitx5platforminputcontextplugin.so` in fcitx5-qt, and put it into `/usr/lib/rstudio/plugins/platforminputcontexts/` directory.

If you are using rstudio-desktop-binAUR, you can install rstudio-fcitx5AUR directly.

### Fcitx5 not available on Steam and Dota 2

The IME can be activated on Steam Big Screen mode and Dota 2 by using `Ctrl+Space` instead of `Ctrl+Shift`. [5]

### Fcitx5 not available in Chromium running on Wayland

This issue arises from Chromium not yet supporting GTK IM on Wayland, which can be resolved by adding `--gtk-version=4` to the startup flags. If still not working, please make sure you have installed gtk4. [6]

### Candidate popup misaligned in HiDPI mode of GTK environments

If the position of your candidate popup is not anchored at your cursor position, install fcitx5-gtk.

### Fcitx5 not available in kitty

See kitty#Enable IME support.

### Fcitx5 right alt key not working with Electron applications

If a non-system keyboard is used by an application (e.g. Discord, Element, etc.), the application may handle the `ISO_Level3_Shift` before the input method can. This results in some input methods failing in specific applications. One solution is to add another input method group, setting the system layout to correspond to this keyboard. For example, to type Polish letters like `ąćęłńóśźż` on a QWERTY keyboard with English as your primary system keyboard, you can use the Fcitx5 Configuration GUI to:

1. Click the Add Group plus button.
2. Select this group in the dropdown and now add your input method (the keyboard, e.g. Keyboard - Polish).
3. Use Select system keyboard layout to pick the one that matches this input method, and apply changes.

See comments from the Fcitx5 developers if you need another solution. [7]

### Fcitx5 not working with non-GTK/Qt Wayland applications (Alacritty, kitty, etc) in KDE Plasma

In System Settings > Input Devices > Virtual Keyboard, select Fcitx 5 as Virtual Editor, save and restart. [8]

### Software using Wayland input protocol cannot obtain Wayland popup window

Software using the Wayland input protocol (such as wezterm and GTK software if the environment variable is set to `GTK_IM_MODULE=wayland`) can edit but not see the popup windows due to the lack of text-input-v3 support.

Regarding Qt software and GTK software support for Wayland, according to the fcitx5 developer[9]:

  Qt has text-input-v2 support. If QT_IM_MODULE is empty, it can be used, but there are some minor problems with pre-editing. In addition, for the current version of Wayland input method protocol, Wayland can only have one global input context. So now if you want to use the "per-application" input status supported by Fcitx 5, it may be a problem. However, there is a benefit to using Qt's text input protocol, which is that the input window will not flicker visually.
  Gtk has text-input-v3 support, but its pre-editing style is poor, with bold fonts highlighted. In addition, its text support is weak. So now, if you want to have all the Fcitx features, using `GTK_IM_MODULE=fcitx` may still be a good choice.

#### KDE

Enable the virtual keyboard support for fcitx5 in settings, searching for virtual keyboard in the control center, selecting fcitx5 and enabling it.

#### Sway

Sway has merged the patch for the text-input-v3 protocol, but the input-method-v2 protocol is still not completely implemented and sway still can't show the popup window. There is a open pull request which can fix it: https://github.com/swaywm/sway/pull/7226. This fix is available on AUR: sway-imAUR.

#### GNOME

Install the gnome-shell-extension-kimpanel-gitAUR plugin.

### Fcitx5 not available in some applications

This article or section needs language, wiki syntax or style improvements. See Help:Style for reference.

Reason: This does not explain why the solution works, nor what the exact issue is, no bugs are referenced. (Discuss in Talk:Fcitx5)

If you cannot use Fcitx5 in some application (e.g:Anki Qt6), check if you have `~/.xprofile`. If you do not have it then create the files with the required environment variables inside the `~/.xprofile`. Restart your graphical session to test.

## Tips and tricks

### Customizing traditional and simplified Chinese conversion

Some IMEs assume Simplified Chinese by default, resulting in incorrect characters being displayed when using Traditional input, e.g. 爲什麼 instead of 為什麼. To fix this, the usage of the `Simplified and Traditional Chinese Translation` can be customized.

To configure conversion, set `OpenCC profile for Simplified to Traditional` to one of the following values:

- s2t - Simplified to Traditional (OpenCC) (this is the default and probably not what you are looking for)
- s2tw - Simplified to Traditional (Taiwan)
- s2twp - Simplified to Traditional (Taiwan) with Taiwanese idiom
- s2hk - Simplified to Traditional (Hong Kong)

To configure the reverse, set `OpenCC profile for Traditional to Simplified` to one of the following values:

- t2s - Traditional (OpenCC) to Simplified (OpenCC) (this is the default and probably not what you are looking for)
- tw2s - Traditional (Taiwan) to Simplified (OpenCC)
- tw2sp - Traditional (Taiwan) to Simplified (OpenCC) with Mainland Chinese idiom
- t2hk - Traditional (OpenCC) to Hong Kong variant
- t2tw - Traditional (OpenCC) to Taiwan Standard
- tw2t - Traditional (Taiwan) to Traditional (OpenCC)
- hk2s - Traditional (Hong Kong) to Simplified (OpenCC)
- hk2t - Traditional (Hong Kong) to Traditional Chinese (OpenCC)
- t2jp - Traditional (Kyūjitai) to New Japanese Kanji (Shinjitai)
- jp2t - New Japanese Kanji (Shinjitai) to Traditional (Kyūjitai)

Up to date list here: OpenCC

### View the Unicode encoding of selected characters

- If you want to view the Unicode encoding of the selected text in a text editor, then directly select the text, and then use the shortcut keys `Ctrl+Alt+Shift+u` to view the encoding of the selected text.
- If you want to view the Unicode encoding of some text in a non-editable area (such as this wiki), you need to first copy the text to the clipboard, then click on any editable area (such as the search box), and then use the shortcut keys `Ctrl+Alt+Shift+u` to view the encoding of the text in the clipboard.

### Input special characters

In general, for some simple symbols, such as `≤`, `ā`, `á`, `©`, etc., you can enter them through Configuring compose key, but for more special symbols, such as `②`, `③`, `④`, etc., you Either customize `~/.XCompose`, or use Fcitx5's Unicode function to achieve.

Take `①` as an example:

Position the cursor in any input box, and then press `Ctrl+Alt+Shift+u`, and then enter `circle one`, you will see a variety of `①`, other special characters are similar here.

### Switching halfwidth and fullwidth punctuation

For fcitx5-chinese-addons, fullwidth punctuation is used by default, one may use `Ctrl+.` to switch between halfwidth and fullwidth punctuation.

### Automatically switch input methods in vim

It is recommended to use the fcitx.vim plugin. This plugin will keep different buffer-specific input method states in their respective insert modes.

For a simple solution, you can append the code to `~/.vimrc`: [10][11]

    ~/.vimrc

    let fcitx5state=system("fcitx5-remote")
    autocmd InsertLeave * :silent let fcitx5state=system("fcitx5-remote")[0] | silent !fcitx5-remote -c " Disable the input method when exiting insert mode and save the state
    autocmd InsertEnter * :silent if fcitx5state == 2 | call system("fcitx5-remote -o") | endif " 2 means that the input method was opened in the previous state, and the input method is started when entering the insert mode

If you are using neovim, then append the above code to `~/.config/nvim/init.vim`.

If you are using Vim9, then the code should be

    ~/.vimrc

    # Only taking affect after using vim9script grammar or has `vim9script` keyword.
    var fcitx5state = system("fcitx5-remote")
    autocmd InsertLeave * :silent fcitx5state = system("fcitx5-remote")[0] | silent !fcitx5-remote -c
    autocmd InsertEnter * :silent if fcitx5state == '2' | call system("fcitx5-remote -o") | endif

Note: If you add this code in vim.cmd, you may need to uncomment it.

If you are using VSCodeVim, add the following snippet into your configuration file:

    "vim.autoSwitchInputMethod.enable": true,
    "vim.autoSwitchInputMethod.defaultIM": "1",
    "vim.autoSwitchInputMethod.obtainIMCmd": "/usr/bin/fcitx5-remote",
    "vim.autoSwitchInputMethod.switchIMCmd": "/usr/bin/fcitx5-remote -t {im}",

### Pinyin input method

Note: The following functions are only valid for the Pinyin input method in fcitx5-chinese-addons, please explore other input methods by yourself.

#### Import Sogou words library

- For KDE users, you can import Sogou words library through Settings > Regional Settings > Input Method > Pinyin > Dictionary > Import.
- For users who use fcitx5-configtool, you need to manually open the software "Fcitx5 Configuration" and manually configure it in the Pinyin input method.

You can import local words library or browse and import online words library.

#### Cloud Pinyin

On the settings page of the Pinyin input method, you can enable Cloud Pinyin. But if you need to change the default backend of Cloud Pinyin, you need to change it in the global settings of fcitx5. Provided backends are `Google`, `Baidu`, `GoogleCN`.

#### Stroke Filter

Set the shortcut key after the "stroke filter" of the pinyin input method you set (the default is ```) Then after entering the text, press the shortcut key, the words stroke filter will appear in the candidate box of the input method, and the words can be filtered by strokes. The specific rules are: h horizontal stroke, s vertical stroke, p left-falling stroke, n right-falling stroke, z turning stroke.

By default, the stroke filter is to filter the first character of a sentence, but you can switch between different characters in a sentence by using determining characters by word.

For example, to perform stroke filtering on the third character in the word 中华人民共和国, you can press `]` twice in a row after enabling stroke filtering to let fcitx5 perform stroke filtering on it.

Note: By default, the shortcut keys of Determining characters with words are `[` and `]`, and the shortcut keys can be viewed in the settings of Pinyin input method.

### RIME/Zhongzhou rhyme

Tip: All changes need to be redeployed to take effect.

#### Import words library

Take importing words library rime-pinyin-zhwiki and fcitx5-pinyin-moegirl-rimeAUR as an example.

Tip: It is also possible to put the custom words library into `~/.local/share/fcitx5/rime/`, and the file name (filename.dict.yaml) should be the same as the words library name (words library format)

1. Change the `~/.local/share/fcitx5/rime/luna_pinyin.custom.yaml` file (take `luna_pinyin` as an example, and modify the name of the other input schemes)

    ~/.local/share/fcitx5/rime/luna_pinyin.custom.yaml

    # There should only be one "patch:" in the file, if it already exists, just paste the following code
    # This file is used to modify a specific input scheme, change the above luna_pinyin to other input scheme names to complete the modification of other input schemes
    patch:
        "translator/dictionary": extended #The dictionary name can be customized, just keep the same as the file name below

2. Create a new `~/.local/share/fcitx5/rime/extended.dict.yaml` file

Tip: Import custom words library just add the words library name after "import_tables:"

    ~/.local/share/fcitx5/rime/extended.dict.yaml

    # The following disables the default words library and does not enable the default "Baguwen" words library and word frequency system, if you do not want traditional characters and box characters to appear in candidate words
    ---
    name: extended
    version: "2021.02.19"
    sort: by_weight
    use_preset_vocabulary: false #Whether to enable the default "Baguwen" words library and word frequency system, if you want to enable it, please set it to true.
    import_tables:
      # - luna_pinyin #Default words library, please uncomment if you want to enable it
      - zhwiki
      - moegirl
      # - custom words library name
    ...

#### Fuzzy sound settings

Please comment (#) or delete unnecessary fuzzy sounds as needed. If you need to add other fuzzy sounds, please refer to Mingyue Pinyin fuzzy sound custom template

If the `luna_pinyin.custom.yaml` file does not exist

    ~/.local/share/fcitx5/rime/luna_pinyin.custom.yaml

    patch:
        "speller/algebra":
            - derive/^([zcs])h/$1/ #zh,ch,sh->z,c,s
            - derive/^([zcs])([^h])/$1h$2/ #z,c,s->zh,ch,sh
            - derive/^n/l #n->l
            - derive/^l/n #l->n
            - derive/([ei])n$/$1ng/  # en -> eng, in -> ing
            - derive/([ei])ng$/$1n/ # eng->en, ing -> in
            - abbrev/^([a-z]).+$/$1/ #Jianpin support
            - abbrev/^([zcs]h).+$/$1/ #fuzzy sounds support for Jianpin
            delimiter: " '" #delimiter

If the file exists, paste the part below `patch:` to the end of the file (there is only one `patch:` in `luna_pinyin.custom.yaml`)

#### Special symbols

Note: Fcitx5 has built-in support for special symbols. See #Input special characters

Import the `symbols.dict.yaml` words library in the rime-dict project to input Greek letters, some mathematical symbols and Emoji expressions in Pinyin.

Example:

- Greek letters: input `alpha` to output `α`

- Mathematical symbols: input `jifen` to output `∫`

- Special symbols: Input `cha` to output `✕,✖`

- Serial number: input `qi` to output `Ⅶ,⑦`

- Emoji expression: Input `haha` to output `😃,😆`

#### Load librime-lua plugin

If you want to load the librime-lua plugin, you must add the `lua` module in the Rime input method settings of the fcitx configuration tool.

Category:

- Input methods

Hidden categories:

- Pages or sections flagged with Template:Merge
- Pages or sections flagged with Template:Style