現在の物理モニターを使用するか、アクティブな仮想端末で実行されているXサーバーのディスプレイ番号をどのように見つけることができますか?

現在の物理モニターを使用するか、アクティブな仮想端末で実行されているXサーバーのディスプレイ番号をどのように見つけることができますか?

x11vnc再起動するまでVNCを無効にする恐ろしい黒い画面を修正する起動スクリプトを作成しています。これまでに、最新の/run/sddm/*ファイルを使用して次に変更して:0解決策を見つけました。n-1そのファイルがあります。ただし、これは推測にすぎず、ユーザーの切り替えが最後にディスプレイセッションを追加してから削除した場合にのみ機能します。最後のプロジェクトではなくプロジェクトに切り替えると、どのモニタを使用しているのかわからなくなり、問題が再び発生します。これまでの進捗状況:

#!/bin/sh

while true; do
lso=`ls -t /run/sddm/{* | grep -m1 -`
cnt=$((`ls /run/sddm/{* | grep -c -`-1))
/usr/bin/x11vnc -auth $lso -once -noxdamage -repeat -rfbauth /home/USER/.vnc/passwd -rfbport 5900 -shared -display :$cnt
usleep 400000
done

最も重要なのは、これを削除し、-foreverサーバー-loopを再ロードして接続するたびに新しいディスプレイ構成を提供することです。

:0たとえば、正しいX Cookieファイル(ディスプレイ番号がわかっている場合はこれを行うことができます)を見つけるには現在のディスプレイが必要です。正しいモニターの画像を:1表示するには正しい出力が必要です。

すべてのアップデートを含むKubuntu 18.04で実行されます。

ベストアンサー1

Xvfb現在Linux vt(noまたは)で実行されているXorgサーバーの表示番号を見つけるには、xnest次のようにします(@basinの要件を満たす)。コメント)

pgrep -at "$(cat /sys/class/tty/tty0/active)" Xorg | grep -Po ' \K:[0-9]+'

-t ttypgrepオプションは制御端末を持つプロセスを選択し、ttyこの-aオプションはコマンドライン全体を印刷するように指示します。 2番目のgrepはプロセスからディスプレイ番号を抽出します。

もちろん、ユーザーがCtrl-Alt-Fnを介してテキストコンソールに切り替えると、何も印刷されません。

おすすめ記事