Hello,
I have a multi-monitor setup: four monitors in total, but one of them is in mirror mode. I would like to always create a fixed 1920×3×1080 surface, effectively ignoring hotplug events for certain connectors.
The motivation is that some applications (e.g., ags or hyprpanel) panic whenever the full surface disappears — for example, if all displays are cycled off, or if a single monitor is turned off and back on.
I was thinking whether it would be possible to map real monitors to virtual outputs, e.g.:
-
Create virtual outputs
wl-1,wl-2,wl-3 -
Map my real displays (including the mirrored one) to these virtual outputs
-
Hotplug events could still occur, but the overall layout wouldn’t change, so applications relying on a stable surface wouldn’t crash
I’ve also tried kernel-level EDID overrides to “freeze” monitor connections, which works in the sense that the kernel always sees monitors as connected. However, udev still emits change events when monitors cycle on/off, and I couldn’t find a way to reliably disable those:
ACTION=="change", SUBSYSTEM=="drm", ENV{CONNECTOR}=="100", ENV{HOTPLUG}=="1", ENV{IGNORE_HOTPLUG}="1"
I might be missing a simpler solution, but I haven’t found one. I suspect this is somewhat of a unique case, and I’m wondering:
-
Is there a supported way to maintain a fixed virtual surface while still mapping real monitors?
-
Or could I somehow ignore hotplug for specific monitors?
Thanks in advance for any guidance or suggestions!