Phần mềm gõ tiếng việt VMK (VMK (Vietnamese Micro Key) for Fcitx5)
VMK là bộ gõ tiếng Việt dành cho Fcitx5, được phát triển với mục tiêu mang lại trải nghiệm gõ non-preedit hoàn hảo trên Linux, mô phỏng chính xác cơ chế hoạt động huyền thoại của UniKey trên Windows.
Phần mềm hiện đang ở giai đoạn alpha. Tác giả biết Bug từ hoạt động hay bảo mật có thể còn nên mới đặt bản alpha. Nếu có lỗi thực sự nào hãy nhấn nút issue tôi sẽ reply trở lại trong 24h hoặc hơn chút. Hi vọng các bạn không thích đừng spam. Có vẻ Một số bạn kì vọng quá cao về dự án, cũng như người làm dự án.
Ghi chú: Phiên bản 0.9.31 là phiên bản vá lỗi 666 trong file cpp ngay từ đầu đã không có lỗi bảo mật vì file quản lý serivce mới là bên set quyền
Cập nhật Phiên bản 0.9.5 demo. Dùng Dbus áp dụng check Dbus với mức độ bảo mật cao để không dùng file socket nữa. Dù sao file socket biến mất vẫn tốt hơn bảo mật 2 lớp =))
Thấy mọi người kì vọng ghê Luôn. Mình chỉ amature làm đến mức này là quá sức. Mình không có nhiều khả năng như mọi người nghĩ. Mình thấy các phần mềm của tập đoàn lớn họ cập nhật bảo mật cũng cần 1 tháng. Đây không phải là lỗ hổng bảo mật lớn như mọi người nghĩ. Cảm ơn mọi người nha patch này mình chỉ ra với dạng file thử nghiệm. Mình sẽ test trước khi phát hành 1 tuần tức tuần sau mới có file cài với dạng thử nghiệm. Mình thấy là ổn hơn bảo mật 2 lớp bản thân Dbus nếu cấu hình tốt là độ bảo mật cao rồi được tin cậy trong linux.
Việc phát hành Source và đóng gói các bản sau đều do người khác đảm nhiệm . Và có tên trong readme. Sau khi ra 0.9.5 thử nghiệm. Dự kiến sẽ không ra bản mới 2-3 tháng tới. Không phải vì drama mà kế hoạch từ đầu. Mình chỉ code một mạch đạt tới unikey-clone thì mình dừng. Cảm ơn các bạn đã ủng hộ
💡 Tại sao lại là VMK?
Trong nhiều năm qua, người dùng Linux luôn gặp khó khăn với việc gõ tiếng Việt trên Wayland hoặc các ứng dụng Electron (Chrome, Discord...). Các bộ gõ hiện tại thường gây bối rối với quá nhiều chế độ (Modes) hoặc gặp lỗi gạch chân (preedit) gây khó chịu.
VMK giải quyết vấn đề này bằng cách:
Tái hiện cơ chế UniKey: Sử dụng nguyên lý: Gửi Backspace N lần → Chờ (Delay logic) → Commit chuỗi ký tự.
Tối ưu cho Wayland: Hoạt động ổn định trên các môi trường desktop hiện đại như GNOME, KDE.
Đơn giản hóa: Tập trung vào hiệu quả thực tế thay vì cấu hình phức tạp.
Đặc biệt bộ cài Đơn giản người dùng chỉ cần cài 1 file setup duy nhất và dùng không cần chỉnh config nhiều có thể gõ chữ TV ngay.
Lưu ý mình ko Rep bất cứ lỗi trên FB nếu ko có ticket
Có hướng dẫn chi tiết test chi tiết patch note chi tiết
https://www.youtube.com/@ThanhThanh-it1pm
VMK không bắt người dùng phải đau đầu lựa chọn hàng chục chế độ. Chúng tôi tập trung tối ưu hóa 3 phương thức cốt lõi để đảm bảo trải nghiệm gõ luôn thông suốt:
| Chế độ | Tên kỹ thuật | Mô tả cơ chế | Độ tương thích |
|---|---|---|---|
| VMK1 | UniKey(windows) like | Mô phỏng cơ chế gửi phím Backspace vật lý để xóa và tái tạo ký tự (giống UniKey trên Windows). Loại bỏ hoàn toàn vùng đệm (preedit). | > 90% |
| VMK1HC | VMK1 Enhanced (Hard Core) | Phiên bản VMK1 tương thích tốt hơn nữa. Sẽ thay thế VMK1 trong các bản sau Lưu trạng thái vào /tmp (RAM trên SystemD) để giữ engine không bị xóa khi XIM lỗi. |
Tối ưu nhất cho IDE |
| VMK2 | Modern Surrounding | Sử dụng API Surrounding Text kết hợp thuật toán tối ưu của tác giả giúp tốc độ gõ cực nhanh và mượt mà. |
**~ 50%** |
| VMK-Pre | Standard Preedit | Sử dụng preedit truyền thống của Fcitx5. Đây là cơ chế tiêu chuẩn, đóng vai trò phương án dự phòng hoàn hảo. | 100% |
Src code được dẫn link đến folder gốc nếu bạn tải src về tự tải thư mục https://github.com/fcitx/fcitx5-bamboo/tree/main/bamboo về bỏ file VMK /src-full để compile nhé. Mình không hỗ trợ gì thêm vì có vẽ git không cho phép link về thư muc sub Bản cập nhật quan trọng tập trung vào tối ưu hóa kiến trúc phần cứng hiện đại và sửa lỗi tương thích trên các trình duyệt phổ biến.
- Thuật toán Delay thông minh: Tối ưu hóa logic phản hồi phím, mang lại cảm giác gõ mượt mà và giảm thiểu tối đa lỗi nhập liệu (input lag).
- IDE Specialized Fix: Tích hợp cơ chế sửa lỗi sai dấu dành riêng cho các môi trường lập trình (JetBrains, VS Code) bằng VMK1HC.
- E-core Optimization: Khắc phục triệt để lỗi Race Condition do hệ thống đưa tiến trình vào nhân hiệu suất thấp (E-core) trên các dòng CPU mới.
- CPU Usage: Sửa lỗi rò rỉ hiệu năng gây chiếm dụng 100% CPU trên một nhân đơn lẻ.
- Google Chrome:
- Sửa lỗi lặp ký tự (double character) trên thanh địa chỉ do xung đột cơ chế autofill trình duyệt chrome based
- Khắc phục lỗi mất ký tự đầu tiên khi gõ trang Gemini Chrome based trong KDE.
- Vì lỗi biến mất ký tự trên thanh địa chỉ cho người dùng Linux Mint (X11). Tôi tạm thời có 1 chế độ chrome X11 bạn tích vào chrome được chuyển sang chế độ preedit tự động X11 nếu chọn VMK1/VMk1hc nếu bạn bị mất chữ thì tích vào các phần mềm khác sẽ về chế độ không preedit tự động không cần chọn lại,
note: vmk ko trực tiếp fix khi gõ thanh địa chỉ firefox tuy nhiên có cách chỉnh setting firefox. Tôi hướng dẫn trong video
link tải bên dưới. Cài mà không cần gỡ bản cũ. Nó tự gỡ và cài bản mới vào
Chế độ này được thiết kế đặc biệt cho các môi trường làm việc chuyên sâu:
- Cơ chế: Lưu trạng thái gõ vào thư mục
/tmp. Đối với các distro sử dụng systemd, dữ liệu này sẽ nằm trực tiếp trên RAM. - Mục tiêu: Khắc phục tình trạng engine bị xóa khi Fcitx5 mất kết nối với các phần mềm do giao thức XIM quá lỗi thời.
- Ứng dụng: Giúp các IDE phổ biến như PyCharm, IntelliJ IDEA, Android Studio, VS Code... hoạt động ổn định và mượt mà hơn rất nhiều.
Mặc dù VMK không hỗ trợ chính thức cho Wine, nhưng qua thực nghiệm thực tế VMK1HC:
- Hoạt động tốt với các ứng dụng: MS Office 2013/2007, Notepad++, Zalo (Proton)...
- Người dùng có thể sử dụng trực tiếp VMK mà không cần cài đặt thêm bộ gõ UniKey trên Wine.
- Lưu ý: Đây là kết quả thử nghiệm cá nhân, không có đảm bảo chính thức vì Wine không phải là môi trường Linux native.
VMK là một bước tiến mới dựa trên sự kế thừa và kết hợp tinh hoa từ các dự án mã nguồn mở xuất sắc:
- Fcitx5 Framework: Nền tảng bộ gõ mạnh mẽ và hiện đại nhất trên Linux/Wayland, phát triển bởi Weng Xuetian (csslayer).
- Bamboo Engine: Trình xử lý tiếng Việt thông minh với thuật toán bỏ dấu chuẩn xác, phát triển bởi Lâm Quang Lương (luongthanhlam).
- VMK Core: Phần lõi do Võ Ngô Hoàng Thành & Nguyễn Văn Thoan phát triển. Chúng tôi tập trung bổ sung cơ chế Backspace ảo và Logic tính toán độ trễ (Delay) nhằm mang lại cảm giác gõ "không vùng đệm" quen thuộc của người dùng Windows lên Linux. 🤝 Đóng góp & Bản quyền (Hiện chưa git clone được nhé các bạn thông cảm) Dự án được phát hành dưới giấy phép GNU GPLv3. Chúng tôi hoan nghênh mọi sự đóng góp từ cộng đồng để cải thiện Delay logic và tăng độ tương thích cho VMK1.
Tác giả:
Võ Ngô Hoàng Thành (thanhpy2009@gmail.com)
Nguyễn Văn Thoan
Script và mã nguồn được thiết kế để hoạt động tốt nhất trên các phiên bản hệ điều hành mới nhất tính đến ngày 05/01/2026: Hiện tại mình Nói rõ là bộ gõ hoạt động tốt với Wayland (Gnome và KDE bản mới) còn X11 chỉ hỗ trợ Linux Mint(XFCE và cinnamon)
- Ubuntu: Phiên bản 24.04 (Noble Numbat) trở về sau. Hiện ubuntu tại Gnome.
- Debian: Phiên bản 13 (Trixie) trở về sau.
- Fedora: Phiên bản 43 trở về sau.
- Arch Linux: Các bản cài đặt từ ngày 05/01/2026 trở về sau.
- openSUSE LEAF: Dùng tốt nhất trên KDE và Gnome wayland bản mới nhất. Ngoài linux Mint cũng là lựa chọn tối ưu
Để đảm bảo bộ gõ và các tính năng hoạt động ổn định, hệ thống cần đáp ứng:
- Fcitx5: Phiên bản 5.1.7 trở về sau.
- Quyền quản trị: Cần quyền
sudođể thực thi các lệnh cài đặt gói hệ thống.
Trước khi cài VMK bạn cần gõ các gói IBUS nếu đã cài Khi chạy script, hệ thống sẽ thực hiện các bước sau:
- Cài đặt Fcitx5 từ kho ứng dụng: Tải các gói
fcitx5,fcitx5-gtk,fcitx5-qt,fcitx5-lua(Phiên bản ≥ 5.1.7). - Cài đặt Plugin hệ thống: * Copy file thư viện
vmk.sovà các file.confcần thiết vào thư mục Addon của Fcitx5 (đường dẫn được script tự động nhận diện tương ứng với từng Distro). - Cấu hình Người dùng:
- Copy file
sconfigvào thư mục Home (~/sconfig) để người dùng có thể điều khiển và tùy chỉnh bộ gõ.
- Copy file
- Kích hoạt Service hỗ trợ: Thiết lập dịch vụ chạy ngầm để xử lý cơ chế gửi phím Backspace thông minh, giúp xóa dấu chính xác và ổn định như Unikey.
Dự án không cung cấp git clone trực tiếp.
Video hướng dẫn chung cho các distro mình lấy ubuntu/debian làm ví dụ. Chú ý KDE wayland bạn phải vào ô search->virtual keyboard chọn fcitx5 như trong video hướng dẫn mới gõ đc
## 📥 Chọn phiên bản phù hợpSau khi tải script về, bạn hãy mở Terminal tại thư mục chứa file và chạy các lệnh sau:
Để VMK hoạt động tốt nhất và tránh xung đột bộ gõ, bạn nên thực hiện các chuẩn bị sau:
- Khuyến nghị về IBus: Bạn nên cân nhắc gỡ bỏ hoàn toàn IBus khỏi hệ thống để tránh xung đột phím tắt và engine gõ.
- Tắt Fcitx5 đang chạy: Trước khi cài đặt phiên bản mới, hãy đóng an toàn phiên bản hiện tại bằng lệnh D-Bus:
dbus-send --type=method_call --dest=org.fcitx.Fcitx5 /controller org.fcitx.Fcitx.Controller1.Exit
- Di chuyển vào thư mục:
cd đường_dẫn_đến_thư_mục - Cấp quyền thực thi:
chmod +x ./tên_file_script.sh - Chạy với quyền quản trị:
sudo ./tên_file_script.sh
Khởi động lại vào Terminal
fcitx5
ctrl+space để chuyển bộ gõ. chi tiết hơn sẽ có trong video
ví dụ dành cho deian
-
Lệnh cài nhanh: dbus-send --type=method_call --dest=org.fcitx.Fcitx5 /controller org.fcitx.Fcitx.Controller1.Exit chmod +x ./install_vmk_debian.sh && sudo ./install_vmk_debian.sh Nếu bạn đang sử dụng môi trường Desktop KDE trên giao thức Wayland, bạn cần thực hiện thêm bước sau để bộ gõ hoạt động:
Mở System Settings (hoặc nhấn Search).
Tìm từ khóa "Virtual Keyboard".
ào home chạy file sconfig để cấu gõ thôi
VMK_0.9.31 alpha
- Link tải: install_vmk_debian_0.9.31.sh
- Trạng thái: 🕒 Coming Soon (Đang cập nhật bản vá cho GNOME)
- Link tải: install_vmk_fedora_0.9.31.sh
- Link tải: install_vmk_arch_0.9.31.sh
- Link tải: install_vmk_opensuse_0.9.31.sh
Uninstaller dành cho cả 4 distro
Nếu bạn gặp vấn đề không gõ được trong một số phần mềm, hãy thêm các biến môi trường để tương thích tốt hơn.
(Lưu ý: GNOME Wayland thường không cần bước này).
Mở tệp bằng lệnh: nano ~/.profile và thêm các dòng sau vào cuối:
export GTK_IM_MODULE=fcitx
export QT_IM_MODULE=fcitx
export XMODIFIERS=@im=fcitx
export SDL_IM_MODULE=fcitx
export GLFW_IM_MODULE=ibus
2. Cấu hình trong
Mở tệp bằng quyền root: sudo nano /etc/environment và thêm:
GTK_IM_MODULE=fcitx
QT_IM_MODULE=fcitx
XMODIFIERS=@im=fcitx
SDL_IM_MODULE=fcitx
GLFW_IM_MODULE=ibus

