Skip to content

Instantly share code, notes, and snippets.

@lelinhtinh
Last active February 25, 2025 01:52
Show Gist options
  • Save lelinhtinh/fc660f3222a1da1b7ff923a4080742e5 to your computer and use it in GitHub Desktop.
Save lelinhtinh/fc660f3222a1da1b7ff923a4080742e5 to your computer and use it in GitHub Desktop.
Gõ Tiếng Việt trong Ubuntu

Gõ Tiếng Việt trong Linux

Ghi chú cách dùng IBus Bamboo để gõ Tiếng Việt mà không bị lỗi gạch chân như các bộ gõ khác.

Cài đặt

sudo add-apt-repository ppa:bamboo-engine/ibus-bamboo
sudo apt-get update
sudo apt-get install ibus ibus-bamboo --install-recommends
ibus restart
env DCONF_PROFILE=ibus dconf write /desktop/ibus/general/preload-engines "['BambooUs', 'Bamboo']" && gsettings set org.gnome.desktop.input-sources sources "[('xkb', 'us'), ('ibus', 'Bamboo')]"

Các distro khác Ubuntu, vui lòng xem tại BambooEngine/ibus-bamboo.

Cấu hình

GNOME

  1. Truy cập cấu hình bộ gõ Settings > Keyboard > Input Sources.
  2. Thiết lập 2 bộ gõ gồm English (US)Vietnamese (Bamboo).
  3. Trong mục Options chọn Allow different sources for each window để tự chuyển đổi bộ gõ khi vào các ứng dụng khác nhau.

Môi trường Desktop khác

sudo im-config -s ibus
  1. Tìm ứng dụng Ibus Prefences hoặc chạy lệnh:
    ibus-setup
  2. Mở tab Input Method > Add: Tìm Vietnamese, chọn bộ gõ Bamboo.
    ibus restart

Sử dụng

Khi bật bộ gõ lên, mở menu vi, kiểm tra mục Phím tắt và bật Chuyển chế độ gõ Shift + ~ (nếu chưa bật).

Phím tắt này rất quan trọng, nó giúp chọn đúng chế độ gõ không gạch chân phù hợp với ứng dụng. Đây cũng làm điểm làm IBus Bamboo vượt trội so với các bộ gõ Tiếng Việt khác.

Nếu bạn dùng qua các bộ gõ khác trên Ubuntu (hay các distro khác) như IBus Unikey, IBus Teni, Fcitx Unikey, ... thì tất cả chúng chỉ có tùy chọn duy nhất là chế độ có gạch chân (pre-edit) xấu xí:

  • Thường bị chữ đang gõ lệch ra ngoài input.
  • Mất chữ khi chưa commit (bằng dấu cách, dấu chấm, Ctrl, ...).
  • Không thể đặt lại dấu cho chữ đã commit.
  • Không hoặc kém đáp ứng với các ứng dụng có gợi ý theo từ đang gõ (autocomplete).

IBus Bamboo khắc phục tất cả nhược điểm trên khi chạy ở chế độ không gạch chân.

Trong menu vi có tùy chọn Cấu hình khác > Sửa lỗi gạch chân có thể bật nhanh chế độ này, nhưng đáng tiếc là nó không hoạt động đúng với tất cả ứng dụng. Có thể xuất hiện lỗi gõ xong không xóa được hay thậm chí là không gõ được. Đây cũng là lý do mình viết ghi chú này.

Các ứng dụng phổ biến

  1. Terminal: trừ chế độ Surrounding Text ra.
  2. Ứng dụng xây dựng từ Chromium hoặc Electron (e.g.: Google Chrome, VSCode): ForwardKeyEvent I (hoặc II).
  3. Firefox: Tất cả chế độ không gạch chân. Trong Dev Tools thì chỉ có chế độ Forward as commit hỗ trợ autocomplete.
  4. LibreOffice: Tất cả chế độ không gạch chân.
  5. Pidgin: Tất cả chế độ không gạch chân.
  6. Steam: Không thể chạy Ibus trong Steam, vì thế để nhắn tin Tiếng Việt bạn cần dùng Pidgin và cài thêm plugin Steam IM.
  7. TeamViewer: Surrounding Text.
  8. Sublime Text: ForwardKeyEvent I (hoặc II), Forward as commit.
  9. ...cần bổ sung thêm

Lưu ý

  • Phím tắt chuyển đổi bộ gõ en-vi mặc định là Win+space. Bạn có thể thay đổi trong Settings > Devices > Keyboard Shortcuts > Typing.
  • Tránh dùng chế độ XTestFakeKeyEvent vì nó khá chậm, thường bị mất dấu.
  • Trong các website mà input có chức gợi ý, tự động sửa như Select2, CodeMirror, ... thì có thể phải thay đổi chế độ gõ khác hoặc buộc phải dùng chế độ có gạch chân.
  • Một số ứng dụng như Steam, Spotify, ... không hỗ trợ Ibus thì IBus Bamboo cũng bó tay.
  • Xem thêm hướng dẫn khắc phục lỗi biến môi trường của IBus.
  • Trong trường hợp không thể dùng phím tắt Shift + ~, cài đặt linushdot/unsafe-mode-menu, hoặc chỉnh sửa thủ công tệp cấu hình:
    xdg-open ~/.config/ibus-bamboo/ibus-bamboo.config.json
    Thêm hoặc cập nhật InputModeMapping:
    {
      "InputModeMapping": {
        "gnome-terminal-server:Gnome-terminal": 7,
        "code:Code": 4
      }
    }
    • Để lấy thông tin ứng dụng, chạy lệnh xprop WM_CLASS trong Terminal, và click vào ứng dụng, sẽ thấy thông tin:
      WM_CLASS(STRING) = "google-chrome", "Google-chrome"
    • Cập nhật tương ứng vào InputModeMapping, với số mode theo danh sách sau:
      1. Pre-edit (có gạch chân)
      2. Surrounding Text (không gạch chân)
      3. ForwardKeyEvent I (không gạch chân)
      4. ForwardKeyEvent II (không gạch chân)
      5. Forward as Commit (không gạch chân)
      6. XTestFakeKeyEvent (không gạch chân)
      7. Thêm vào danh sách loại trừ
    • Ví dụ:
      {
        "InputModeMapping": {
          "gnome-terminal-server:Gnome-terminal": 7,
          "code:Code": 4,
          "google-chrome:Google-chrome": 4
        }
      }
    • Khởi động lại: ibus restart

Elementary OS

eOS hỗ trợ ibus rất kém, không có icon trên status bar, không tự thêm ibus vào startup nên bạn cần phải tự chỉnh thủ công.

  1. Kích hoạt ibus:
    sudo im-config -s ibus
  2. Thêm vào startup System Settings > Applications > Startup:
    ibus-daemon -drx
  3. Cài đặt Ibus Bamboo như trên.
  4. Cấu hình bộ gõ System Settings > Keyboard > Layout > Input Method Settings.
  5. Đăng xuất.

Sau khi đăng nhập trở lại bạn có thể gõ Tiếng Việt với IBus Bamboo. Tuy nhiên do không có icon trên status bar nên bạn phải đổi kiểu gõ thủ công từ tệp cấu hình.

xdg-open ~/.config/ibus-bamboo/ibus-bamboo.config.json

Thay đổi kiểu gõ trong InputMethod và lưu lại. Nếu bạn gõ mặc định kiểu Telex thì không cần làm bước này. Ví dụ:

"InputMethod": "VNI"

Lưu ý phím tắt chuyển đổi bộ gõ en-vi mặc định của eOSCtrl+space.

Ngoài lề

IBus Bamboo hiện tại khá tốt nhưng vẫn còn một số lỗi. Khó chịu nhất có lẽ là lỗi không nhận diện được search box #80, hầu hết các môi trường desktop đều bị, chỉ trừ con eOS ghẻ kia.

Cơ chế gõ không gạch chân này cũng từng được IBus Teni đề cập trong lộ trình phát triển v2, nhưng không hiểu sao lại ngừng rồi bỏ luôn dự án.

@minhnq22
Copy link

Không biết bài viết này có từ bao giờ, nhưng nó đã giúp tôi gõ được tiếng việt trên Chrome.
Tôi dùng ibus-unikey, và tất cả các ứng dụng đều gõ được, trừ Chrome.
Sau đó cài đặt thêm mấy thừ này và... done!
sudo apt install im-config ibus ibus-clutter ibus-gtk ibus-gtk3
Thanks!
Vẫn đang tìm kiếm một bộ gõ tốt trên linux,

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment