Skip to content

About

Custom IME is a CLI tool for creating and managing custom Input Method Engines for the fcitx5 input method framework.

Topics

Resources

Stars

4 stars

Watchers

0 watching

Forks

Latest commit

Β 

History

35 Commits

Folders and files

Repository files navigation

Custom IME - Input Method Engine for fcitx5

GitHub last commit Go C++ fcitx5

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.

Quick Demo

video_2025-11-20_21-51-47.mp4

Features

Advanced Input Modes

  • 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

Intelligent Text Processing

  • 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

Professional Workflow

  • 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

Installation

AUR Installation (Recommended)

yay -S custom-ime

or

paru -S custom-ime

Dependencies

The 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

Automated Dependency Installation

Use the prerequisites script to view installation commands for your distribution:

./prerequisites.sh

Manual Installation

# 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.sh

Quick Start

Creating a New IME Project

custom-ime create -p myproject -n cuneiform -l Cun -L en -c test.conf -D "Cuneiform Input Method"

Installing the IME

custom-ime install -p myproject

Add IME to fcitx5

Open fcitx5 configuration tool

fcitx5-configtool
# Or via GUI: System Settings > Regional Settings > Input Method

In fcitx5-configtool:

Click "+" button

Uncheck "Only Show Current Language"

Find your IME (e.g., "Cuneiform")

Add and apply

Project Management

# List all projects
custom-ime list

# Delete project sources
custom-ime delete -p myproject -d

# Uninstall IME
custom-ime delete -p myproject -u

Configuration

IMEs databse is on your ~/.fcitx5-projects.json please DO NOT edit it manually.

Custom 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

Edit config file after installation

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

Usage

Input Mode Switching

  • F8: Cycle through input modes (Original β†’ Toggle β†’ Print)
  • F7: Toggle keyword ignore functionality

Text Commitment

  • Enter or Space: Commit converted text
  • Real-time preview in Toggle and Print modes

Configuration

Create custom configuration files to define:

  • Character mappings for different cases
  • Special keyword substitutions
  • Operator conversions
  • Behavioral settings

Development

Building from Source

go build -o custom-ime

Contributing

Contributions are welcome! Please feel free to submit pull requests or open issues for bugs and feature requests.

License

This project is licensed under the GPL3 License - see the LICENSE file for details.

Support

For issues and questions:

  • Check existing issues on GitHub
  • Review the documentation
  • Examine sample configurations

Acknowledgments

  • fcitx5 team for the excellent input method framework
  • Go community for robust tooling and libraries
  • Arch Linux AUR maintainers for packaging support

Custom IME - Empowering custom input methods for specialized workflows and linguistic requirements.

Powered by Omikami (Shinigami_110)

You can contact me on Telegram using this link.

About

Custom IME is a CLI tool for creating and managing custom Input Method Engines for the fcitx5 input method framework.

Topics

Resources

Stars

4 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages