Cały stos wejściowy X11 to bałagan. Po pierwsze, nie potrzebujesz żadnej specjalnej struktury metody wprowadzania, jeśli po prostu wpisujesz znaki łacińskie lub sekwencje złożone z wielu znaków, zgodnie z układem klawiatury XKB. Ściśle mówiąc, wszelkie sekwencje wielu klawiszy, takie jak martwe klawisze, wymagają bardzo prostej metody wprowadzania. Są one jednak dostarczane przez libx11 / XKB i działają bez żadnych dodatkowych ram komunikatorów internetowych. Dlatego całkowicie odinstaluj wszystkie ibus, uim, fcitx lub dowolną inną metodę wprowadzania, jeśli nie musisz pisać w językach takich jak chiński lub japoński.
Jak już powiedziałeś, Gnome ustawił ibus jako domyślną metodę wprowadzania danych, z której nie wszyscy byli zadowoleni. Jest wielu ludzi, którzy wolą fcitx (który wydaje się być domyślny dla większości dystrybucji KDE) nad ibus z kilku powodów: czy jest to właściwa obsługa języka (głównie japoński vs. uproszczony vs. tradycyjny chiński) lub problemy z wydajnością. Ponieważ nie mówię w językach wschodnich, które wymagają specjalnych ram komunikatorów internetowych, tak naprawdę nie mogę dodać nic do tej debaty. Ale jeśli interesują Cię więcej szczegółów na temat fcitx vs ibus, możesz przeczytać ten nieco przestarzały (2012), ale prawdopodobnie wciąż dokładny artykuł LWN .
Jednak fakt, że ibus jest domyślnym komunikatorem dla Gnome, nie czyni go obowiązkowym. Możesz użyć dowolnej innej metody wprowadzania danych, której nie lubisz wcale. Konfiguracja komunikatora odbywa się za pomocą zmiennych środowiskowych. Ale z wyjątkiem sytuacji, gdy używasz wyłącznie aplikacji GTK + (w co wątpię), powinieneś ustawić więcej niż tylko GTK_IM_MODULE
. Właściwy sposób ustawienia metody wprowadzania danych to:
export GTK_IM_MODULE="fcitx"
export QT_IM_MODULE="fcitx"
export XMODIFIERS="@im=fcitx"
w przypadku fcitx lub
export GTK_IM_MODULE="ibus"
export QT_IM_MODULE="ibus"
export XMODIFIERS="@im=ibus"
w przypadku ibus. uim działa w ten sam sposób. Jeśli chcesz jawnie wyłączyć dowolną metodę wprowadzania, użyj tych ustawień:
export GTK_IM_MODULE="gtk-im-context-simple"
export QT_IM_MODULE="simple"
Działa również pusty ciąg.
Możesz ustawić te zmienne w /etc/profile
całym systemie (lub odpowiednio w dedykowanym pliku /etc/profile.d
) lub w twoim lokalnym ~/.xprofile
. Ustawienie go ~/.bashrc
lub ~/.profile
nie zapewni wykonania linii podczas logowania do systemu za pomocą graficznego menedżera logowania, takiego jak GDM, SDDM, KDM lub LightDM. Jeśli zaczynasz sesję X za pomocą XDM, Slim lub startx
, musisz wstawić te linie ~/.xinitrc
.
Jeśli skonfigurowałeś metodę wprowadzania inną niż ibus, przejdź do ustawień Gnome i upewnij się, że wszelkie ustawienia związane z ibus są wyłączone, szczególnie wszelkie skróty klawiaturowe. Możesz też powiedzieć Gnome, aby nie zmieniał ustawień klawiatury, używając:
gsettings set org.gnome.settings-daemon.plugins.keyboard active false
lub całkowicie odinstaluj ibus.
A co z XIM? XIM jest dość przestarzałym protokołem metody wprowadzania danych, który zarówno ibus, jak i fcitx implementują wyłącznie ze względu na obsługę starszych wersji. Nie ma żadnego rzeczywistego powodu, dla którego chciałbyś dzisiaj używać XIM w stosunku do któregoś z tych dwóch. Jedynym powodem, dla którego chcesz ustawić, GTK_IM_MODULE="xim"
jest zastąpienie zakodowanych na stałe ustawień ComposeKey w GTK .
Aby odpowiedzieć na twoje inne pytanie: nie sądzę, że naprawdę istnieje sposób na wykrycie, która metoda wprowadzania jest obecnie aktywna, z wyjątkiem patrzenia na zmienne środowiskowe lub wiedzy, które komunikatory internetowe są zainstalowane w twoim systemie. Jeśli GTK_IM_MODULE
nie jest ustawiony, GTK wybiera wbudowanego komunikatora na podstawie konfiguracji w /etc/gtk-2.0/gtk.immodules
. Wygląd GTK 3.0 /usr/lib/gtk-3.0/3.0.0/immodules.cache
jest generowany przez gtk-query-immodules-3.0
.
Powodem, dla którego GTK_IM_MODULE
ustawiony jest xim
to chyba jakiś zabłąkany gdzieś w definicji zmiennej /etc/profile
, /etc/profile.d/*
lub jakichkolwiek innych lokalnych lub globalnych plików shell RC. Jeśli czujesz taką potrzebę, możesz wyłączyć lub zmienić tę zmienną.
Jednak zgodnie z komentarzem do raportu o błędach Gnome'a zakładam, że wartość skonfigurowana przez gsettings
przesłania wartość ustawioną w GTK_IM_MODULE
aplikacjach aktywowanych przez DBus. Więc przynajmniej aplikacje Gnome prawdopodobnie używają gtk-im-context-simple
w tej chwili, co skutecznie oznacza standardowe zachowanie (tj. Brak ibusa lub innych dedykowanych komunikatorów internetowych).
gsettings
nie zniechęciłby mnie za każdym razem, gdy próbuję cokolwiek zrobić xD (nawet