J'ai 3 sources d'entrée (langues) configurées dans les paramètres de saisie de texte. Appelons-les E (comme en anglais) et A et B pour deux autres langues. Généralement, je bascule entre anglais et A ou anglais et B et presque jamais entre A et B. Toutefois, les touches de raccourci clavier changent toujours dans le sens E-> A-> B ou E <-A <-B. C'est très gênant.
Je cherche un moyen de le faire car il est implémenté sous MacOS, où le commutateur bascule par défaut entre les 2 dernières langues, mais vous pouvez le forcer à passer à la troisième en utilisant un raccourci séparé ou via le menu de la barre d’outils, comme indiqué dans capture d'écran ci-dessous:
Est-il possible de configurer quelque chose comme ça sur Ubuntu?
EDIT: La solution de Jacob ci-dessous permet de créer un raccourci personnalisé pour basculer entre deux langues. J'ai modifié son script pour répliquer le schéma de commutation MacOS, dans lequel les 2 dernières langues sont des cycles automatiquement. Vous pouvez le voir ici . Article de blog expliquant les détails ici .
Ce que vous décrivez est essentiellement un raccourci clavier permettant de basculer entre deux langues de saisie. Le script ci-dessous offrira l'option.
#!/usr/bin/env python3
import subprocess
import sys
args = sys.argv[1:]
k = ["org.gnome.desktop.input-sources", "current"]
def get(command): return subprocess.check_output(command).decode("utf-8")
currlang = get(["gsettings", "get", k[0], k[1]]).strip().split()[-1]
newlang = args[1] if currlang == args[0] else args[0]
subprocess.Popen(["gsettings", "set", k[0], k[1], newlang])
set_lang.py
Dans une fenêtre de terminal, exécutez la commande:
gsettings get org.gnome.desktop.input-sources sources
Cela produira comme:
[('xkb', 'us+intl'), ('xkb', 'us'), ('xkb', 'nl')]
Cette liste représente vos langues d'entrée. Le index des langues est égal à la position dans la liste, commençant par 0
, par ex. ('xkb', 'us')
a index 1 (dans mon cas).
Testez maintenant le script pour basculer entre deux index. Pour basculer entre ('xkb', 'us+intl')
et ('xkb', 'nl')
(index 0
et 2
):
python3 /path/to/set_lang.py 1 3
où les langues du bot sont représentées par les arguments
1 3
Si tout fonctionne correctement, ajoutez-le à une touche de raccourci: choisissez: Paramètres système> "Clavier"> "Raccourcis"> "Raccourcis personnalisés". Cliquez sur le "+" et ajoutez la commande:
python3 /path/to/set_lang.py 1 3
à un raccourci de votre choix.
Vous pouvez ensuite utiliser le raccourci existant pour parcourir toutes langues ou (bien sûr) le menu.
Les langues disponibles peuvent être récupérées par la commande:
gsettings get org.gnome.desktop.input-sources sources
La langue actuellement définie peut être récupérée par la commande:
gsettings get org.gnome.desktop.input-sources current
qui affichera (a.o.) le index de la langue actuellement définie.
Nous pouvons définir la langue avec (par exemple) la commande:
gsettings set org.gnome.desktop.input-sources current 0
définir la langue sur la première de la liste (index 0)
En bref: si nous exécutons le script avec deux langages (indices) en tant qu'arguments, le script regardera quel est l'index actuel et basculera vers l'autre.
La version du script ci-dessous bascule entre les les deux derniers utilisés langues, qui se sont révélées être similaires au comportement des MacO.
#!/usr/bin/env python3
import subprocess
import os
k = ["org.gnome.desktop.input-sources", "current"]
stored = os.path.join(os.environ["HOME"], ".lastlang")
def get(command): return subprocess.check_output(command).decode("utf-8")
currlang = get(["gsettings", "get", k[0], k[1]]).strip().split()[-1]
try:
newlang = open(stored).read().strip()
except FileNotFoundError:
newlang = currlang
open(stored, "wt").write(currlang)
subprocess.Popen(["gsettings", "set", k[0], k[1], newlang])
J'ai ajouté cette version comme option supplémentaire. Les deux dernières langues utilisées persisteront (seront mémorisées) après le redémarrage.
switchlang.py
Test - lancez le script avec la commande:
python3/ path/to/switchlang.py
Après la première exécution, changez de langue à partir du menu, lancez maintenant
python3/ path/to/switchlang.py
encore. À partir de ce moment, le script bascule toujours entre les deux dernières langues utilisées.