自定义双屏配置越野车

自定义双屏配置越野车

使用 Ubuntu 的系统设置来配置两个屏幕(在我的情况下是通过 HDMI 连接的桌面显示器和电视)不符合人体工程学。

因此我决定编写一个方便的切换器脚本,让我可以在镜像输出(“镜像”)和左屏打开/右屏关闭或左屏关闭/右屏打开(“切换”)之间进行选择。它基于xrandr

它按预期工作,并且我喜欢使用时的灵活性xrandr,但是:

  • 无泪设置电视输出所必需的被忽略或者无效使用我的脚本后(为什么?)
  • 系统设置破碎的使用我的脚本后:如果我之后通过系统设置更改屏幕配置,输出将被打乱

我的脚本肯定出了什么严重错误。我该如何让它正常工作?

脚本:

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

无泪在正常使用 Ubuntu 时可以正常工作,但在运行我的脚本后却不行:

$ cat /etc/X11/xorg.conf
Section "Device"
   Identifier  "Intel Graphics"
   Driver      "intel"
   Option      "AccelMethod" "sna"
   Option      "SwapbuffersWait" "true"
   Option      "TearFree" "true"
EndSection

相关内容