Isso é muito bem possível, com a ajuda de um script de segundo plano, usando xprintidle
, que retorna o tempo ocioso atual.
Você precisará instalá-lo primeiro:
sudo apt-get install xprintidle
O script abaixo lê a saída do comando xprintidle
e configura seu teclado sempre que o horário definido é passado.
Como configurar o teclado (índice)
Para criar o comando correto, o script precisa conhecer o índice do teclado de destino. Para obter isso, execute o comando:
gsettings get org.gnome.desktop.input-sources sources
A saída será algo como:
[('xkb', 'us+intl'), ('xkb', 'us'), ('xkb', 'nl')]
Agora, se você quiser definir o último após x time, seu índice é 2, já que o primeiro item em uma lista é sempre 0.
Como usar o script
- Como mencionado, primeiro instale
xprintidle
- Copie o script abaixo em um arquivo vazio
- Na seção head do script, defina:
- o índice do idioma de teclado segmentado, conforme explicado acima
- o tempo ocioso após o qual você alterará o idioma do teclado (em segundos)
- Salve o script como
change_kb.py
-
Teste-o de um terminal pelo comando:
python3 /path/to/change_kb.py
-
Se tudo funcionar como esperado, adicione-o aos seus aplicativos de inicialização: Dash > Aplicativos de inicialização > Adicionar
O script
#!/usr/bin/env python3
import subprocess
import time
#---
kb_id = 2 # set the targeted keyboard index (first = 0)
set_time = 300 # idle tim in seconds
#---
get_t = lambda cmd: subprocess.check_output(cmd).decode("utf-8").strip()
t1 = int(get_t(["xprintidle"]))
idle_t = set_time*1000
while True:
time.sleep(1)
t2 = int(get_t(["xprintidle"]))
if all([t1<idle_t, t2>idle_t]):
cmd = "gsettings set org.gnome.desktop.input-sources current "+str(kb_id)
subprocess.Popen(["/bin/bash", "-c", cmd])
else:
pass
t1 = t2