用于检测监视器的 Bash 脚本

用于检测监视器的 Bash 脚本

我正在尝试编写一个 bash 脚本来检测显示器。我能够使用 Xrandr 找到它,但不确定这是否是正确的方法,也不确定如何让终端在指定的显示器中打开。

我使用这个命令来找到监视器:

xrandr --listmonitors

它为我提供了此显示器的 Xwayland2 输出,但我不确定此输出是否可用。不能保证它始终是 Xwayland2。然后我尝试使用:

if case "${SRANDRD_OUTPUT} ${SRANDRD_EVENT}" in
  "DVI-0 connected") xrandr --output DVI-0 --auto --right-of LVDS;;
  "VGA-0 connected") xrandr --output VGA-0 --auto --left-of LVDS;;
esac
then echo "hi"

我能够得到 hi 的输出,这意味着它正在检测某些东西,但我不确定它检测的是什么。我还试图让它默认在 Xwayland2 显示器上打开,而不是在 Xwayland0 上打开。

编辑:

现在这个问题已经移至超级用户,因此我不再允许发表评论,因此我在此回复我自己的问题。评论中给出的代码:

declared -A positions='([VGA-0]=left [DVI-0]=right)';{ read _;while read -r line;do display=${line#* };[[ -v positions[$display] ]] && xrandr --output "${line#* }" --auto --${positions[$display]}-of LVDS ;done;>< <(xrandr --listactivemonitors) 在终端中不产生任何输出。

xrandr I grep \bconnected 在数组中给出以下结果。

XWAYLAND0 连接主 1920x1080+2944+0(正常左反转右 x 轴 y 轴)530mm x 290mm

XWAYLAND1 连接 1920x1080+1024+0(正常左反转右x轴y轴)530mm x 300mm

XWAYLAND2连接1024x600+0+480倒置(正常左倒置右x轴y轴)150mm x 90mm

让它检测出 1024x600+0+480 是唯一的,这样最容易吗?

相关内容