Compreendendo e configurando diferentes métodos de entrada

21

Eu uso o Trisquel GNU / Linux 7.0 LTS com o GNOME 3 Flashback Environment.

Eu ouvi sobre três métodos diferentes de entrada viz. ibus, ximE uim. E parece que ibusestá pré-instalado no meu sistema.

$ 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

Enquanto enfrentava esse problema, aprendi sobre como instalar uime configurar o GTK_IM_MODULE="uim"at ~/.profile. Recentemente eu removi uime removi a GTK_IM_MODULE="uim"linha de ~/.profile. Mas, para superar esse bug, planejo me livrar ibusagora.

Sem instalar nenhum método de entrada extra (por exemplo, nova instalação do Trisquel), echo $GTK_IM_MODULEsaídas ximEntão, eu estou confuso porque, considerando o método de entrada padrão ibus, então por que $GTK_IM_MODULEdizer xim?

Também posso apt-get remove ibus? ou devo instalar uimprimeiro e depois remover ibus? Também quero saber qual método de entrada está funcionando atualmente ibusou xim? E o que é o caminho certo para definir o método de entrada (ou seja, é GTK_IM_MODULE="uim"a ~/.profile)?

Além disso, encontrei um esquema de configurações:

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

Brevemente / amplamente preciso de ajuda para entender a instalação / remoção e configuração de diferentes métodos de entrada:

  • Como sei qual método de entrada está ativo no momento?
  • Como instalo e configuro diferentes métodos de entrada? (devo remover outro?)
Pandya
fonte

Respostas:

45

Toda a pilha de entrada do X11 está uma bagunça. Primeiro, você não precisa de nenhuma estrutura de método de entrada especial se estiver digitando caracteres latinos ou sequências de composição de vários caracteres, conforme definido pelo layout do teclado XKB. Estritamente falando, qualquer sequência de várias teclas, como chaves mortas, requer um método de entrada muito simples. Mas eles são fornecidos pelo libx11 / XKB e funcionam sem nenhuma estrutura adicional de IM. Portanto, é perfeitamente adequado desinstalar todo o ibus, uim, fcitx ou qualquer outro método de entrada que você possua, se não precisar digitar idiomas como chinês ou japonês.

Como você já disse, o Gnome fez do ibus o método de entrada padrão, uma decisão que nem todo mundo estava feliz. Há muitas pessoas que preferem o fcitx (que parece ser o padrão para a maioria das distribuições do KDE) sobre o ibus por várias razões: seja o suporte ao idioma apropriado (principalmente japonês versus chinês simplificado versus chinês tradicional) ou problemas de desempenho. Como não falo nenhum idioma oriental que precise de uma estrutura especial de mensagens instantâneas, não posso acrescentar nada a esse debate. Mas se você estiver interessado em mais detalhes sobre fcitx vs ibus, você pode querer ler este um pouco datada (2012), mas provavelmente ainda precisa artigo LWN .

No entanto, o fato de ibus ser o IM padrão do Gnome não o torna obrigatório. Você pode usar qualquer outro método de entrada que desejar ou nenhum. A configuração do IM é feita através de variáveis ​​de ambiente. Mas, exceto quando você estiver usando apenas aplicativos GTK + (o que duvido), você deve definir mais do que apenas GTK_IM_MODULE. A maneira correta de definir um método de entrada é:

export GTK_IM_MODULE="fcitx"
export QT_IM_MODULE="fcitx"
export XMODIFIERS="@im=fcitx"

no caso de fcitx ou

export GTK_IM_MODULE="ibus"
export QT_IM_MODULE="ibus"
export XMODIFIERS="@im=ibus"

no caso de ibus. O uim funciona da mesma maneira. Se você deseja desabilitar explicitamente qualquer método de entrada, use estas configurações:

export GTK_IM_MODULE="gtk-im-context-simple"
export QT_IM_MODULE="simple"

Uma string vazia também funciona.

Você pode definir essas variáveis ​​em todo o sistema /etc/profile(ou um arquivo dedicado dentro /etc/profile.d, respectivamente) ou dentro do seu local ~/.xprofile. A configuração ~/.bashrcou ~/.profilenão garantirá que as linhas sejam executadas ao efetuar login no seu sistema usando um gerenciador de login gráfico como GDM, SDDM, KDM ou LightDM. Se você estiver iniciando sua sessão X usando XDM, Slim ou startx, precisará inserir essas linhas ~/.xinitrc.

Se você configurou um método de entrada diferente do ibus, acesse as configurações do Gnome posteriormente e verifique se as configurações relacionadas ao ibus estão desabilitadas, especialmente os atalhos de teclado. Como alternativa, diga ao Gnome para não tocar nas configurações do teclado usando:

gsettings set org.gnome.settings-daemon.plugins.keyboard active false

ou desinstale o ibus completamente.

Agora, e o XIM? O XIM é um protocolo de método de entrada bastante obsoleto, que o ibus e o fcitx implementam apenas por motivos de suporte herdado. Não há nenhuma razão real para você querer usar o XIM hoje em dia sobre qualquer um desses dois. A única razão pela qual você deseja definir GTK_IM_MODULE="xim"é substituir as configurações ComposeKey codificadas pelo GTK .

Para responder sua outra pergunta: Eu não acho que exista realmente uma maneira de detectar qual método de entrada está ativo no momento, exceto olhando as variáveis ​​de ambiente ou sabendo quais mensagens instantâneas estão instaladas no seu sistema. Se GTK_IM_MODULEnão estiver definido, o GTK seleciona um IM interno com base nas configurações em /etc/gtk-2.0/gtk.immodules. O GTK 3.0 parece em /usr/lib/gtk-3.0/3.0.0/immodules.cacheque é gerado por gtk-query-immodules-3.0.

A razão pela qual GTK_IM_MODULEé definida como ximé, provavelmente, alguns em algum lugar definição variável disperso em /etc/profile, /etc/profile.d/*ou qualquer outro dos seus arquivos shell RC locais ou globais. Sinta-se à vontade para desarmar ou substituir essa variável, se achar necessário.

No entanto, de acordo com este comentário no relatório de bug do Gnome, presumo que o valor configurado via gsettingssubstitua o valor definido GTK_IM_MODULEpara aplicativos ativados pelo DBus. Então, pelo menos, seus aplicativos Gnome provavelmente estão usando gtk-im-context-simpleno momento, o que significa efetivamente o comportamento padrão (ou seja, sem ibus ou qualquer outro IM dedicado).

Janek Bevendorff
fonte
Ótima explicação e plano de fundo. Agora, se gsettingsnão segfault em mim sempre que eu tento fazer xD nada (mesmo --version segfaults !!)
sqweek
Então, eu tenho o ibus e o xim no meu Ubuntu 18.04. Posso excluir os dois com segurança se não tiver a intenção de digitar nos idiomas CJK?
Suncatcher
Sim, mas eu não desinstalaria o XIM, a menos que fosse necessário. É muito antigo, mas às vezes é usado como base para outras funcionalidades. Portanto, a menos que você realmente precise de alguns kB, eu não o desinstalaria.
Janek Bevendorff