Bài viết này mình sẽ nói về IBus, cách gõ tiếng Việt, cụ thể là telex, trên Linux.
IBus
Đầu tiên chúng ta cần cài đặt ibus
và ibus-bamboo
.
- IBus là phương tiện trung gian để bàn phím và giao diện người dùng giao tiếp với nhau.
- IBus Bamboo là cơ chế nhập tiếng Việt, hoạt động trên phương tiện là IBus.
Cài đặt
Void Linux có sẵn hai gói này trong thư viện của họ, đây là một trong những lí do mình dùng Void! Mình sẽ dùng lệnh này để cài đặt chúng:
sudo xbps-install -S ibus ibus-bamboo
Khởi chạy
Để dùng IBus, bạn phải khởi chạy nó khi khởi động X11 hoặc Wayland với vai trò một trình chạy ngầm (daemon).
Trong sxrc
của trình khởi chạy X11 mang tên sx, mình có một dòng sau:
ibus-daemon -xsRrd &
Lưu ý
Hoặc trong file .xinitrc nếu bạn dùng startx hay xinit
Dặn các phần mềm dùng IBus
Chúng ta cần phải thêm những dòng này vào .bash_profile
(hoặc /etc/environment
tùy ý bạn, nhớ bỏ chữ export
đi nếu bạn bỏ vào /etc/environment
):
export INPUT_METHOD=ibus
export GTK_IM_MODULE=ibus
export QT_IM_MODULE=ibus
export XMODIFIERS=@im=ibus
Sau khi đăng xuất, đăng nhập lại (khởi động lại máy nếu bạn thêm vào /etc/environment
) mọi phần mềm của bạn sẽ nhận diện và dùng IBus làm phần mềm nhập liệu của chúng.
Chuyển đổi qua lại
Gói ibus-bamboo
sẽ cung cấp nhiều lựa chọn nhập liệu.
Chúng ta chỉ cần hai bộ chính là Bamboo
(gõ tiếng Việt) và BambooUs
(gõ tiếng Anh).
Một trong những lệnh cơ bản của IBus mà mình hay dùng nhất là:
ibus engine
: để tra IM hiện tạiibus engine Bamboo
: bật gõ tiếng Việtibus engine BambooUs
: tắt gõ tiếng Việt
Để thuận tiện cho việc chuyển đổi qua lại hai chế độ, mình đã viết một script gọi là inp
.
Lưu ý
Đây không phải là bản đầy đủ của script mình dùng, mình đã xóa bỏ bớt một số tính năng có thể mọi người không dùng, bạn có thể tìm thấy bản đầy đủ tại repo dotfiles của mình.
#!/bin/bash
case $1 in
current) [ $(ibus engine) = Bamboo ] && echo vi || echo en;;
vi) ibus engine Bamboo;;
en) ibus engine BambooUs;;
*) ibus engine "$( [ "$(ibus engine)" = "Bamboo" ] && echo "BambooUs" || echo "Bamboo" )";;
esac
Script này cho ta bốn lựa chọn như sau:
inp current
: in ra màn hình trạng thái hiện tại,vi
hoặcen
.inp vi
: bật gõ tiếng Việtinp en
: tắt gõ tiếng Việtinp
: bật/tắt (toggle) gõ tiếng Việt, đang bật thì tắt và ngược lại
Có thể bạn sẽ không thấy script này là cần thiết, nhưng vì mình còn dùng nó trong thanh trạng thái của dwm và nhiều phần mềm khác, kể cả vim trong bài viết tiếp theo. Để hiểu rõ hơn, đọc thử qua bản đầy đủ của nó tại đây nhé!
Khay biểu tượng
Một vài tùy chọn của IBus chỉ có thể tiếp cận khi ta click chuột vào biểu tượng trên khay biểu tượng (tray icon) chỗ góc màn hình của các desktop environment. Người dùng window manager như mình thường không có khu vực này.
Để có thể tiếp cận tray icon của IBus, chúng ta cần trayer
, một khay biểu tượng cơ động.
trayer
có thể được cài đặt bằng lệnh sau trên Void Linux:
sudo xbps-install -S trayer-srg
Sau khi cài đặt, mỗi lần muốn thay đổi gì trong IBus hãy chạy lệnh trayer
, biểu tượng của IBus sẽ hiện ra cho bạn bấm vào.
Tinh chỉnh IBus xong thì cứ đóng trayer
lại như mọi cửa sổ khác thôi!
Nhớ đảm bảo là tùy chọn Show icon on system tray đã được tick vào trong menu cài đặt ibus-setup
nhé!
Phím tắt
Mình dùng sxhkd
làm trình quản lý phím tắt.
Do đó, để bật/tắt chế độ gõ tiếng Việt, mình thêm dòng này vào sxhkdrc
:
alt + space
inp
Cài đặt này cho phép mình dùng tổ hợp phím Alt+space để bật tắt gõ tiếng Việt bằng script inp
mình nói đến ở trên.
Ghi chú
Trong giao diện cài đặt của IBus (lệnh
ibus-setup
) cũng có phần cài đặt phím tắt chuyển đổi, nhưng mình không dùng cài đặt đó vì vài lí do:
- Quản lý phím tắt bằng
sxhkd
chuyên dụng và dễ dàng hơn trong việc cài đặt sau này. Đảm bảo được là mọi phím tắt đều nằm một chỗ, có mâu thuẫn nhau là thấy ngay!- Mình muốn dùng lệnh
inp
do mình viết để quản lý được chính xác tổ hợp phím đó sẽ làm gì.- Mình không cần cài đặt phần "Input Method" trong giao diện IBus.
Gõ telex trong terminal
Đây là lí do mình chọn IBus thay vì Fcitx5. Trải nghiệm cá nhân mình thấy Fcitx5 trong terminal khá là bất ổn, khi được khi không và không trực quan như IBus.
Để gõ trong terminal được mượt mà, hãy click chuột trái vào biểu tượng IBus trên khay biểu tượng khi chế độ gõ tiếng Việt đang được bật (biểu tượng hình chữ V trắng trên nền đỏ).
Chế độ gõ mặc định -> ForwardKeyEvent I (không gạch chân)
Theo trải nghiệm của mình thì chế độ gõ này là ổn định nhất.
Kiểu gõ VNI
Mặc định IBus Bamboo sẽ chọn kiểu gõ Telex. Nếu bạn quen với kiểu gõ VNI hơn thì hãy click chuột trái vào biểu tượng IBus.
Kiểu gõ -> VNI
Kết lại
Đó là một số chia sẻ của mình về gõ tiếng Việt trên Linux và trong môi trường window manager không có một trình cài đặt nào như dwm.
Trải nghiệm gõ tiếng Việt trên Gnome hay KDE sẽ dễ dàng hơn một tí nhưng chắc rằng sẽ không đơn giản và linh hoạt (modular) như cách của mình.
Mình có thể "tháo lắp" lệnh inp
trên ở bất cứ đâu chẳng hạn như vim mode trên ứng dụng Obsidian, gán phím tắt đơn giản hơn,...
Bài viết tiếp theo mình sẽ chia sẻ cách mình linh hoạt chuyển qua lại giữa hai kiểu gõ trong Vim. Lúc đó chúng ta sẽ càng thấy sự linh hoạt là cần thiết tới đâu!