1# Input Methods {#module-services-input-methods} 2 3Input methods are an operating system component that allows any data, such as 4keyboard strokes or mouse movements, to be received as input. In this way 5users can enter characters and symbols not found on their input devices. 6Using an input method is obligatory for any language that has more graphemes 7than there are keys on the keyboard. 8 9The following input methods are available in NixOS: 10 11 - IBus: The intelligent input bus. 12 - Fcitx5: The next generation of fcitx, addons (including engines, dictionaries, skins) can be added using `i18n.inputMethod.fcitx5.addons`. 13 - Nabi: A Korean input method based on XIM. 14 - Uim: The universal input method, is a library with a XIM bridge. 15 - Hime: An extremely easy-to-use input method framework. 16 - Kime: Korean IME 17 18## IBus {#module-services-input-methods-ibus} 19 20IBus is an Intelligent Input Bus. It provides full featured and user 21friendly input method user interface. 22 23The following snippet can be used to configure IBus: 24 25```nix 26{ 27 i18n.inputMethod = { 28 enable = true; 29 type = "ibus"; 30 ibus.engines = with pkgs.ibus-engines; [ 31 anthy 32 hangul 33 mozc 34 ]; 35 }; 36} 37``` 38 39`i18n.inputMethod.ibus.engines` is optional and can be used 40to add extra IBus engines. 41 42Available extra IBus engines are: 43 44 - Anthy (`ibus-engines.anthy`): Anthy is a system for 45 Japanese input method. It converts Hiragana text to Kana Kanji mixed text. 46 - Hangul (`ibus-engines.hangul`): Korean input method. 47 - libpinyin (`ibus-engines.libpinyin`): A Chinese input method. 48 - m17n (`ibus-engines.m17n`): m17n is an input method that 49 uses input methods and corresponding icons in the m17n database. 50 - mozc (`ibus-engines.mozc`): A Japanese input method from 51 Google. 52 - Table (`ibus-engines.table`): An input method that load 53 tables of input methods. 54 - table-others (`ibus-engines.table-others`): Various 55 table-based input methods. To use this, and any other table-based input 56 methods, it must appear in the list of engines along with 57 `table`. For example: 58 59 ```nix 60 { 61 ibus.engines = with pkgs.ibus-engines; [ 62 table 63 table-others 64 ]; 65 } 66 ``` 67 68To use any input method, the package must be added in the configuration, as 69shown above, and also (after running `nixos-rebuild`) the 70input method must be added from IBus' preference dialog. 71 72### Troubleshooting {#module-services-input-methods-troubleshooting} 73 74If IBus works in some applications but not others, a likely cause of this 75is that IBus is depending on a different version of `glib` 76to what the applications are depending on. This can be checked by running 77`nix-store -q --requisites <path> | grep glib`, 78where `<path>` is the path of either IBus or an 79application in the Nix store. The `glib` packages must 80match exactly. If they do not, uninstalling and reinstalling the 81application is a likely fix. 82 83## Fcitx5 {#module-services-input-methods-fcitx} 84 85Fcitx5 is an input method framework with extension support. It has three 86built-in Input Method Engine, Pinyin, QuWei and Table-based input methods. 87 88The following snippet can be used to configure Fcitx: 89 90```nix 91{ 92 i18n.inputMethod = { 93 enable = true; 94 type = "fcitx5"; 95 fcitx5.addons = with pkgs; [ 96 fcitx5-mozc 97 fcitx5-hangul 98 fcitx5-m17n 99 ]; 100 }; 101} 102``` 103 104`i18n.inputMethod.fcitx5.addons` is optional and can be 105used to add extra Fcitx5 addons. 106 107Available extra Fcitx5 addons are: 108 109 - Anthy (`fcitx5-anthy`): Anthy is a system for 110 Japanese input method. It converts Hiragana text to Kana Kanji mixed text. 111 - Chewing (`fcitx5-chewing`): Chewing is an 112 intelligent Zhuyin input method. It is one of the most popular input 113 methods among Traditional Chinese Unix users. 114 - Hangul (`fcitx5-hangul`): Korean input method. 115 - Unikey (`fcitx5-unikey`): Vietnamese input method. 116 - m17n (`fcitx5-m17n`): m17n is an input method that 117 uses input methods and corresponding icons in the m17n database. 118 - mozc (`fcitx5-mozc`): A Japanese input method from 119 Google. 120 - table-others (`fcitx5-table-other`): Various 121 table-based input methods. 122 - chinese-addons (`fcitx5-chinese-addons`): Various chinese input methods. 123 - rime (`fcitx5-rime`): RIME support for fcitx5. 124 125## Nabi {#module-services-input-methods-nabi} 126 127Nabi is an easy to use Korean X input method. It allows you to enter 128phonetic Korean characters (hangul) and pictographic Korean characters 129(hanja). 130 131The following snippet can be used to configure Nabi: 132 133```nix 134{ 135 i18n.inputMethod = { 136 enable = true; 137 type = "nabi"; 138 }; 139} 140``` 141 142## Uim {#module-services-input-methods-uim} 143 144Uim (short for "universal input method") is a multilingual input method 145framework. Applications can use it through so-called bridges. 146 147The following snippet can be used to configure uim: 148 149```nix 150{ 151 i18n.inputMethod = { 152 enable = true; 153 type = "uim"; 154 }; 155} 156``` 157 158Note: The [](#opt-i18n.inputMethod.uim.toolbar) option can be 159used to choose uim toolbar. 160 161## Hime {#module-services-input-methods-hime} 162 163Hime is an extremely easy-to-use input method framework. It is lightweight, 164stable, powerful and supports many commonly used input methods, including 165Cangjie, Zhuyin, Dayi, Rank, Shrimp, Greek, Korean Pinyin, Latin Alphabet, 166etc... 167 168The following snippet can be used to configure Hime: 169 170```nix 171{ 172 i18n.inputMethod = { 173 enable = true; 174 type = "hime"; 175 }; 176} 177``` 178 179## Kime {#module-services-input-methods-kime} 180 181Kime is Korean IME. it's built with Rust language and let you get simple, safe, fast Korean typing 182 183The following snippet can be used to configure Kime: 184 185```nix 186{ 187 i18n.inputMethod = { 188 enable = true; 189 type = "kime"; 190 }; 191} 192```