Cómo cambiar el layout del keyboard en gnome 3 desde la command-line

Estoy usando gnome 3.22.1 pero existe un problema desde 3.18.

Antes de eso (no recuerdo la versión exacta) pude cambiar el layout del keyboard usando xkb-witch , una aplicación simple que usa enlaces de X.org bajo el capó.

Después de 3.18 si ejecuta xkb-switch, el layout del keyboard no se cambiará en gnome. Investigaciones adicionales han demostrado que el cambio de layout funciona, pero por un time muy corto.

Si ejecuta este script:

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

Obtendrás de 3 a 20 conmutaciones de layout "exitosas", dependiendo de la suerte que tengas.

Después de search en Google este problema, el siguiente consejo :

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

La configuration está siendo modificada, pero el layout sigue siendo el mismo.

He encontrado un método "hacky" para cambiar el layout:

 setxkbmap us,ru setxkbmap ru,us 

pero el shell gnome no está al tanto de ese cambio y muestra un lenguaje incorrecto en el indicador de layout.

He publicado sobre este problema (lo siento, no hay suficiente reputación, https: //bbs.archlinux.org/viewtopic.php? Pid = 1657582 https: //github.com/ierton/xkb-switch/issues/15), pero no tuvo suerte para get buenas respuestas.

Y en este punto estoy atascado. No soy lo suficientemente hábil para identificar el problema en el código de shell gnome. Ni siquiera estoy seguro de que sea su problema (el caparazón del gnomo).

Lo que quiero es una forma consciente de gnome para cambiar el layout del keyboard de la terminal. ¿Alguien me puede apuntar en la dirección correcta? ¿Debo presentar esto como un error (especialmente el hecho de que el layout del keyboard no se puede cambiar a través de ajustes)?

Usando gsettings .

Configurando org.gnome.desktop.input-sources.sources a la list nula , "[]", le permite usar la configuration del keyboard del server X sin que gnome-shell intente configurarlo, por lo que podría hacer lo mismo que antes.

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