Comment changer la disposition du clavier dans gnome 3 à partir de la ligne de commande

15

J'utilise gnome 3.22.1 mais un problème existe depuis 3.18.

Avant cela (je ne me souviens pas de la version exacte), j'ai pu changer la disposition du clavier en utilisant xkb-witch , une application simple qui utilise des liaisons X.org sous le capot.

Après 3.18 si vous exécutez xkb-switch, la disposition du clavier ne sera pas modifiée dans gnome. Une enquête plus approfondie a montré que le changement de disposition fonctionne, mais pendant très peu de temps.

Si vous exécutez ce script:

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

Vous obtiendrez de 3 à 20 commutations de mise en page «réussies», selon votre chance.

Après avoir recherché ce problème sur Google, je donne les conseils suivants :

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

Le paramètre est en cours de modification, mais la disposition reste la même.

J'ai trouvé une méthode "hacky" pour changer la mise en page:

setxkbmap us,ru
setxkbmap ru,us

mais le shell gnome n'est pas au courant de ce changement et affiche une langue incorrecte dans l'indicateur de disposition.

J'ai signalé ce problème (désolé, réputation insuffisante, https: //bbs.archlinux.org/viewtopic.php? Pid = 1657582 https: //github.com/ierton/xkb-switch/issues/15), mais n'a pas eu de chance d'obtenir de bonnes réponses.

Et à ce stade, je suis coincé. Je ne suis pas assez habile pour identifier le problème dans le code shell gnome. Je ne suis même pas sûr que ce soit le problème (du gnome shell).

Ce que je veux, c'est un moyen compatible avec les gnomes pour changer la disposition du clavier à partir du terminal. Quelqu'un peut me diriger dans la bonne direction? Dois-je déposer cela comme un bug (en particulier le fait que la disposition du clavier ne peut pas être modifiée via gsettings)?

RGBD
la source

Réponses:

9

Puisque gnome-shell expose une interface JS eval sur DBus qui a accès à toutes les variables, l'exploit est possible avec la commande suivante:

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

Ce qui activera la 0ème disposition, et ainsi de suite.

Crédit.


Et voici comment passer à la dernière méthode d'entrée utilisée (à partir des commentaires):

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()"
sanmai
la source
Merci pour votre réponse - cela m'a fait économiser beaucoup de recherches sur Google! Et 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()"
voici
4

Si vous utilisez IBus comme méthode d'entrée (qui est probablement une valeur par défaut), vous pouvez modifier votre entrée à l'aide de la ibuscommande:

# 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

Vous pouvez voir toutes les dispositions disponibles avec la ibus list-enginecommande.

Il convient de noter que cette approche ne modifie pas l'indicateur de langue, bien qu'elle fonctionne de manière fiable dans le cas contraire.

undercat applaudit Monica
la source
C'est la même chose setxkbmap us- sans aucun moyen de modifier la mise en page à l'aide de raccourcis standard après cela.
sanmai
@sanmai Pas tout à fait la même chose - il est impossible de passer aux langues nécessitant IME (japonais, chinois, etc.) setxkbmap. De plus, setxkbmappeut agir comme un buggy dans les environnements WM modernes, voir la question pour plus de détails à ce sujet.
undercat applaudit Monica
Je ne peux pas commenter les raccourcis par défaut qui ne fonctionnent pas - j'utilise des raccourcis personnalisés pour chaque mise en page que j'utilise.
undercat applaudit Monica
OK, pas pareil, mais je ne peux toujours pas utiliser le commutateur par défaut. Comme vous le savez peut-être, il n'y a que autant de touches supplémentaires sur un clavier japonais, pour d'autres dispositions, je dois encore utiliser le commutateur par défaut.
sanmai
3

Utilisation gsettings.

La définition org.gnome.desktop.input-sources.sourcesde la liste nulle , "[]", vous permet d'utiliser la configuration du clavier du serveur X sans que gnome-shell essaie de la configurer, vous pourrez donc faire comme avant.

$ gsettings set org.gnome.desktop.input-sources sources '[]'
xae
la source
Lorsque j'ai essayé cela, mon terminal Gnome est resté bloqué sur QWERTY, peu importe le nombre de setxkbmapcommandes que j'ai tapées par la suite, jusqu'à ce que je remette les sources d'entrée via la boîte de dialogue Paramètres.
Silas S. Brown
0

Je pense que tu devrais essayer sudo dpkg-reconfigure keyboard-configuration

Romain L.
la source
0

Vous pouvez configurer et basculer vers une méthode d'entrée sur la ligne de commande même si vous n'avez pas précédemment configuré cette méthode d'entrée avec la souris:

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

Pour Dvorak, utilisez us+dvorak(ou gb+dvoraksi vous êtes au Royaume-Uni, ou autre).

Silas S. Brown
la source