xrandr:如何检查是否镜像屏幕

时间:2019-02-14 12:31:44

标签: bash xrandr

用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

1 个答案:

答案 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+00+0。监视器镜像后,两个监视器的位置相同(0+0)。

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

我认为没有比这更干净的方法了。据我所知,您实际上并没有镜像或克隆监视器,而是仅以重叠的方式将它们的位置设置在屏幕上,并且在渲染时,两个监视器都显示相同的图片,因为它们位于相同的位置。这就是为什么没有真正简单的方法来测试镜像屏幕的原因。


1 侧面说明:该监视器是使用以下命令克隆的

xrandr --output HDMI-0 --same-as DisplayPort-0