Zrozumienie i konfiguracja różnych metod wprowadzania danych

21

Używam Trisquel GNU / Linux 7.0 LTS ze środowiskiem GNOME 3 Flashback .

Słyszałem o trzech różnych metodach wprowadzania. ibus, ximI uim. I wygląda na to, że ibusjest wstępnie zainstalowany w moim systemie.

$ cat trisquel_7.0_i686.iso.manifest | grep ibus
gir1.2-ibus-1.0 1.5.5-1ubuntu3
ibus 1.5.5-1ubuntu3
ibus-gtk:i386 1.5.5-1ubuntu3
ibus-m17n 1.3.4-3ubuntu1
ibus-table 1.5.0.is.1.5.0.20130419-2
libibus-1.0-5:i386 1.5.5-1ubuntu3
libusb-0.1-4:i386 2:0.1.12-23.3ubuntu1
libusb-1.0-0:i386 2:1.0.17-1ubuntu2
libusbmuxd2 1.0.8-2ubuntu1
libustr-1.0-1:i386 1.0.4-3ubuntu2

W obliczu tego problemu dowiedziałem się o instalacji uimi konfiguracji GTK_IM_MODULE="uim"w ~/.profile. Ostatnio usunąłem uimi usunąłem GTK_IM_MODULE="uim"linię z ~/.profile. Ale aby przezwyciężyć ten błąd, planuję się go ibusteraz pozbyć .

Bez instalowania jakiejkolwiek dodatkowej metody wprowadzania danych (powiedzmy świeżą instalację Trisquel), dane echo $GTK_IM_MODULEwyjściowe ximWięc jestem zdezorientowany, ponieważ biorąc pod uwagę domyślną metodę wprowadzania danych ibus, dlaczego tak $GTK_IM_MODULEmówi xim?

Też mogę apt-get remove ibus? czy powinienem uimnajpierw zainstalować, a następnie usunąć ibus? Chcę też wiedzieć, która metoda wprowadzania danych obecnie działa ibuslub xim? I jaka jest właściwa droga, aby ustawić metodę wprowadzania (czyli jest to GTK_IM_MODULE="uim"do ~/.profile)?

Poza tym znalazłem jeden schemat ustawień:

$ gsettings get org.gnome.desktop.interface gtk-im-module
'gtk-im-context-simple'

W skrócie / Ogólnie potrzebuję pomocy w zrozumieniu instalowania / usuwania i konfigurowania różnych metod wprowadzania:

  • Skąd mam wiedzieć, która metoda wprowadzania jest obecnie aktywna?
  • Jak zainstalować i skonfigurować inną metodę wprowadzania? (powinienem usunąć inny?)
Pandya
źródło

Odpowiedzi:

45

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/profilecałym systemie (lub odpowiednio w dedykowanym pliku /etc/profile.d) lub w twoim lokalnym ~/.xprofile. Ustawienie go ~/.bashrclub ~/.profilenie 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_MODULEnie 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.cachejest generowany przez gtk-query-immodules-3.0.

Powodem, dla którego GTK_IM_MODULEustawiony jest ximto 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 gsettingsprzesłania wartość ustawioną w GTK_IM_MODULEaplikacjach aktywowanych przez DBus. Więc przynajmniej aplikacje Gnome prawdopodobnie używają gtk-im-context-simplew tej chwili, co skutecznie oznacza standardowe zachowanie (tj. Brak ibusa lub innych dedykowanych komunikatorów internetowych).

Janek Bevendorff
źródło
Świetne wyjaśnienie i tło. Teraz, jeśli tylko gsettingsnie zniechęciłby mnie za każdym razem, gdy próbuję cokolwiek zrobić xD (nawet
odwrócenie błędów
Mam więc ibus i xim na moim Ubuntu 18.04. Czy mogę je bezpiecznie usunąć, jeśli nie mam zamiaru pisać w językach CJK?
Suncatcher
Tak, ale nie odinstalowałbym XIM, chyba że będzie to konieczne. Jest bardzo przestarzały, ale czasami wykorzystywany jako podstawa do innych funkcji. Więc jeśli naprawdę nie potrzebujesz kilku KB, nie odinstalowałbym go.
Janek Bevendorff,