Bộ gõ tiếng Việt tối ưu cho Linux
翻譯準備中
取自儲存庫 README
正在載入完整 README。 以下為已儲存的摘錄。
Bộ gõ tiếng Việt cho fcitx5 trên Linux. • Không cần quyền đặc biệt. Ngó Sen không còn uinput server, chỉ dùng đúng quyền của fcitx5. Cài xong gõ được ngay, không phải bật service hay cấp quyền thiết bị. • Gõ thẳng, không gạch chân. Chế độ Gõ Sen đưa chữ vào app ngay khi gõ. Gợi ý ở thanh địa chỉ hay ô tìm kiếm hiện ra theo từng phím gõ. • Một chế độ cho hầu hết app. Trình duyệt, terminal, Zalo, LibreOffice đều dùng Gõ Sen. Ngó Sen tự nhận ra app nhận chữ kiểu gì, không phải đổi chế độ. • Lõi Rust. Phần biến tieengs thành tiếng được viết lại bằng Rust.檢視完整 README ↗
Ngó Sen là bộ gõ tiếng Việt được vibecode cho fcitx5 trên Linux, cho trải nghiệm gõ như UniKey trên Windows. fcitx5 chạy được trên GNOME, KDE, Xfce, Sway và Hyprland, có nhiều tính năng và nhẹ RAM. Có thêm Ngó Sen cho GNOME chạy trên IBus có sẵn của GNOME, đơn giản hơn và ít tính năng hơn bản fcitx5.
Cửa sổ cài đặt có hai bản: Qt và GTK (giống app GNOME). GNOME và Linux Mint (Cinnamon) mở bản GTK, các desktop khác mở bản Qt. Cửa sổ dùng giao diện sáng, tối của máy trên KDE và GNOME; đổi gì lưu ngay, có nút Hoàn tác.
Bản GTK trên GNOME:
Bản Qt trên KDE Plasma:
tieengs vieetj rồi bấm phím chuyển sang tiếng Việt thì chữ đổi
thành tiếng việt. Tab hoặc Esc trả lại chữ đã gõ. Nếu đoạn có chữ không đổi được như abc, Ngó Sen
chỉ hiện gợi ý; bấm Enter để nhận. Cứu chữ không ghi nhớ gì trong ô mật khẩu.nhanh + s → nhánh.
Dùng được ở app cho bộ gõ đọc chữ quanh con trỏ, trừ Firefox bản snap (xem Lỗi thường gặp). Tab hoặc Esc
trả lại phím đã gõ.tunx, bấm rồi thả Ctrl, sau đó Space sẽ giữ tũn.ko → không thì gõ Ko sẽ ra Không.
Nội dung đã có chữ hoa vẫn giữ nguyên: ip → iPhone thì gõ Ip vẫn ra iPhone.Chi tiết từng version ở CHANGELOG.md.
Ngó Sen có hai chế độ: Gõ Sen và Preedit. Nên dùng Gõ Sen làm chế độ chính: mở cài đặt Ngó Sen, trang Gõ chữ, chọn Gõ Sen ở hàng Chế độ gõ.
Gõ Sen đưa chữ thẳng vào app, không gạch chân. Gợi ý ở thanh địa chỉ hay ô tìm kiếm hiện theo từng phím.
Trình duyệt, terminal, Zalo, LibreOffice đều dùng Gõ Sen; Ngó Sen tự nhận ra cách app nhận chữ, không cần
đổi chế độ. Chế độ này trước đây tên là Uinput; cấu hình cũ và chế độ Surrounding Text cũ tự chuyển
thành Gõ Sen.
Telex được dùng và test hằng ngày. VNI và các kiểu khác dùng được nhưng chưa test kỹ.
Lệnh dưới đây cài cho Fedora, Ubuntu (từ 24.04), Debian (từ 12), Kali, deepin, LMDE, Devuan, Parrot, Arch, Artix, CachyOS và openSUSE Tumbleweed trên x86_64. Ubuntu 22.04 và Linux Mint 21 dùng được tới version 1.6.4. Fedora, Ubuntu, Debian và Kali còn có gói cho ARM 64-bit (aarch64):
curl -fsSL https://raw.githubusercontent.com/ngosen/ngosen/main/install.sh | bash
Lệnh tải gói đúng distro từ release mới nhất, so hash SHA-256 và hỏi lại trước khi cài. Chạy lại lệnh để cập nhật version mới; cấu hình cũ giữ nguyên.
Lệnh cài thêm Ngó Sen vào danh sách bộ gõ và thiết lập theo desktop:
Cài xong, đăng xuất rồi đăng nhập lại; nhấn rồi thả Ctrl+Shift như UniKey để chuyển giữa tiếng Anh và tiếng Việt, biểu tượng khay hiện chữ V khi đang gõ tiếng Việt. Nếu đã cài Ngó Sen từ trước, bạn vẫn dùng phím chuyển cũ (thường là Ctrl+Space); muốn đổi phím, mở cửa sổ cài đặt, mục Phím tắt. Các bước thiết lập chỉ áp dụng cho tài khoản chạy lệnh. Tài khoản khác trên cùng máy cần đăng nhập vào đó rồi chạy lại lệnh cài.
Chọn bản này nếu dùng GNOME, muốn dùng IBus có sẵn và không cần đủ tính năng của bản fcitx5. Trên GNOME, cài xong là gõ được ngay, không phải thiết lập gì thêm:
curl -fsSL https://raw.githubusercontent.com/ngosen/ngosen/main/install.sh | bash -s -- --ibus
Trên Xfce, Cinnamon, MATE (X11, Debian, Ubuntu, Linux Mint), lệnh dùng im-config đặt IBus làm bộ gõ và thêm Ngó Sen; đăng xuất rồi đăng nhập lại, bấm Ctrl+Space để chuyển qua lại Ngó Sen và bàn phím thường. Muốn quay lại bản fcitx5 thì chạy lệnh cài bản fcitx5 ở trên; lệnh hỏi lại rồi gỡ bản IBus.
Xem cách cài và các giới hạn trong README của Ngó Sen cho GNOME.
Từ version 1.5.3, mỗi release đều có trên repo có chữ ký để nhận version mới qua update của hệ thống:
dnf upgrade, apt upgrade, pacman -Syu hoặc zypper up.
Chỉ cần thêm repo một lần. Nếu đã cài Ngó Sen bằng lệnh một dòng, chỉ cần thêm repo; lệnh cài gói trong mỗi khối dưới đây dành cho máy chưa có Ngó Sen, cài xong làm theo mục “Thiết lập sau khi cài package”.
Các repo dùng chung một key có fingerprint 6D4A 2075 F985 3BE8 F6B6 FE7E 7550 1858 158B 36CD.
Đối chiếu fingerprint này với thông tin trình quản lý gói hiển thị.
Fedora dùng COPR (x86_64 và aarch64):
sudo dnf copr enable nguyenphi/ngosen
sudo dnf install fcitx5-ngosen
Debian, Ubuntu và các distro dựa trên chúng (Linux Mint, MX…) dùng repo APT (x86_64 và arm64):
sudo curl -fsSL -o /usr/share/keyrings/ngosen.gpg https://ngosen.github.io/ngosen/apt/ngosen.gpg
echo "deb [signed-by=/usr/share/keyrings/ngosen.gpg] https://ngosen.github.io/ngosen/apt $(. /etc/os-release && echo ${UBUNTU_CODENAME:-$VERSION_CODENAME}) main" | sudo tee /etc/apt/sources.list.d/ngosen.list
sudo apt update
sudo apt install fcitx5-ngosen
Kali: thay phần $(. /etc/os-release && echo ${UBUNTU_CODENAME:-$VERSION_CODENAME}) bằng forky.
deepin 23 và 25: thay phần đó bằng bookworm. LMDE, Devuan và Parrot: thay bằng bản Debian gốc, bookworm hoặc
trixie (xem /etc/debian_version: 12 là bookworm, 13 là trixie).
Arch, CachyOS và EndeavourOS dùng repo pacman (x86_64):
curl -fsSL https://ngosen.github.io/ngosen/arch/ngosen.asc | sudo pacman-key --add -
sudo pacman-key --lsign-key 6D4A2075F9853BE8F6B6FE7E75501858158B36CD
printf '\n[ngosen]\nServer = https://ngosen.github.io/ngosen/arch/$arch\n' | sudo tee -a /etc/pacman.conf
sudo pacman -Syu fcitx5-ngosen
openSUSE Tumbleweed dùng repo zypper (x86_64):
sudo zypper addrepo https://ngosen.github.io/ngosen/opensuse/ngosen.repo
sudo zypper refresh
sudo zypper install fcitx5-ngosen
zypper hỏi một lần có tin cậy key không; đối chiếu fingerprint rồi chọn tin cậy.
Ngó Sen cho GNOME cũng có trong repo APT, pacman và zypper ở trên: thay
fcitx5-ngosen bằng ibus-ngosen trong lệnh cài.
Sau khi update, khởi động lại fcitx5 theo mục “Khởi động lại sau khi cài hoặc cập nhật”.
Nếu máy chưa từng thiết lập Ngó Sen, cài từ repo, package tải về hoặc dùng --no-setup chưa thêm Ngó Sen
vào danh sách bộ gõ. Ctrl+Space sẽ chưa gõ được tiếng Việt.
fcitx5-configtool, vào tab bộ gõ và thêm “Ngó Sen” vào danh sách. Máy để
ngôn ngữ hiển thị tiếng Việt thì fcitx5 tự thêm Ngó Sen ở lần chạy đầu, không cần bước này.im-config -n fcitx5, rồi đăng xuất và đăng nhập
lại. Nếu có IBus, bước này giúp fcitx5 khởi động khi đăng nhập và gõ được trong app dùng XIM như PlanMaker.Có thể chạy lệnh cài một dòng ở trên để làm cả hai bước. Nếu đã dùng lệnh cài một dòng và chỉ thêm repo để update, không cần làm thêm.
Muốn tự thiết lập desktop thì cài bằng
curl -fsSL https://raw.githubusercontent.com/ngosen/ngosen/main/install.sh | bash -s -- --no-setup.
Không muốn chạy lệnh tải từ mạng thì tải gói ở Releases và cài bằng tay. Muốn tự build từ source thì xem TU-DUNG.md.
Mỗi lần cập nhật, hoặc khi cài bằng --no-setup hay cài gói bằng tay, khởi động lại fcitx5:
fcitx5 -rd
KDE Wayland: đăng xuất rồi đăng nhập lại thay cho lệnh trên. fcitx5 bật bằng fcitx5 -rd không gõ được
trong app Qt như Kate, Dolphin.
Cài version thử, build tự động khi nhánh next
thay đổi:
curl -fsSL https://raw.githubusercontent.com/ngosen/ngosen/next/install.sh | NGOSEN_RELEASE_URL=https://github.com/ngosen/ngosen/releases/download/next-build bash
Thêm flake của repo vào cấu hình rồi đưa gói vào danh sách addon của fcitx5. Nix build từ source trong repo:
# flake.nix
inputs.ngosen.url = "github:ngosen/ngosen";
# configuration.nix, với inputs truyền qua specialArgs
i18n.inputMethod = {
enable = true;
type = "fcitx5";
fcitx5.addons = [ inputs.ngosen.packages.${pkgs.stdenv.hostPlatform.system}.default ];
};
CI build gói, chạy test và nạp vào fcitx5 trên màn hình X ảo; chưa ai test trên máy NixOS thật. Gặp lỗi thì mở issue. Muốn build từ bản clone trên máy, xem mục NixOS trong TU-DUNG.md.
Có từ version 0.5.0-1. Lệnh cài tự bật extension trên GNOME 50.0 đến 50.3. Nếu cài gói bằng tay,
đăng xuất rồi đăng nhập lại, sau đó chạy một lần:
gnome-extensions enable [email protected]
Khi Ubuntu sửa lỗi này (báo lỗi trên Launchpad),
tắt extension bằng gnome-extensions disable [email protected].
Ở chế độ Preedit, Chrome, Chromium và các app dựa trên Chromium (Edge, Brave, app Electron) chạy thẳng trên Wayland mất chữ đang gõ dở khi bấm chuột, dù cùng ô hay ô khác. App GTK và mọi app trên X11 không bị.
Lỗi ở fcitx5 5.1.19 trở về trước: khi app reset, fcitx5 bảo GNOME Shell bỏ chữ đang gõ dở. Version 5.1.20 đã sửa. Ubuntu 24.04, Ubuntu 26.04, Debian 13 và openSUSE Tumbleweed còn fcitx5 cũ; Arch, Fedora 44 và Debian sid đã có bản mới. Đã nhờ Ubuntu đưa bản sửa vào (báo lỗi trên Launchpad).
Trong lúc chờ, nên dùng chế độ Gõ Sen, hoặc gõ xong chữ bằng phím cách rồi mới bấm chuột.
Nên dùng gói .deb từ trang của Microsoft hoặc Flatpak từ
Flathub. Cả hai gõ được tiếng Việt ngay, không cần chỉnh.
Bản snap từ App Center thiếu phần nối với fcitx5 nên gõ ra Telex thô (tieengs). Nếu buộc phải dùng snap,
cho nó đi qua XIM (đường nối kiểu cũ của X11): chép file .desktop vào thư mục nhà rồi sửa dòng mở app:
cp /var/lib/snapd/desktop/applications/code_code.desktop ~/.local/share/applications/
sed -i 's|^Exec=/snap/bin/code|Exec=env GTK_IM_MODULE=xim XMODIFIERS=@im=fcitx /snap/bin/code|' \
~/.local/share/applications/code_code.desktop
Tắt hẳn VS Code rồi mở lại từ menu. Qua XIM, khoảng một câu trong mười có một chữ sai dấu.
Muốn bỏ cách này thì xoá file ~/.local/share/applications/code_code.desktop.
Firefox cài sẵn trên Ubuntu là bản snap. Bôi đen nhanh rồi gõ s trong đó ra s, không ra nhánh. Bản
snap nối với bộ gõ qua module GTK của fcitx4. Module này không báo chữ nào đang được bôi đen, và chỉ báo chữ
trong ô khi người dùng bấm phím tiếp theo, nên Ngó Sen không biết phím dấu vừa thay chữ nào. Gõ chữ bình thường
không bị ảnh hưởng.
Chưa có cách sửa từ phía Ngó Sen. Muốn dùng Cứu dấu trong Firefox thì cài Firefox từ kho APT của Mozilla; bản đó nối với bộ gõ qua module của fcitx5 như các app GTK khác.
Gặp lỗi khác thì báo ở Issues trên GitHub. Không có tài khoản GitHub thì nhắn trang Facebook. Trong cửa sổ cài đặt, vào trang “Giới thiệu”, bấm “Kiểm tra máy tôi…” rồi “Nhắn qua Facebook…” để chép sẵn thông tin máy, dán vào tin nhắn. Trang Facebook cũng đăng tin version mới và bài blog.
Lệnh hỏi lại rồi mới gỡ:
curl -fsSL https://raw.githubusercontent.com/ngosen/ngosen/main/install.sh | bash -s -- --uninstall
sudo apt autoremove (Ubuntu, Debian) sau đó.sudo apt remove fcitx5.Gỡ bằng tay:
Bỏ Ngó Sen khỏi danh sách bộ gõ trong "Fcitx5 Configuration".
Gỡ gói rồi khởi động lại fcitx5:
sudo dnf remove fcitx5-ngosen # Fedora
sudo apt remove fcitx5-ngosen # Ubuntu, Debian
sudo pacman -R fcitx5-ngosen # Arch, CachyOS
sudo zypper remove fcitx5-ngosen # openSUSE
fcitx5 -rd
Cấu hình vẫn ở lại để lần cài sau dùng tiếp: các file ngosen*.conf trong ~/.config/fcitx5/conf/,
và lotus*.conf nếu từng dùng version trước 1.1.0. Muốn xoá sạch thì xoá các file đó.
Dựa trên mã của fcitx5-lotus và VMK. Giấy phép GPL-3.0-or-later.
Lõi biến tieengs thành tiếng là bản Rust bamboo-core của
@nguyen10t2, port từ bản Go
bamboo-core của
@t1ld3x. Cả hai dự án dùng giấy phép MIT.
Mọi gói Ngó Sen, kể cả Debian 12, đều dùng bản Rust.
Issue và pull request trước ngày 10/10/2026 nằm ở repo lưu trữ ngosen/ngosen-fork-archive. Những gì sắp làm nằm ở ROADMAP.md.
Chép hay sửa mã của Ngó Sen thì giữ giấy phép GPL-3.0-or-later và ghi nguồn, như GPL yêu cầu. Nhờ AI đọc mã rồi viết lại cũng vậy, vì đó vẫn là mã sửa từ mã của Ngó Sen.
Đưa cách làm của Ngó Sen sang bộ gõ khác (cách xoá chữ trong từng loại app, cách nhận ra ô địa chỉ trình duyệt…), kể cả khi chỉ lấy ý tưởng, thì ghi nguồn kèm link tới repo này, trong README hay ghi chú phát hành.
Ngó Sen is a Vietnamese input method for fcitx5. The maintainer only vibecodes this project: an AI coding agent writes the code, then the maintainer measures and uses it daily. It is licensed under GPL-3.0-or-later and published as is, with no promise of support.
Since 1.0, Ngó Sen has two typing modes, Gõ Sen (for fast typing, browsers and Electron apps) and Preedit, and uses the Rust bamboo-core by @nguyen10t2, ported from the original Go bamboo-core by @t1ld3x. Both projects are MIT licensed. All Ngó Sen packages, including Debian 12, use the Rust core.
Ngó Sen includes Cứu chữ to retype what was typed before switching to Vietnamese, and Cứu dấu to change the tone mark of a selected word.
Ngó Sen for GNOME runs on GNOME's built-in IBus. It is simpler and has fewer features than the fcitx5 version. If you reuse Ngó Sen's code, keep the GPL and its notices, including when an AI tool rewrites it. If you port its approaches to another input method, credit this repository with a link. The rest of this page is in Vietnamese.