Ngó Sen
A Vietnamese input method for fcitx5 on Linux. It needs no special permissions, and has no underlined preedit: one typing mode, Gõ Sen, for most apps.
Ngó Sen means “lotus stem”. Bugs can be reported in Issues. The rest of this site is in Vietnamese.
Install
curl -fsSL https://raw.githubusercontent.com/ngosen/ngosen/main/install.sh | bash
The script picks the prebuilt package for your distribution from the latest GitHub release, asks
before it downloads the package, checks the file against SHA256SUMS and installs it
with your package manager. Your configuration is kept. Its prompts are in Vietnamese: answer c to continue. The source is
install.sh.
On GNOME, on KDE Plasma (Wayland), and on X11 desktops that pick the input method with im-config such
as Xfce, Cinnamon and MATE, the script also makes fcitx5 the input method for your account, adds Ngó Sen to the input
method list and sets Ctrl+Shift to switch Vietnamese on, unless you already chose another key. Log out
and back in, then press Ctrl+Shift. On GNOME it also hides the fcitx5 launchers you do not need, and
adds the Input Method Panel extension when there is no system tray, as on Fedora. These steps apply to
the account that runs the script; add --no-setup to install the package only. On KDE
Plasma it selects fcitx5 as KDE's virtual keyboard (System Settings, Virtual Keyboard), so Qt apps
such as Kate and Dolphin can type too.
On other desktops, or after installing a package by hand:
-
Restart fcitx5 with
fcitx5 -rd. Do this again after every update. On KDE Wayland, log out and back in instead: KDE starts fcitx5 itself, and the command cannot replace it. - Open “Fcitx5 Configuration” and add the input method named Ngó Sen.
- On KDE Wayland, select “Fcitx 5” under System Settings, Virtual Keyboard.
- In the Ngó Sen settings window, on the Gõ chữ page, press Gõ Sen in the Chế độ gõ row.
Since 1.2 the settings window follows the desktop's look, light or dark, KDE or GNOME. Every change is saved at once, with an Undo button (Hoàn tác).
On Ubuntu 26.04 the script turns on an extension that works around a GNOME bug that drops the
backspaces the input method sends. After installing a package by hand, log out and back in, then run
gnome-extensions enable forward-keys@ngosen.github.io once.
To uninstall, run the script with --uninstall. On GNOME it also undoes what the script
changed, so GNOME uses IBus again after you log back in. On Xfce, Cinnamon and MATE it resets the
input method to the system default; fcitx5 stays installed and may still start, typing English only.
On KDE it leaves fcitx5 as the virtual keyboard, since another input method may use it; choose None
under System Settings, Virtual Keyboard to drop it.
curl -fsSL https://raw.githubusercontent.com/ngosen/ngosen/main/install.sh | bash -s -- --uninstall
To try unreleased changes, install the test build,
built automatically whenever the next branch changes:
curl -fsSL https://raw.githubusercontent.com/ngosen/ngosen/next/install.sh | NGOSEN_RELEASE_URL=https://github.com/ngosen/ngosen/releases/download/next-build bash
Where it has been tested
Packages exist for these distributions on x86_64. A package that builds is not a package that works, so each one is labelled by how far it was tested, as listed in the notes of release 1.4.1-1.
| Distribution | Tested level |
|---|---|
| Fedora 44 | Main setup |
| Arch, CachyOS | Tested |
| Ubuntu 26.04 | Tested |
| Ubuntu 24.04 | Tested |
| Debian 13 | Tested |
| Fedora 43 | Builds only |
| openSUSE Tumbleweed | Builds only |
| Ubuntu 22.04 | Builds only |
| Debian 12 | Builds only |
“Main setup” means the maintainer types on that system every day, on KDE Plasma Wayland. “Tested”
means a handful of apps were tried in a virtual machine: CachyOS with Hyprland, Ubuntu 26.04 with
GNOME Wayland, Linux Mint 22 for Ubuntu 24.04 and MX 25 for Debian 13; the two Ubuntu tests used a
build from source. “Builds only” means the package builds and passes the test suite at build time;
nobody has typed with it there. These levels come from testing release 0.5; the spreadsheet fixes in
1.0 were tested in a CachyOS virtual machine (KDE Wayland) with LibreOffice Calc, WPS Office and
Google Sheets in Firefox. Release 1.1 renames the installed files; the update from 1.0.0-1 was
tested in a Linux Mint 22 virtual machine (Cinnamon, X11): the settings were copied over, the input
method stayed in the list and typed the right text. Release 1.2 replaces the settings window: saving
and undo through a real fcitx5 were tested in Linux Mint 22 (Cinnamon, X11), CachyOS (KDE Wayland) and
Ubuntu 26.04 (GNOME Wayland) virtual machines, and 1.2 typed the right text in GNOME Text Editor on
CachyOS. The fix for swapped letters in gnome-terminal was tested with a simulated D-Bus client and
by typing in gnome-terminal by hand: no letters were swapped. Release 1.2.1 only drops the Applications
page (Ứng dụng) from the settings window; the input method is unchanged. The four-page window was
opened in a CachyOS virtual machine (KDE Wayland), in light and dark. Release 1.2.2 fixes the label
next to the cursor and lost tone marks in the Edge address bar; the Edge bug was reproduced in a test
rebuilt from a key log on Fedora 44 (KDE Wayland), then typed again by hand in Edge after the fix.
Release 1.3.0 adds the option for Backspace to remove only the tone mark, typed by hand on Fedora 44
(KDE Wayland) with a build from the next branch. The new tray icons were checked in
Linux Mint 22.3 (Cinnamon) and MX Linux 25.3 (Xfce) virtual machines. The Debian 13 package was
installed in MX Linux 25.3, where Telex vieejt typed việt in a GTK terminal,
and updating there from 1.0.0-1 and running fcitx5 -rd kept Ngó Sen in the input
method list. Release 1.4.0 mostly changes the one-line installer. It was run in Ubuntu 26.04 (GNOME
Wayland), CachyOS (GNOME 51), Linux Mint (Cinnamon, X11) and MX Linux 25 (Xfce, X11) virtual machines
with a build from the next branch: after logging back in, Ctrl+Shift and then Telex
tieengs vieetj typed tiếng việt in a GTK3 text field, 3 times out of 3 on
each machine. Uninstalling was tested in Ubuntu 26.04 (IBus came back) and MX Linux 25. Release 1.4.1
only changes the installer; the input method is the same as in 1.4.0. The KDE setup was run in a
CachyOS virtual machine (Plasma 6.7 Wayland) on an account with no input method configured: after
logging back in, Ctrl+Shift and then Telex tieengs vieetj typed tiếng việt
3 times out of 3 in a Qt6 text field and 3 times out of 3 in a GTK3 one; before the fix the Qt6 field
got raw keystrokes. With the 1.4.0 package, Chrome 155, VS Code, Discord, Firefox and GNOME Text Editor
(Flatpak) typed correctly in an Ubuntu 26.04 (GNOME Wayland) virtual machine; Chrome forced through
XWayland was wrong 5 times out of 30.
NixOS uses the repository's flake instead of the one-line installer; the snippet is in the README. CI builds it, runs the tests and loads the addon into fcitx5 on Xvfb, but nobody has tried it on a real NixOS machine yet, nor on Wayland, GNOME or aarch64.
Known issues
Not fixed: SDL games not running on X11 ignore forwarded keys and get text without tone marks, and the snap build of VS Code types raw Telex; the workaround routes it through XIM, where about one sentence in ten gets a wrong tone mark. Telex is the method used and tested daily; VNI and the other methods work but have not been tested closely.
Ngó Sen targets fcitx5 only. The IBus build and a build running directly on Sway and Hyprland
without fcitx5 were dropped; Sway and Hyprland still work through fcitx5. The IBus code stays on the feat/ibus-engine branch. Source, releases and the
changelog are at
github.com/ngosen/ngosen.