Como alterar o layout do teclado no gnome 3 na linha de comando


15

Estou usando o gnome 3.22.1, mas o problema existe desde a 3.18.

Antes disso (não lembro a versão exata), pude mudar o layout do teclado usando o xkb-witch , aplicativo simples que usa as ligações do X.org por baixo do capô.

Após a versão 3.18, se você executar o xkb-switch, o layout do teclado não será alterado no gnome. Investigações posteriores mostraram que a troca de layout está funcionando, mas por um período muito curto.

Se você executar este script:

for i in $(seq 1000); do
  lang=$(xkb-switch -s ru; xkb-switch);
  if [[ "$lang" == "ru" ]]; then
    echo $lang;
  fi;
done

Você terá de 3 a 20 trocas de layout "bem-sucedidas", dependendo da sua sorte.

Depois de pesquisar esse problema no Google, siga os seguintes conselhos :

gsettings set org.gnome.desktop.input-sources current 0

A configuração está sendo alterada, mas o layout permanece o mesmo.

Eu encontrei um método "hacky" para alterar o layout:

setxkbmap us,ru
setxkbmap ru,us

mas o shell do gnome não está ciente dessa alteração e mostra o idioma errado no indicador de layout.

Eu postei sobre esse problema (desculpe, não há reputação suficiente, https: //bbs.archlinux.org/viewtopic.php? Pid = 1657582 https: //github.com/ierton/xkb-switch/issues/15), mas não teve sorte em obter boas respostas.

E neste momento estou preso. Eu não sou habilitado o suficiente para identificar o problema no código shell do gnome. Eu nem tenho certeza de que é o problema (do shell do gnomo).

O que eu quero é uma maneira sensível ao gnomo de mudar o layout do teclado do terminal. Alguém pode me apontar na direção certa? Devo arquivar isso como um bug (especialmente o fato de que o layout do teclado não pode ser alterado por meio de gsettings)?

Respostas:


8

Como o gnome-shell expõe uma interface JS eval no DBus que tem acesso a todas as variáveis, o talento é possível com o seguinte comando:

gdbus call --session --dest org.gnome.Shell \
--object-path /org/gnome/Shell \
--method org.gnome.Shell.Eval \
 "imports.ui.status.keyboard.getInputSourceManager().inputSources[0].activate()"

O que ativará o 0º layout, e assim por diante.

Crédito.


E é assim que mudar para o último método de entrada usado (dos comentários):

gdbus call --session --dest org.gnome.Shell --object-path /org/gnome/Shell \
--method org.gnome.Shell.Eval "imports.ui.status.keyboard.getInputSourceManager()._mruSources[1].activate()"

Obrigado pela sua resposta - isso me salvou muito no Google! E é assim que mudar para o último método de entrada usado:gdbus call --session --dest org.gnome.Shell --object-path /org/gnome/Shell --method org.gnome.Shell.Eval "imports.ui.status.keyboard.getInputSourceManager()._mruSources[1].activate()"
— Envek

4

Se você estiver usando o IBus como seu método de entrada (que é provavelmente o padrão), poderá alterar sua entrada usando o ibuscomando:

# Set the layout to US English
ibus engine xkb:us::eng
# Set the input method to Japanese Mozc IME
ibus engine mozc-jp
# Set the layout to Russian
ibus engine xkb:ru::rus

Você pode ver todos os layouts disponíveis com o ibus list-enginecomando

Deve-se notar que essa abordagem não altera o indicador de idioma, embora funcione de maneira confiável de outra maneira.


É o mesmo que setxkbmap us- sem maneira de alterar o layout usando atalhos padrão depois disso.
— sanmai

@sanmai Não é o mesmo - é impossível mudar para idiomas que precisam do IME (japonês, chinês, etc) setxkbmap. Além disso, setxkbmappode atuar de maneira simples em ambientes WM modernos, consulte a pergunta para obter detalhes sobre isso.
— undercat aplaude Monica

Não posso comentar se os atalhos padrão não estão funcionando - estou usando os personalizados para todos os layouts que uso.
— undercat aplaude Monica

OK, não é o mesmo, mas ainda não consigo usar a opção padrão. Como você deve saber, há apenas tantas teclas extras em um teclado japonês; para outros layouts, ainda preciso usar a opção padrão.
— sanmai

3

Usando gsettings.

Definir org.gnome.desktop.input-sources.sourcesa lista nula , "[]", permite usar a configuração do teclado do servidor X sem o gnome-shell tentar configurá-la, para que você possa fazer como antes.

$ gsettings set org.gnome.desktop.input-sources sources '[]'

Quando tentei isso, meu terminal Gnome ficou preso no QWERTY, não importa quantos setxkbmapcomandos digitei depois, até colocar as fontes de entrada de volta na caixa de diálogo Configurações.
— Silas S. Brown

0

Eu acho que você deveria tentar sudo dpkg-reconfigure keyboard-configuration


0

Você pode configurar e alternar para um método de entrada na linha de comando, mesmo se você não tiver configurado anteriormente esse método de entrada com o mouse:

gsettings set org.gnome.desktop.input-sources sources "[('xkb', 'ru')]"

Para Dvorak, use us+dvorak(ou gb+dvorakse você estiver no Reino Unido ou o que for).

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.