1. Script para executar seu comando se quatro telas estiverem conectadas
O script abaixo é uma versão editada de este .
O que faz
Uma vez por cinco segundos, ele verifica o número de telas conectadas. Se o número for alterado, e o número total de telas conectadas é quatro, ele executa o comando xrandr
que encontramos no (s) comentário (s).
Como usar
- Copie o script em um arquivo vazio, salve-o como
four_screens.py
-
Teste o script a partir de um terminal com o comando:
python3 /path/to/four_screens.py
e conecte suas telas. Depois que o quarto estiver conectado, sua configuração de tela deve ser feita.
-
Se tudo funcionar bem, adicione o script a Startup Applications: Dash > Aplicativos de inicialização > Adicionar. Adicione o comando:
python3 /path/to/four_screens.py
#!/usr/bin/env python3
import subprocess
import time
#--- set both commands (connect / disconnect) below
connect_command = "xrandr --output DP-2 --pos 0x0 --mode 1920x1200 "\
"&& xrandr --output HDMI-0 --pos 1920x0 --mode 1920x1200 "\
"&& xrandr --output DP-3 --pos 3840x0 --mode 1920x1200 "\
"&& xrandr --output eDP-1-1 --off"
disconnect_command = ""
#---
while True:
time.sleep(5)
try:
subprocess.Popen(["xrandr"])
except:
pass
else:
break
# function to get the output of xrandr
def get(cmd): return subprocess.check_output(cmd).decode("utf-8")
# - to count the occurrenc of " connected "
def count_screens(xr): return xr.count(" connected ")
# - to run the connect / disconnect command(s)
def run_command(cmd): subprocess.Popen(["/bin/bash", "-c", cmd])
# first count
xr1 = None
while True:
time.sleep(5)
# second count
xr2 = count_screens(get(["xrandr"]))
# check if there is a change in the screen state
if xr2 != xr1:
if xr2 == 4:
# command to run if connected (two screens)
run_command(connect_command)
elif xr2 == 1:
# command to run if disconnected (one screen)
# uncomment run_command(disconnect_command) to enable, then also comment out pass
pass
# run_command(disconnect_command)
# set the second count as initial state for the next loop
xr1 = xr2
Notas
- O roteiro é extremamente baixo em suco, não acrescenta qualquer carga perceptível.
- No mesmo script, podemos executar a alteração do papel de parede, mas para isso, poste o (caminho para) os dois papéis de parede em sua pergunta.
2. Como alternativa, um atalho
Se, por qualquer motivo, você preferir não executar um script de segundo plano, poderá executar o mesmo comando por meio de um atalho de teclado:
Escolha: Configurações do sistema > "Teclado" > "Atalhos" > "Atalhos personalizados". Clique no botão "+" e adicione o comando:
/bin/bash -c "xrandr --output DP-2 --pos 0x0 --mode 1920x1200 && xrandr --output HDMI-0 --pos 1920x0 --mode 1920x1200 && xrandr --output DP-3 --pos 3840x0 --mode 1920x1200 && xrandr --output eDP-1-1 --off"