web-dev-qa-db-fra.com

Comment changer la mise en page du clavier dans GNOME 3 de la ligne de commande

J'utilise Gnome 3.22.1 mais le problème existe depuis 3.18.

Avant cela (ne vous souvenez pas de la version exacte), j'ai pu changer de disposition du clavier à l'aide de xkb-witch , application simple qui utilise des liaisons X.org sous la hotte.

Après 3.18 Si vous exécutez XKB-Switch, la disposition du clavier ne sera pas commutée dans GNOME. Une enquête plus approfondie a montré que la commutation de la mise en page fonctionne, mais pour un peu de temps très court.

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 commutateurs de présentation "réussi", en fonction de votre chance.

Après avoir googling ce problème, je les suivants conseils :

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

Le réglage est en cours de modification, mais la mise en page reste la même.

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

setxkbmap us,ru
setxkbmap ru,us

mais la coque de Gnome n'est pas au courant de ce changement et présente une langue erronée dans l'indicateur de mise en page.

J'ai posté sur ce problème (désolé, pas assez de réputation, https: //bbs.archlinux.org/viewtopic.php? Pid = 1657582 https: //github.com/ierton/xkb-switch/issues/15), Mais n'avait pas de chance d'avoir 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 c'est ce problème (gnome shell).

Ce que je veux, c'est un GNOME-Cawn façon de changer la présentation du clavier du terminal. Quelqu'un peut me diriger dans la bonne direction? Devrais-je déposer cela comme un bogue (en particulier le fait que la mise en page de clavier ne peut pas être modifiée par GSettings)?

15
RGBD

Puisque Gnome-Shell expose une interface JS Eval sur DBU 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()"

Qui va activer la 0ème mise en page, et ainsi de suite.

crédit.


Et c'est comment passer à la dernière méthode d'entrée utilisée (à partir de 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()"
10
sanmai

Si vous utilisez Ibus comme méthode de saisie (qui est une défaillance probable), vous pouvez modifier votre entrée à l'aide de la commande ibus:

# 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 le ibus list-engine commande.

Il faut noter que cette approche n'est pas modifier l'indicateur de langue, bien que cela fonctionne de manière fiable autrement.

En utilisant gsettings.

Réglage org.gnome.desktop.input-sources.sources à la liste null, "[]", vous permet d'utiliser la configuration X Server Configuration du clavier sans gnome-shell essayant de la configurer , afin que vous puissiez être capable de faire comme avant.

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

Vous pouvez configurer et passer à une méthode d'entrée de la ligne de commande même si vous n'avez pas encore 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+dvorak Si vous êtes au Royaume-Uni, ou peu importe).

0
Silas S. Brown