diff --git a/README.md b/README.md index c146f5e..79ccc13 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # strans -An input method daemon for CJK text entry on X11. +An input method daemon for CJK text entry on X11 and Wayland. Inspired by 9front's ktrans. Threads communicate via CSP channels. @@ -8,6 +8,7 @@ Inspired by 9front's ktrans. Threads communicate via CSP channels. - plan9port - dbus-1 +- wayland-client, libxkbcommon (for Wayland support) - gtk+-3.0 (optional, for GTK IM module) ## Build @@ -33,7 +34,12 @@ For IBus apps (kitty, foot, etc.): GLFW_IM_MODULE=ibus kitty -Strans itself is the IBus endpoint; no ibus-daemon or fcitx5 needed. +For Wayland apps (text-input-v3 clients on wlroots compositors): + + # nothing to set; the compositor relays text-input-v3 to strans + +Strans itself is the IBus endpoint and the Wayland input-method-v2 client; +no ibus-daemon or fcitx5 needed. Start strans after the compositor. ## Usage @@ -51,13 +57,14 @@ Tab or Enter to commit. ## Architecture -Four threads communicate via CSP channels: +Threads communicate via CSP channels: - [imthread](strans.c#L271): keystroke processing, transliteration - [dictthread](dict.c#L38): dictionary lookup - [drawthread](win.c#L133): preedit window rendering - [srvthread](srv.c#L42): IPC via unix socket - [ibusthread](ibus.c): IBus D-Bus endpoint for GLFW/kitty +- [waylandthread](wayland.c): Wayland input-method-v2 + virtual-keyboard-v1 Adapters (strans-xim, im-strans.so) bridge X11/GTK events. @@ -67,9 +74,18 @@ Adapters (strans-xim, im-strans.so) bridge X11/GTK events. dict.c dictionary queries win.c xcb window management font.c truetype rendering (stb_truetype) + wayland.c wayland input-method-v2 adapter map/ transliteration tables font/ bundled CJK fonts + input-method-unstable-v2-*.{c,h} wayland-scanner output, vendored + virtual-keyboard-unstable-v1-*.{c,h} + +The two Wayland protocols (input-method-v2, virtual-keyboard-v1) are +wlroots-only and not in the upstream wayland-protocols package, so the +generated client code is vendored. Regenerate with wayland-scanner if +the XML upstream ever changes (it hasn't in years). + ## References - https://git.9front.org/plan9front/plan9front/HEAD/info.html