Buggy de configuração de tela dupla personalizada

2

Usar as configurações do sistema do Ubuntu para configurar duas telas (monitor de desktop e TV via HDMI no meu caso) não é ergonômico.

Por isso, decidi codificar um prático script switcher que me permite escolher entre saída espelhada ("mirror") e tela esquerda ligada / direita desligada ou tela esquerda desligada / direita ativada ("switch"). É baseado em xrandr .

Funciona como esperado e eu gosto da flexibilidade ao usar xrandr , MAS:

  • A configuração livre de lágrimas necessária para a saída da TV é ignorada ou ineficaz após o uso do meu script (Por quê?)
  • configurações do sistema são quebradas depois de usar o meu script: Se eu alterar a configuração da tela através das configurações do sistema, a saída será embaralhada .

Meu script deve estar fazendo algo terrivelmente errado. Como posso fazer isso funcionar corretamente?

Script:

#!/bin/bash

DESKTOP="DP1" # desktop monitor
DSIZE="1280x1024"

TVPORT="HDMI1" # connection to TV
TVSIZE="1920x1080"

SCALE="1.5" # e.g. 1920/1280

if xrandr | grep "$TVPORT" | egrep "\)$"
then # TV port is turned OFF => turn it on
  selected_mode='echo -e "mirror\nswitch" | zenity --list --text="Choose Mode:" --column="Mode"'
  if test "$selected_mode" = "mirror"
  then
    xrandr --output "$TVPORT" --auto --left-of "$DESKTOP" --output "$DESKTOP" --panning "$TVSIZE"
    xrandr --output "$DESKTOP" --scale "$SCALE"x"$SCALE" --mode "$DSIZE" --fb "$TVSIZE" --panning "$TVSIZE"
  fi
  if test "$selected_mode" = "switch"
  then
    xrandr --output "$TVPORT" --auto --output "$DESKTOP" --off
  fi
else # TV port is turned ON => turn it off
  xrandr --output "$TVPORT" --off --output "$DESKTOP" --mode "$DSIZE" --fb "$DSIZE" --scale 1x1 --panning "$DSIZE"
fi

exit 0

Tearfree que funciona ao usar o Ubuntu normalmente, mas não depois de executar o meu script:

$ cat /etc/X11/xorg.conf
Section "Device"
   Identifier  "Intel Graphics"
   Driver      "intel"
   Option      "AccelMethod" "sna"
   Option      "SwapbuffersWait" "true"
   Option      "TearFree" "true"
EndSection
    
por user22611 01.09.2015 / 19:29

0 respostas