接続されたモニターを区別するには?

接続されたモニターを区別するには?

ラップトップが接続されているときにXserverの表示レイアウトを自動的に変更するには、イベントが実際に発生するかどうかを検出する必要があります。どの接続されたモニターは、異なるモニターが接続されている複数のドッキングステーションを持つ複数のドッキングステーション設定を区別できます。 Linux(好ましくはPOSIXシェルコード)でこれはどのように可能ですか?

答え1

実際にドッキング(ドッキング解除)されたときにモニターを自動的に設定する方法を探している場合は、確認してください。自動整列私自身と似たようなことを始める前に(私とは異なり)。

特定のディスプレイ出力がモニターに接続されているかどうかを検出するための良い答えがあります。この質問には。最も興味深いのは/sys/class/drm/card0-*-*/statusまたはconnecteddisconnected

これはこの質問に記載されている問題を解決しませんが/sys/class/drm/card0-*-*/edid(キャッシュ)があるため、非常に似たアプローチを取ることができます。EDID(別名DDC情報)対応するモニター。運が良ければ、このデータにはモニターのシリアル番号も含まれているため、同じモニタータイプの設定を区別することも可能です( で確認できますedid-decode /sys/class/drm/.../edid)。

したがって、接続されているモニターグループを区別するために、同様の機能を持つ機能に基づく次のシェル機能を使用します。自動整列

# hash_sysfs_edid() simply concatenates the md5 hashes of all connected 
# monitors and hashes them again so that the output is always 32 characters long.
hash_sysfs_edid () {
  edid_hash=""
    for DEVICE in /sys/class/drm/card*-*; do
        [ -e "${DEVICE}/status" ] && grep -q "^connected$" "${DEVICE}/status" || continue
      edid_hash="${edid_hash}"$(md5sum "${DEVICE}/edid" | awk '{print $1}')
    done
  echo $(echo "$edid_hash" | md5sum | awk '{print $1}')
}

関連情報