首页 > 解决方案 > 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

标签: bashxrandr

解决方案


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

推荐阅读