Supondo que a alteração na resolução está causando o erro e o gatilho para executar o script, a verificação periódica da resolução e a execução do script, caso ele mude, deve fazer o trabalho:
#!/usr/bin/env python3
import subprocess
import time
command = "</path/to/script_to_run>"
def get_res():
# get resolution
xr = subprocess.check_output(["xrandr"]).decode("utf-8").split()
pos = xr.index("current")
return [int(xr[pos+1]), int(xr[pos+3].replace(",", "") )]
res1 = get_res()
while True:
time.sleep(5)
res2 = get_res()
if res2 != res1:
subprocess.Popen(["/bin/bash", "-c", command])
res1 = res2
Ele verifica a resolução atual a cada cinco segundos e executa o script, conforme definido na seção principal, se houver uma alteração na resolução.
Como usar
- Copie o script em um arquivo vazio, salve-o como
check_resolution.py
- Na seção head, defina o caminho para o seu script para reiniciar o
synergy
-
Teste-o executando-o em uma janela de terminal com o comando:
python3 /path/to/check_resolution.py
-
se tudo funcionar bem, adicione-o aos seus aplicativos de inicialização.
Nota
O comando como um aplicativo de inicialização provavelmente precisa de uma pequena pausa para garantir que a área de trabalho esteja totalmente carregada quando o script for iniciado. O comando para adicionar ao Startup Applications seria então:
/bin/bash -c "sleep 15&&python3 /path/to/check_resolution.py
Adicionar a aplicativos de inicialização: Dash > Aplicativos de inicialização > Adicione, adicione o comando.
Editar
Apenas para completar:
Se, por algum motivo, você preferir uma versão bash do script:
#!/bin/bash
function get_res {
echo $(xrandr -q | awk -F'current' -F',' 'NR==1 {gsub("( |current)","");print $2}')
}
res1=$(get_res)
while true; do
sleep 5
res2=$(get_res)
if [ "$res1" != "$res2" ]; then
<command_to_run>
fi
res1=$res2
done
O uso é praticamente o mesmo, exceto a extensão de idioma:
check_resolution.sh
e o comando para executá-lo:
/bin/bash /path/to/check_resolution.sh
e substitua <command_to_run>
pelo comando para reiniciar synergy
ou o caminho para o seu script.