![如何强制虚拟监视器始终作为次要监视器?](https://linux22.com/image/1205281/%E5%A6%82%E4%BD%95%E5%BC%BA%E5%88%B6%E8%99%9A%E6%8B%9F%E7%9B%91%E8%A7%86%E5%99%A8%E5%A7%8B%E7%BB%88%E4%BD%9C%E4%B8%BA%E6%AC%A1%E8%A6%81%E7%9B%91%E8%A7%86%E5%99%A8%EF%BC%9F.png)
创建虚拟显示器,以便 VNC 可以在没有物理显示器时工作:
/usr/share/X11/xorg.conf.d/20-intel.conf
:
Section "Device"
Identifier "intelgpu0"
Driver "intel"
Option "VirtualHeads" "2"
EndSection
启动脚本:
#!/bin/bash
/usr/bin/xrandr -d :0 --newmode "1600x900_60.00" 118.25 1600 1696 1856 2112 900 903 908 934 -hsync +vsync
/usr/bin/xrandr -d :0 --addmode VIRTUAL1 "1600x900_60.00"
/usr/bin/xrandr -d :0
killall -3 gnome-shell
就像https://askubuntu.com/a/1062890/391744
但当插入真实显示器时,它们会显示为辅助显示器。它们显示无趣的部分,没有可见的图形程序,也没有面板/底座。
如何配置以使任何非虚拟监视器自动成为主监视器?
目前,我只想出了这个脚本的附加功能来轮询所连接的监视器xrandr
:
(
while [ 1 ]; do
xrandr_out="$(LANG=C /usr/bin/xrandr -d :0)"
# If VIRTUAL is primary.
if egrep -q '^VIRTUAL[0-9]+[[:space:]]+connected[[:space:]]+primary' < <(printf '%s\n' "$xrandr_out"); then
# Find non-virtual that is connected.
non_virt="$(sed -nre 's/^([^[:space:]]+)[[:space:]]+connected.*/\1/p' < <(printf '%s\n' "$xrandr_out" | grep -v ^VIRTUAL) | head -n1)"
if [ -n "$non_virt" ]; then
xrandr -d :0 --output "$non_virt" --primary --pos 0x0
fi
fi
sleep 10
done
) & disown