Linux 无头自动检测监视器

Linux 无头自动检测监视器

我有一个运行 Debian 11 的信息亭系统,带有板载 GPU (intel),使用 UEFI 运行。显示器的端口是VGA。

目前它使用 getty override 自动登录(参考) 并调用startxtty1。我们不使用显示管理器。

然后它将启动一个openbox-session,然后启动 vnc 和单个应用程序。

if [[ "$(tty)" == '/dev/tty1' ]]; then
    exec xinit $HOME/.xinitrc -- /etc/X11/xinit/xserverrc :0 vt1
fi

如果在启动前连接了显示器,那么如果我稍后拔下并重新插入显示器,它将正常显示。

但如果开机时没有显示器插头。以后我将无法插入显示器(屏幕永远保持空白)。

启动期间openbox-session和应用程序均成功启动(可以从vnc查看)

我尝试使用 xserver-driver-xorg-video-dummy 并创建 /etc/X11/xorg.dummy.conf。
当所有组件正在运行时,openbox-session 不知何故未加载到屏幕中。
目前在 xorg.log 中没有看到任何明显的错误

if [[ "$(tty)" == '/dev/tty1' ]]; then
    exec xinit $HOME/.xinitrc -- /etc/X11/xinit/xserverrc :0 vt1 -config xorg.dummy.conf
fi

xorg.dummy.conf文件

我尝试使用 Xvfb 但我认为它不适合这个。虽然没有任何问题,但同样的问题仍然存在。

有可能实现这一目标吗?
目前,如果我在重新启动时忘记连接显示器,我需要重新重新启动它。

答案1

问题不在x服务器或显示管理器中,实际上是在

而 xfce、gnome、etchave 自动检测监视器插头 openbox 显然没有
使用 xrandr 来完成这项工作( autorandr 不起作用)

在 .config/openbox/autostart 中

while true; do
    # Grep first connected display 
    FIRSTDISPLAY=$(xrandr | grep " connected " | awk '{ print$1 }' | head -n 1)
    # Force on
    xrandr --output ${FIRSTDISPLAY} --auto
    # Kill dpms, require to rerun incase display replug
    xset -dpms
    xset s noblank
    xset s off
    sleep 1
done

相关内容