web-dev-qa-db-fra.com

Ubuntu 18.04: comment changer la disposition du clavier à partir d'un script?

Dans Ubuntu 16.04, ce qui suit a fonctionné:

/usr/bin/gsettings set org.gnome.desktop.input-sources current 0

Mais après la mise à niveau vers 18.04, cela ne fonctionne plus.

2
Ivan G.

Cette méthode de changement de disposition du clavier est obsolète. Le nouveau moyen légèrement plus cryptique est le suivant:

gdbus call --session --dest org.gnome.Shell \
    --object-path /org/gnome/Shell \
    --method org.gnome.Shell.Eval \
    "imports.ui.status.keyboard.getInputSourceManager().inputSources[1].activate()"

(crédits: https://www.mail-archive.com/[email protected]/msg08988.html )

Le nombre dans inputSources[1] définit la mise en page souhaitée. Donc, si vous avez deux mises en page différentes configurées, ce sera 0 ou 1. Vous pouvez obtenir une liste des mises en page configurées en utilisant cette commande:

$ gsettings get org.gnome.desktop.input-sources sources
[('xkb', 'us+intl-unicode'), ('xkb', 'us')]
2
Sebastian Stark

La réponse de Sebastian est excellente, je peux confirmer que cela fonctionne beaucoup plus rapidement que la méthode précédente que j'ai utilisée:

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

Pour éclaircir sa réponse, le nombre entre crochets (inputSources[1]) commence à 0, dans mon cas 0 sera nous, 1 ru et 2 pinyin dans le code suivant:

#!/bin/bash
gdbus call --session --dest org.gnome.Shell \
    --object-path /org/gnome/Shell \
    --method org.gnome.Shell.Eval \
    "imports.ui.status.keyboard.getInputSourceManager().inputSources[1].activate()"

Vous pouvez stocker des scripts Shell pour chaque langue dans votre répertoire personnel, par exemple /home/nom_utilisateur/.keyboard/langXX.sh. N'oubliez pas de permettre leur exécution.

Ensuite, vous devez ajouter des raccourcis dans Paramètres/Appareils/Clavier/Raccourcis personnalisés: capture d'écran

2
Timofey Bugaevsky