Bash xrandr:如何检查镜像屏幕

Bash xrandr:如何检查镜像屏幕,bash,xrandr,Bash,Xrandr,用什么干净的方法来检查我的监视器是否使用xrandr镜像 背景 我正在使用polybar,现在我有一个脚本,如果我的第二个显示器连接上,它会启动一个额外的polybar。问题是,当我镜像时,我不想启动第二个条。如果有人好奇,这是我的密码: #!/bin/bash # Terminate already running bar instances killall -q polybar # Wait until the processes have been shut down while pg

用什么干净的方法来检查我的监视器是否使用xrandr镜像

背景
我正在使用polybar,现在我有一个脚本,如果我的第二个显示器连接上,它会启动一个额外的polybar。问题是,当我镜像时,我不想启动第二个条。如果有人好奇,这是我的密码:

#!/bin/bash

# Terminate already running bar instances
killall -q polybar

# Wait until the processes have been shut down
while pgrep -u $UID -x polybar >/dev/null; do sleep 1; done

# Launch bar 
polybar main_bar -r & 

my_laptop_external_monitor=$(xrandr --query | grep 'HDMI-1')
if [[ $my_laptop_external_monitor = *connected* ]]; then
    polybar external_bar &
fi
我在我的系统上运行了
xrandr--listmonitors
,包括克隆的监视器和未克隆的监视器:

未克隆:

克隆的

唯一的区别是输出在屏幕中的位置,
1920+0
vs
0+0
。镜像监视器时,两个监视器的位置相同(均
0+0

如果以这种方式镜像监视器1,检查监视器是否镜像的一个好方法是比较它们在
xrandr--listmonitors
输出中的位置

我认为没有比这更干净的方法了。据我所知,你实际上并没有镜像或克隆监视器,你只是在屏幕内部设置它们的位置,使它们重叠。渲染时,两个监视器显示相同的图片,因为它们位于同一位置。这就是为什么没有一种直接的方法来测试镜像屏幕


1旁注:监视器是用以下命令克隆的

xrandr——输出HDMI-0——与DisplayPort-0相同

好的,如果我理解正确,那么镜像时两者的位置都将是
0+0
,无论外部监视器的分辨率如何(我使用的外部监视器的分辨率不同)@MattiasJohnson是的,这很有可能,特别是如果您最多有两个监视器,但你必须亲自测试才能绝对确定。外部监视器的分辨率应该无关紧要,因为它将缩放到主监视器的分辨率。
Monitors: 2
 0: +*DisplayPort-0 1920/598x1080/336+1920+0  DisplayPort-0
 1: +HDMI-0 1920/598x1080/336+0+0  HDMI-0
Monitors: 2
 0: +*DisplayPort-0 1920/598x1080/336+0+0  DisplayPort-0
 1: +HDMI-0 1920/598x1080/336+0+0  HDMI-0