Toàn bộ ngăn xếp đầu vào X11 là một mớ hỗn độn. Trước hết, bạn không cần bất kỳ khung phương thức nhập đặc biệt nào nếu bạn chỉ nhập các ký tự Latin hoặc các chuỗi soạn thảo nhiều ký tự như được định nghĩa theo bố cục bàn phím XKB của bạn. Nói một cách chính xác, bất kỳ chuỗi đa khóa nào, chẳng hạn như khóa chết, đều yêu cầu một phương thức nhập rất đơn giản. Nhưng chúng được libx11 / XKB cung cấp và hoạt động mà không cần bất kỳ khung IM bổ sung nào. Vì vậy, hoàn toàn ổn khi gỡ cài đặt tất cả ibus, uim, fcitx hoặc bất kỳ phương thức nhập nào bạn có nếu bạn không cần phải nhập các ngôn ngữ như tiếng Trung hoặc tiếng Nhật.
Như bạn đã nói, Gnome đã biến ibus thành phương thức nhập mặc định, một quyết định không phải ai cũng hài lòng. Có nhiều người thích fcitx (dường như là mặc định cho hầu hết các bản phân phối KDE) trên ibus vì một số lý do: có thể là hỗ trợ ngôn ngữ phù hợp (chủ yếu là tiếng Nhật so với tiếng Trung Quốc truyền thống) hoặc các vấn đề về hiệu suất. Vì tôi không nói bất kỳ ngôn ngữ phương Đông nào cần khung IM đặc biệt, tôi thực sự không thể thêm bất cứ điều gì vào cuộc tranh luận đó. Nhưng nếu bạn quan tâm đến nhiều chi tiết hơn về fcitx vs ibus, bạn có thể muốn đọc bài viết hơi ngày này (2012), nhưng có lẽ vẫn là bài viết chính xác của LWN .
Tuy nhiên, thực tế là ibus là IM mặc định cho Gnome không bắt buộc. Bạn có thể sử dụng bất kỳ phương thức nhập liệu nào khác mà bạn thích hoặc không có gì cả. Cấu hình IM được thực hiện thông qua các biến môi trường. Nhưng ngoại trừ khi bạn chỉ sử dụng các ứng dụng GTK + (mà tôi nghi ngờ), bạn nên đặt nhiều hơn chỉ GTK_IM_MODULE
. Cách thích hợp để đặt phương thức nhập là:
export GTK_IM_MODULE="fcitx"
export QT_IM_MODULE="fcitx"
export XMODIFIERS="@im=fcitx"
trong trường hợp của fcitx hoặc
export GTK_IM_MODULE="ibus"
export QT_IM_MODULE="ibus"
export XMODIFIERS="@im=ibus"
trong trường hợp của ibus. uim hoạt động theo cùng một cách. Nếu bạn muốn vô hiệu hóa bất kỳ phương thức nhập liệu nào, hãy sử dụng các cài đặt sau:
export GTK_IM_MODULE="gtk-im-context-simple"
export QT_IM_MODULE="simple"
Một chuỗi rỗng cũng hoạt động.
Bạn có thể đặt các biến này trong toàn hệ thống /etc/profile
(hoặc một tệp chuyên dụng bên trong /etc/profile.d
, tương ứng) hoặc bên trong cục bộ của bạn ~/.xprofile
. Đặt nó vào ~/.bashrc
hoặc ~/.profile
sẽ không đảm bảo rằng các dòng sẽ được thực thi khi đăng nhập vào hệ thống của bạn bằng trình quản lý đăng nhập đồ họa như GDM, SDDM, KDM hoặc LightDM. Nếu bạn đang bắt đầu phiên X của mình bằng XDM, Slim hoặc startx
, bạn cần đặt các dòng đó vào ~/.xinitrc
.
Nếu bạn đã định cấu hình phương thức nhập khác với ibus, hãy chuyển đến cài đặt Gnome sau đó và đảm bảo mọi cài đặt liên quan đến ibus đều bị tắt, đặc biệt là mọi phím tắt. Ngoài ra, yêu cầu Gnome không chạm vào cài đặt bàn phím của bạn bằng cách sử dụng:
gsettings set org.gnome.settings-daemon.plugins.keyboard active false
hoặc gỡ cài đặt ibus hoàn toàn.
Bây giờ còn XIM thì sao? XIM là một giao thức phương thức nhập liệu khá lỗi thời mà cả ibus và fcitx chỉ thực hiện vì lý do hỗ trợ cũ. Không có lý do thực sự tại sao bạn muốn sử dụng XIM ngày nay hơn bất kỳ hai thứ nào trong số đó. Lý do duy nhất khiến bạn muốn đặt GTK_IM_MODULE="xim"
là ghi đè cài đặt ComposeKey được mã hóa cứng của GTK .
Để trả lời câu hỏi khác của bạn: Tôi không nghĩ rằng thực sự có một cách để phát hiện phương thức nhập nào đang hoạt động vào lúc này ngoại trừ việc xem xét các biến môi trường hoặc biết IM nào được cài đặt trên hệ thống của bạn. Nếu GTK_IM_MODULE
không được đặt, GTK chọn IM tích hợp trên cơ sở cấu hình trong /etc/gtk-2.0/gtk.immodules
. GTK 3.0 trông trong /usr/lib/gtk-3.0/3.0.0/immodules.cache
đó được tạo ra bởi gtk-query-immodules-3.0
.
Lý do tại sao GTK_IM_MODULE
được thiết lập để xim
có lẽ một số nơi định nghĩa biến đi lạc trong /etc/profile
, /etc/profile.d/*
hoặc bất kỳ file khác vỏ RC địa phương hoặc toàn cầu của bạn. Vui lòng bỏ đặt hoặc ghi đè biến này nếu bạn cảm thấy cần phải làm như vậy.
Tuy nhiên, theo nhận xét báo cáo lỗi Gnome này, tôi giả sử rằng giá trị được định cấu hình thông qua gsettings
ghi đè giá trị được đặt GTK_IM_MODULE
cho các ứng dụng kích hoạt DBus. Vì vậy, ít nhất các ứng dụng Gnome của bạn có thể đang sử dụng gtk-im-context-simple
tại thời điểm này có nghĩa là hành vi tiêu chuẩn (nghĩa là không có ibus hoặc bất kỳ IM chuyên dụng nào khác).
gsettings
không segfault với tôi bất cứ khi nào tôi cố gắng làm bất cứ điều gì xD (thậm chí