Aqui estão minhas configurações de entrada (observe a ordem dos idiomas na lista, que é minha preferência).
Agora, inicialmente, quando invoco o atalho para alternar a entrada, a lista fica assim (conforme esperado):
Agora eu seleciono a entrada coreana (segundo item) e invoco o atalho do switch novamente. Veja como a lista se parece:
Como você pode ver, a ordem mudou.
E agora, se eu selecionar outra entrada e tentar mudar novamente, a lista muda completamente.
Existe uma maneira de evitar que o gnome reorganize a lista o tempo todo?
Acho que vale a pena mencionar que meu trabalho é sobre idiomas e eu troco de idioma o tempo todo (pesquisando um caractere chinês, voltando para o teclado inglês, voltando para um dicionário coreano para descobrir uma definição, etc...), descobri que o cérebro lembra mais facilmente a localização dos idiomas na lista do que o que realmente está escrito, e é assim que o Windows faz.
Gostaria que houvesse uma maneira de consertar isso, caso contrário, teria que relatar isso como um problema no site do gnome.
Desde já, obrigado.
Responder1
Desde então, não há extensão gnome-shell no momento para a mudança estática do layout do teclado usando os atalhos padrão Super+Space e Shift+Super+Space.
e os comentários sobre este linkOrdem estática de troca de layout de teclado no Ubuntu 17.10 e posterior com GNOME 3do OP
o problema com a solução proposta no link (Alt+Shift) é que falta feedback visual e não pode usar atalho para anterior (como win+shift+espaço para voltar uma entrada). Então não é realmente satisfatório.
Eu poderia alcançar pelo menos um ponto em dois (Feedback visual e voltar ao layout anterior) com a solução alternativa abaixo.
Gambiarra
SO: Ubuntu 19.10
Crie dois scripts com o conteúdo abaixo, chamei-os de "SuSpace.sh" e "ShSuSpace.sh"
SuSpace.sh
#!/bin/bash
totalLang=$(gdbus call --session --dest org.gnome.Shell --object-path /org/gnome/Shell --method org.gnome.Shell.Eval "imports.ui.status.keyboard.getInputSourceManager()._mruSources.length" | grep -oP "(?<=').*?(?=')")
currentLang=$(gdbus call --session --dest org.gnome.Shell --object-path /org/gnome/Shell --method org.gnome.Shell.Eval "imports.ui.status.keyboard.getInputSourceManager().currentSource.index" | grep -oP "(?<=').*?(?=')")
declare -i math=$currentLang+1
if [ "$math" -lt "$totalLang" ]; then
gdbus call --session --dest org.gnome.Shell --object-path /org/gnome/Shell --method org.gnome.Shell.Eval "imports.ui.status.keyboard.getInputSourceManager().inputSources["$currentLang+1"].activate()"
else
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()"
fi
ShSuSpace.sh
#!/bin/bash
totalLang=$(gdbus call --session --dest org.gnome.Shell --object-path /org/gnome/Shell --method org.gnome.Shell.Eval "imports.ui.status.keyboard.getInputSourceManager()._mruSources.length" | grep -oP "(?<=').*?(?=')")
currentLang=$(gdbus call --session --dest org.gnome.Shell --object-path /org/gnome/Shell --method org.gnome.Shell.Eval "imports.ui.status.keyboard.getInputSourceManager().currentSource.index" | grep -oP "(?<=').*?(?=')")
declare -i math=$currentLang-1
if [ "$math" -eq -1 ]; then
gdbus call --session --dest org.gnome.Shell --object-path /org/gnome/Shell --method org.gnome.Shell.Eval "imports.ui.status.keyboard.getInputSourceManager().inputSources["$totalLang-1"].activate()"
else
gdbus call --session --dest org.gnome.Shell --object-path /org/gnome/Shell --method org.gnome.Shell.Eval "imports.ui.status.keyboard.getInputSourceManager().inputSources["$currentLang-1"].activate()"
fi
você pode criar atalhos personalizados para esses dois scripts conforme desejar.