Linuxヘッドレス自動検出モニタ

Linuxヘッドレス自動検出モニタ

UEFIを使用して実行されるオンボードGPU(Intel)を搭載したDebian 11を実行するキオスクシステムがあります。モニターポートはVGAです。

現在は、gettyオーバーライドを使用して自動ログインします(引用する)とstartxtty1を呼び出します。私たちはディスプレイマネージャを使用しません。

openbox-session次に1つを起動し、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、およびethaveは自動的にモニタープラグを検出し、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

関連情報