Como posso alternar rapidamente entre dois de vários idiomas?

5

Eu tenho 3 fontes de entrada (idiomas) configuradas em Configurações de entrada de texto. Vamos chamá-los de E (como em inglês) e A e B para outros dois idiomas. Principalmente eu alternando entre inglês e A ou inglês e B e quase nunca entre A e B. No entanto, trocar os atalhos de teclado sempre os alterna em direção E-> A-> B ou E <-A & -B. Isso é muito inconveniente.

Estou procurando uma maneira de fazer isso, pois ele é implementado no MacOS, onde o alternador alterna entre os dois últimos idiomas por padrão, mas você pode forçá-lo a avançar para o terceiro usando um atalho separado ou via menu da barra de ferramentas. mostrado na imagem abaixo:

ÉpossívelconfiguraralgoassimnoUbuntu?

EDITAR:AsoluçãodeJacobabaixopermitecriarumatalhopersonalizadoparaalternarentredoisidiomas.EumodifiqueioscriptdeleparareplicaroesquemadecomutaçãodoMacOS,ondeosúltimosdoisidiomassãociclosautomaticamente.Vocêpodever aqui . Postagem do blog explicando detalhes aqui .

    
por krokodil 13.01.2017 / 23:38

2 respostas

6

1. Alternar entre dois idiomas (fixos)

O que você descreve é basicamente um atalho de teclado para alternar entre dois idiomas de entrada. O script abaixo oferecerá a opção.

#!/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])

Como usar

  1. Copie o script em um arquivo vazio, salve-o como set_lang.py
  2. Em uma janela de terminal, execute o comando:

    gsettings get org.gnome.desktop.input-sources sources
    

    Isso será exibido como:

    [('xkb', 'us+intl'), ('xkb', 'us'), ('xkb', 'nl')]
    

    Esta lista representa seus idiomas de entrada. O índice dos idiomas é igual à posição na lista, começando com 0 , por ex. ('xkb', 'us') tem índice 1 (no meu caso).

  3. Agora teste e execute o script para alternar entre dois índices. Para alternar entre ('xkb', 'us+intl') e ('xkb', 'nl') (índice 0 e 2 ):

    python3 /path/to/set_lang.py 1 3
    

    onde as linguagens bot são representadas pelos argumentos

    1 3
    
  4. Se tudo funcionar bem, adicione-o a uma tecla de atalho: escolha: Configurações do sistema > "Teclado" > "Atalhos" > "Atalhos personalizados". Clique no botão "+" e adicione o comando:

    python3 /path/to/set_lang.py 1 3
    

    para um atalho de sua escolha.

Você pode usar o atalho existente para navegar em todos os idiomas ou, é claro, no menu.

Breve explicação

  • Os idiomas disponíveis podem ser recuperados pelo comando:

    gsettings get org.gnome.desktop.input-sources sources
    
  • A linguagem atualmente definida pode ser recuperada pelo comando:

    gsettings get org.gnome.desktop.input-sources current
    

    que irá mostrar (a.o.) o índice do idioma atualmente definido.

  • Podemos definir o idioma por (por exemplo) o comando:

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

    para definir o idioma como o primeiro da lista (índice 0)

Resumindo: se rodarmos o script em duas linguagens (indices) como argumentos, o script irá procurar qual é o índice atual, irá mudar para o outro.



2. Alterna entre os dois últimos idiomas usados

A versão do script abaixo irá alternar entre os dois últimos idiomas usados , o que acabou sendo semelhante ao comportamento dos MacOs.

#!/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])

Eu adicionei esta versão como uma opção adicional. Os dois últimos idiomas usados persistirão (sejam lembrados) após a reinicialização.

Como usar

  1. Copie o script em um arquivo vazio, salve-o como switchlang.py
  2. Teste- execute o script pelo comando:

    python3/ path/to/switchlang.py
    

    Após a primeira execução, mude o idioma do menu, agora execute

    python3/ path/to/switchlang.py
    

    novamente. A partir de então, o script sempre alternará entre os dois últimos idiomas usados.

por Jacob Vlijm 14.01.2017 / 00:26
2

Ir: > Configurações do sistema > Entrada de texto

  and add languages to "Input sources to use:"

Certifique-sedemarcar"Mostrar fonte de entrada atual na barra de menus", basta selecionar fontes de entrada no menu suspenso.

    
por Thompson Dawes 14.01.2017 / 02:28