![在每个显示器上显示显示器编号](https://linux22.com/image/42533/%E5%9C%A8%E6%AF%8F%E4%B8%AA%E6%98%BE%E7%A4%BA%E5%99%A8%E4%B8%8A%E6%98%BE%E7%A4%BA%E6%98%BE%E7%A4%BA%E5%99%A8%E7%BC%96%E5%8F%B7.png)
在 Windows 上,有一个选项可以单击显示属性中名为“识别显示器”的按钮,然后它会在每个显示器上显示一个数字几秒钟,以便您知道哪个显示器是哪个。 Linux中有类似的东西吗?
我正在运行 Arch,并且有六 (6) 个相同的 LCD 平板、3 个双头 NVidia 卡。所以你可以想象我为什么问:P
答案1
请注意(正如指出的维兰德 H.,此答案假设视频驱动程序运行良好。 Nvidia的专有驱动程序(以前是双头操作所必需的,我不知道Nouveau是否仍然如此)不使用标准的RandR扩展,所以如果你使用它,我的大部分答案将毫无用处并且您需要寻找特定于nvidia
驱动程序的答案。
kcontrol
在 KDE 下,控制中心( 、 KDE 3 )或系统设置( 、 KDE 4 ) “显示”面板中的“多显示器”选项卡就systemsettings
具有此功能(单击“识别所有显示器”)。您不必将 KDE 作为桌面环境运行即可使用此功能,只需安装正确的组件即可。
如果您更喜欢手动执行操作,以下代码片段会解析来自兰德尔。它专门查找诸如 之类的行,该行给出了监视器的DVI-0 connected 1600x1200+3200+0 …
位置(距左侧 3200 像素,距顶部 0 像素)、尺寸(宽度 1600、高度 1200)和名称 ( )。DVI-0
它使用 来显示包含此信息的弹出窗口kdialog
。kdialog
一旦其中一个实例返回,脚本就会杀死所有实例,当您单击任何弹出窗口时就会发生这种情况。
任何其他类似于的程序kdialog
都可以,只要您可以指定弹出窗口的位置(众所周知的 不是这种情况zenity
)。shell 必须是 ksh(可以是 pdksh 或 ATT ksh),因为其他 shell(至少是 bash 和 zsh)在存在多个作业时表现不够好(具体来说,它们的wait
内置不会被 SIGCHLD 中断)。
LC_ALL=C xrandr |
sed -ne 's/^\([^ ][^ ]*\) *connected *\([0-9][0-9]*\)x\([0-9][0-9]*\)+\([0-9][0-9]*\)+\([0-9][0-9]*\) .*$/\1 \2 \3 \4 \5/p' |
ksh -c '
i=1
trap "trap - CHLD" CHLD
trap : INT
while read -r name w h x y; do
kdialog --geometry +$(($x+2*$w/5))+$(($y+2*$h/5)) \
--passivepopup "$i $name ${w}x${h} +$x+$y" &
i=$(($i+1))
done
sleep 10 & # Time out after 10 seconds
wait # Wait until any of the kdialog instances or sleep returns
while [ $i -ne 0 ]; do
kill %$i 2>/dev/null
i=$(($i-1))
done
[ $first -eq 0 ] || echo You clicked on monitor $first
'