用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
答案 0 :(得分:0)
我在有和没有克隆监视器的情况下都在系统上运行了xrandr --listmonitors
:
未克隆:
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
唯一的区别是输出在屏幕上的位置1920+0
与0+0
。监视器镜像后,两个监视器的位置相同(0+0
)。
如果您以这种方式镜像监视器 1 ,检查监视器是否镜像的一种好方法是比较它们在xrandr --listmonitors
输出中的位置。
我认为没有比这更干净的方法了。据我所知,您实际上并没有镜像或克隆监视器,而是仅以重叠的方式将它们的位置设置在屏幕上,并且在渲染时,两个监视器都显示相同的图片,因为它们位于相同的位置。这就是为什么没有真正简单的方法来测试镜像屏幕的原因。
1 侧面说明:该监视器是使用以下命令克隆的
xrandr --output HDMI-0 --same-as DisplayPort-0