如何强制虚拟监视器始终作为次要监视器?

如何强制虚拟监视器始终作为次要监视器?

创建虚拟显示器,以便 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

相关内容