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)?
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()"