Custom IME is a CLI tool for creating and managing custom Input Method Engines (IMEs) for the fcitx5 input method framework. It enables developers and enthusiasts to create sophisticated input methods with advanced features like real-time character mapping, keyword substitution, and multiple display modes.
video_2025-11-20_21-51-47.mp4
- Original Mode: Direct character-by-character input with real-time conversion
- Toggle Display Mode: Simultaneous display of both original and mapped characters during input, with only converted text committed
- Print Mode: Two-line display showing original text above and converted text below
- Keyword Ignore System: Dynamic keyword recognition with toggle functionality (F7)
- Context-Aware Mapping: Support for different character sets (lowercase, uppercase, digits, operators)
- Configurable Behavior: Customizable settings for number conversion, case sensitivity, and unknown character handling
- Multiple Commit Methods: Text commitment using Enter or Space keys
- Real-time Preview: Live preview of conversions across different modes
- Flexible Configuration: Easy-to-edit configuration files for custom mappings
yay -S custom-imeor
paru -S custom-imeThe following dependencies are required:
- fcitx5 - Input method framework
- cmake - Build system
- gcc - C/C++ compiler
- make - GNU Make
- go - Go compiler (β₯1.25)
- git - Version control
Additional development libraries:
- xcb-proto, libxcb, expat, pkgconf, json-c, dbus, fmt, unicode-cldr-annotations
Use the prerequisites script to view installation commands for your distribution:
./prerequisites.sh# Clone the repository
git clone https://github.com/fakeshinigami110/custom-IME.git
cd custom-IME
# Install dependencies (see prerequisites.sh for your distribution)
sudo pacman -S fcitx5 cmake base-devel go git
# Build and install
./install.shcustom-ime create -p myproject -n cuneiform -l Cun -L en -c test.conf -D "Cuneiform Input Method"custom-ime install -p myprojectfcitx5-configtool
# Or via GUI: System Settings > Regional Settings > Input MethodIn fcitx5-configtool:
Click "+" button
Uncheck "Only Show Current Language"
Find your IME (e.g., "Cuneiform")
Add and apply
# List all projects
custom-ime list
# Delete project sources
custom-ime delete -p myproject -d
# Uninstall IME
custom-ime delete -p myproject -uCustom IME uses simple configuration files to define character mappings and behavior. Here's a sample configuration structure :
# Cuneiform IME Configuration for fcitx5
# generated by Omikami
[Settings]
convert_numbers=false
unknown_chars_behavior=keep
add_spaces=true
number_separator=
case_sensitive=true
[Characters]
a=π
b=π²
c=π¨
d=π
e=π‘
[Capitals]
A=π
B=π
C=π
΄
[Digits]
0=π
1=π
2=π
[Keywords]
var=πΏ
int=πππ
float=ππππ±
[Operators]
== = ππ
!= = ππΏ
+ = πyou can find the full sample on test.conf
You can find config file of each project on
~/.config/custom-ime/projectName/config/projectName.conf
after any change use the following command to reaload:
fcitx5 -rd- F8: Cycle through input modes (Original β Toggle β Print)
- F7: Toggle keyword ignore functionality
- Enter or Space: Commit converted text
- Real-time preview in Toggle and Print modes
Create custom configuration files to define:
- Character mappings for different cases
- Special keyword substitutions
- Operator conversions
- Behavioral settings
go build -o custom-imeContributions are welcome! Please feel free to submit pull requests or open issues for bugs and feature requests.
This project is licensed under the GPL3 License - see the LICENSE file for details.
For issues and questions:
- Check existing issues on GitHub
- Review the documentation
- Examine sample configurations
- fcitx5 team for the excellent input method framework
- Go community for robust tooling and libraries
- Arch Linux AUR maintainers for packaging support
You can contact me on Telegram using this link.