Script para alternar para o próximo grupo de idiomas ou para o próximo idioma dentro do grupo atual, dependendo do argumento.
Preparação
Emumterminal,execute:
gsettingsgetorg.gnome.desktop.input-sourcessources
Issoproduziráalgocomo(nomeucaso):
[('xkb','us+intl'),('xkb','us'),('xkb','nl'),('xkb','be')]
Agora,bastacriarumarquivodentrododiretório
$HOME
(exatamente)chamado:langsets
ondevocêagrupaosidiomasdeacordocomoseugosto.Nomeuexemplo,agruparei
'us+intl'
juntocom'us'
e'nl'
com'be'
.Agrupá-losporordemnalista,oqueresultaemumarquivo:conteúdodoarquivo
~/home/langsets
:1 2 3 4
Como você pode ver, em cada linha, eu coloco os números do índice dos idiomas, separados por um espaço (onde 1 é o primeiro idioma na lista de saída).
Você pode definir qualquer combinação de idiomas (desde que não coloque idiomas em vários grupos), e qualquer número de grupos de idiomas , basta criar um novo linha com índices.
-
O script
#!/usr/bin/env python3 import subprocess import os import sys import ast arg = sys.argv[1] key = "org.gnome.desktop.input-sources" f = [f for f in [l.strip().split() for l in open( os.path.join(os.environ["HOME"], "langsets") ).readlines()] if f] def get(cmd): return subprocess.check_output(cmd).decode("utf-8") def execute(cmd): subprocess.Popen(cmd) langs = ast.literal_eval(get(["gsettings", "get", key, "sources"]).strip()) currlang = str(int(get(["gsettings", "get", key, "current"]).split()[-1].strip())+1) currgroup = [l for l in f if currlang in l][0] if arg == "nextcurr": currsub = currgroup.index(currlang) try: nextlang = currgroup[currsub+1] except IndexError: nextlang = currgroup[0] nextlang = str(int(nextlang)-1) elif arg == "nextgroup": try: nextlang = f[[i for i, l in enumerate(f) if f[i] == currgroup][0]+1][0] except IndexError: nextlang = f[0][0] subprocess.Popen(["gsettings", "set", key, "current", nextlang])
-
Copie o script em um arquivo vazio, salve-o como
language_set.py
-
Teste- execute o script com os dois comandos:
python3 /path/to/language_set.py nextgroup
um
python3 /path/to/language_set.py nextcurr
para ver se o script (subseqüentemente) se move para o próximo grupo de idiomas ou para o próximo idioma no grupo atual.
-
Se tudo funcionar bem, crie dois atalhos de teclado. Um para mudar para o próximo grupo, um para mudar dentro do grupo atual.
Escolha: Configurações do sistema > "Teclado" > "Atalhos" > "Atalhos personalizados". Clique no botão "+" e adicione os comandos abaixo.
-
Para alterar entre grupos de idiomas:
python3 /path/to/language_set.py nextgroup
-
Para mudar entre os idiomas dentro de um grupo :
python3 /path/to/language_set.py nextcurr
-