2026-08-11 19:35:11 +09:00
2026-08-12 16:08:23 +09:00
2026-08-12 15:36:37 +09:00
2026-08-12 16:20:47 +09:00
2026-08-11 19:35:19 +09:00
2026-08-11 19:35:11 +09:00
2026-02-08 17:57:23 +09:00
2026-08-12 15:44:04 +09:00
2026-08-12 15:54:16 +09:00
2026-08-12 14:23:41 +09:00
2026-08-12 15:41:46 +09:00
2026-08-12 15:59:52 +09:00
2026-08-12 15:54:16 +09:00
2026-08-12 15:49:28 +09:00
2026-08-12 16:08:23 +09:00
2026-08-12 16:08:23 +09:00
2026-05-28 23:38:23 +09:00
2026-08-12 16:22:58 +09:00
2026-08-12 15:56:43 +09:00
2026-08-12 14:23:41 +09:00
2026-05-29 02:28:49 +09:00
2026-08-12 16:08:23 +09:00
2025-12-23 20:21:56 +09:00
2026-08-12 15:54:16 +09:00
2026-08-12 15:54:16 +09:00
2026-08-11 19:34:14 +09:00
2026-08-12 15:58:24 +09:00
2026-08-12 15:59:52 +09:00

strans

A small input method daemon for Japanese, Korean, Vietnamese, emoji, and symbols on X11 and Wayland. Inspired by 9front's ktrans.

Build

The recommended build needs only Docker and Make on the host:

make docker

This creates an Arch Linux build image, compiles all runtime components in one disposable container, and writes three artifacts into the source tree:

strans              daemon, IBus and Wayland frontend
xim/strans-xim      XIM frontend
gtk/im-strans.so    GTK 3 frontend

The build starts clean so host and container object files are never mixed. It removes existing build and test outputs; the strans-build dependency image is kept as a cache. No development packages are required on the host.

Void Linux runtime dependencies:

sudo xbps-install -S dbus-libs wayland libxkbcommon libxcb xcb-imdkit gtk+3

For a native Arch Linux build, use Dockerfile as the dependency and Plan 9 setup checklist, then run make. Build the benchmark separately with make bench.

Run

Start the daemon:

./strans map font &

For XIM applications:

./xim/strans-xim &
export XMODIFIERS=@im=strans
xterm

For GTK 3 applications:

sudo make -C gtk install
GTK_IM_MODULE=strans gedit

For IBus clients such as kitty:

GLFW_IM_MODULE=ibus kitty

Wayland needs no environment variable. Start strans after a wlroots compositor that supports input-method-v2. Neither ibus-daemon nor fcitx is required.

Keys

Input modes are selected with Ctrl and one letter:

Ctrl+N  Hiragana
Ctrl+K  Katakana
Ctrl+S  Hangul
Ctrl+T  English
Ctrl+V  Vietnamese Telex
Ctrl+E  Emoji and symbol search
Ctrl+P  Toggle popup preedit

Use 1-9 or the arrow keys to select a candidate. Tab moves through candidates, Enter commits, and Escape cancels.

Emoji search is temporary and returns to the previous input mode:

Ctrl+E → smile → Enter → 😀

Tests

Tests use the sibling cutest repository as a submodule. Its relative URL expects repository mirrors and forks to provide the same sibling. Initialize it once, then run the checks in the build container:

git submodule update --init
make docker-check

The native make check command needs plan9port and Python 3, but not the GUI development packages. Use make test TESTARGS=hangul or make docker-check TESTARGS=hangul to filter unit tests. After editing map/emoji.src, regenerate and verify the dictionary with:

map/mkemoji > map/emoji.dict
make verify-map

Design

strans owns the input engine and candidate window. The XIM and GTK frontends forward keys to it over a Unix socket; the IBus and Wayland frontends are built into the daemon. Internal threads communicate through CSP channels.

Description
No description provided
Readme 59 MiB
Languages
C 91.1%
Python 5.8%
Makefile 2.2%
Shell 0.6%
Dockerfile 0.3%