L'intero stack di input X11 è un casino. Prima di tutto, non hai bisogno di alcun framework di metodi di input speciale se stai solo digitando caratteri latini o sequenze di composizione multi-carattere come definito dal layout della tastiera XKB. A rigor di termini, qualsiasi sequenza multi-chiave, come i dead-key, richiede un metodo di input molto semplice. Ma sono forniti da libx11 / XKB e funzionano senza alcun framework IM aggiuntivo. Quindi è perfettamente corretto disinstallare tutti i ibus, uim, fcitx o qualunque metodo di input tu abbia se non hai bisogno di digitare lingue come cinese o giapponese.
Come hai già detto, Gnome ha reso ibus il metodo di input predefinito, una decisione di cui non tutti erano contenti. Ci sono molte persone che preferiscono fcitx (che sembra essere il valore predefinito per la maggior parte delle distribuzioni di KDE) rispetto a ibus per diversi motivi: che si tratti del supporto linguistico appropriato (principalmente giapponese rispetto al cinese semplificato rispetto al cinese tradizionale) o delle prestazioni. Dato che non parlo lingue orientali che richiedono uno speciale framework IM, non posso davvero aggiungere nulla a quel dibattito. Ma se sei interessato a maggiori dettagli su fcitx vs ibus, potresti voler leggere questo articolo LWN leggermente datato (2012), ma probabilmente ancora accurato .
Tuttavia, il fatto che ibus sia l'IM predefinito per Gnome non lo rende obbligatorio. Puoi usare qualsiasi altro metodo di input che ti piace o nessuno. La configurazione della messaggistica istantanea viene eseguita tramite variabili di ambiente. Ma tranne quando stai usando solo applicazioni GTK + (che dubito), dovresti impostare più di un semplice GTK_IM_MODULE
. Il modo corretto di impostare un metodo di input è:
export GTK_IM_MODULE="fcitx"
export QT_IM_MODULE="fcitx"
export XMODIFIERS="@im=fcitx"
in caso di fcitx o
export GTK_IM_MODULE="ibus"
export QT_IM_MODULE="ibus"
export XMODIFIERS="@im=ibus"
in caso di ibus. funziona allo stesso modo. Se si desidera disabilitare esplicitamente qualsiasi metodo di input, utilizzare queste impostazioni:
export GTK_IM_MODULE="gtk-im-context-simple"
export QT_IM_MODULE="simple"
Funziona anche una stringa vuota.
Puoi impostare queste variabili in tutto il sistema /etc/profile
(o all'interno di un file dedicato /etc/profile.d
, rispettivamente) o all'interno del tuo locale ~/.xprofile
. Impostandolo ~/.bashrc
o ~/.profile
non si assicurerà che le linee vengano eseguite quando si accede al proprio sistema utilizzando un gestore di accesso grafico come GDM, SDDM, KDM o LightDM. Se stai iniziando la tua sessione X usando XDM, Slim o startx
, devi inserire quelle linee ~/.xinitrc
.
Se hai configurato un metodo di input diverso da ibus, vai alle impostazioni di Gnome in seguito e assicurati che tutte le impostazioni relative a ibus siano disabilitate, in particolare le scorciatoie da tastiera. In alternativa, dire a Gnome di non toccare le impostazioni della tastiera usando:
gsettings set org.gnome.settings-daemon.plugins.keyboard active false
o disinstallare del tutto ibus.
E che dire di XIM? XIM è un protocollo di metodo di input piuttosto obsoleto che sia ibus che fcitx implementano solo per motivi di supporto legacy. Non vi è alcun motivo reale per cui si desideri utilizzare XIM al giorno d'oggi su uno di questi due. L'unico motivo per cui vorresti impostare GTK_IM_MODULE="xim"
è quello di sovrascrivere le impostazioni ComposeKey hardcoded .
Per rispondere alla tua altra domanda: non penso che ci sia davvero un modo per rilevare quale metodo di input è attivo al momento, tranne per guardare le variabili di ambiente o sapere quali IM sono installati sul tuo sistema. Se GTK_IM_MODULE
non impostato, GTK seleziona un IM integrato sulla base delle configurazioni in /etc/gtk-2.0/gtk.immodules
. GTK 3.0 guarda da /usr/lib/gtk-3.0/3.0.0/immodules.cache
dove viene generato gtk-query-immodules-3.0
.
Il motivo per cui GTK_IM_MODULE
è impostato xim
è probabilmente una definizione di variabile vagante da qualche parte in /etc/profile
, /etc/profile.d/*
o qualsiasi altro dei tuoi file RC shell locali o globali. Sentiti libero di annullare o annullare questa variabile se senti la necessità di farlo.
Tuttavia, secondo questo commento di bug report di Gnome presumo che il valore configurato tramite gsettings
sovrascrive il valore impostato GTK_IM_MODULE
per le applicazioni attivate da DBus. Quindi almeno le tue applicazioni Gnome probabilmente stanno usando gtk-im-context-simple
al momento, il che significa effettivamente un comportamento standard (cioè nessun ibus o qualsiasi altro IM dedicato).
gsettings
non mi segfault ogni volta che provo a fare qualcosa xD (anche --version segfaults !!)