
ユーザーが外部モニターを接続している場合(コネクターが接続されている場合など)にのみ、自分のアプリケーションに通知を送信したいと思います。
私のコマンド出力udevadm info -a -p /sys/class/drm/card1-VGA-2
:
looking at device '/devices/pci0000:00/0000:00:02.0/drm/card1/card1-VGA-2':
KERNEL=="card1-VGA-2"
SUBSYSTEM=="drm"
DRIVER==""
ATTR{edid}==""
ATTR{dpms}=="On"
ATTR{enabled}=="enabled"
ATTR{status}=="connected"
looking at parent device '/devices/pci0000:00/0000:00:02.0/drm/card1':
KERNELS=="card1"
SUBSYSTEMS=="drm"
DRIVERS==""
ATTRS{gt_RP1_freq_mhz}=="650"
ATTRS{gt_min_freq_mhz}=="650"
ATTRS{gt_RPn_freq_mhz}=="650"
ATTRS{gt_RP0_freq_mhz}=="1300"
ATTRS{gt_cur_freq_mhz}=="650"
ATTRS{gt_max_freq_mhz}=="1300"
looking at parent device '/devices/pci0000:00/0000:00:02.0':
KERNELS=="0000:00:02.0"
SUBSYSTEMS=="pci"
DRIVERS=="i915"
ATTRS{irq}=="48"
ATTRS{subsystem_vendor}=="0x17aa"
ATTRS{broken_parity_status}=="0"
ATTRS{class}=="0x030000"
ATTRS{driver_override}=="(null)"
ATTRS{consistent_dma_mask_bits}=="40"
ATTRS{dma_mask_bits}=="40"
ATTRS{local_cpus}=="00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,0000000f"
ATTRS{device}=="0x0126"
ATTRS{enable}=="1"
ATTRS{msi_bus}==""
ATTRS{local_cpulist}=="0-3"
ATTRS{vendor}=="0x8086"
ATTRS{subsystem_device}=="0x21d3"
ATTRS{boot_vga}=="1"
ATTRS{numa_node}=="-1"
ATTRS{d3cold_allowed}=="1"
looking at parent device '/devices/pci0000:00':
KERNELS=="pci0000:00"
SUBSYSTEMS==""
DRIVERS==""
私のudevルールが次の場合:
KERNEL=="card1", SUBSYSTEM=="drm", ATTR{status}=="connected", ACTION=="change", ENV{DISPLAY}=":0", ENV{XAUTHORITY}="/home/smidla/.Xauthority", RUN+="/home/smidla/test.sh"
何も起こりませんが、部品を取り外すとATTR{status}=="connected"
外部
test.sh
モニターを差し込んで抜く際の性能が出ます。
ただし、モニターを接続する場合にのみ通知が必要です。私のハードウェアでは、これらの操作によりシステムの速度が数秒遅くなるため、使用またはxrandr
読み取ることができません。/sys/class/drm/card1-VGA-2/status
この問題をどのように解決できますか?