Prevent (?) GNOME 40 from resetting all monitor orientation on every reboot
by obobskivich from LinuxQuestions.org on (#5T83E)
Setup: Ubuntu 21.10 with GNOME 40 ('About' says 40.4.0) running on X11
Issue: I have a multi-monitor/multi-GPU system, I spent time configuring it to match the physical arrangement of the monitors, and created some 'profiles' in ARandR (an xrandr front-end), everything was working fine. Then I rebooted and GNOME decided none of that matters anymore, and completely resets all monitors + re-numbers/renames them, which kills all of the xrandr presets (because they don't apply to anything sane anymore).
Is there a way to stop this behavior and have it apply the settings I've applied as persistent between reboots?
Update: Some more digging around with xrandr and the issue seems to be that GNOME randomly re-names display devices on startup, so instead of physical monitor A always being 'DisplayPort-1' it can be whatever is decided (?) - e.g. it might be 'DisplayPort-5' tomorrow. Since xrandr relies on these names to address the devices, it becomes incoherent/inapplicable since the names change (this reminds me of the perils of using block devices in fstab instead of UUIDs). Is there anything like UUID for physical monitors to get around this?
Update 2: More digging - it seems the issue is related to how the system is bringing up GPUs which leads to enumeration of the displays - if it brings up 'GPU #1' first, everything goes back to working, if it brings up 'GPU #2' (or whatever) first, the assignments shift (put onto this path from here: https://forum.manjaro.org/t/displayp...h-reboot/52347). I tried rebooting (on the reasoning that this system only has 2 GPUs, unlike 3 as in the Manjaro thread, and it can thus logically only have 2 states) and things went back to 'working' (as in, the DP assignments are all expected so xrandr knows what its looking at). This leads to a second potential idea: is there a way to ascertain the init order of GPUs and/or specify it manually? Their bus IDs are not changing, and they also always seem to be defined in the same way in /dev/dri (as card0 and card1) and xrandr (as provider-0 and provider-1; in this case card1 always seems to be defined as provider-0), but that seems to not be what I'm looking for because it can still end up with them 'reversed' which causes the DisplayPort outputs to be re-enumerated.
Summary questions:
- Is there something akin to UUID for physical monitors?
- Is there a way to ascertain and/or define the startup behavior (ordering) of GPUs?
Issue: I have a multi-monitor/multi-GPU system, I spent time configuring it to match the physical arrangement of the monitors, and created some 'profiles' in ARandR (an xrandr front-end), everything was working fine. Then I rebooted and GNOME decided none of that matters anymore, and completely resets all monitors + re-numbers/renames them, which kills all of the xrandr presets (because they don't apply to anything sane anymore).
Is there a way to stop this behavior and have it apply the settings I've applied as persistent between reboots?
Update: Some more digging around with xrandr and the issue seems to be that GNOME randomly re-names display devices on startup, so instead of physical monitor A always being 'DisplayPort-1' it can be whatever is decided (?) - e.g. it might be 'DisplayPort-5' tomorrow. Since xrandr relies on these names to address the devices, it becomes incoherent/inapplicable since the names change (this reminds me of the perils of using block devices in fstab instead of UUIDs). Is there anything like UUID for physical monitors to get around this?
Update 2: More digging - it seems the issue is related to how the system is bringing up GPUs which leads to enumeration of the displays - if it brings up 'GPU #1' first, everything goes back to working, if it brings up 'GPU #2' (or whatever) first, the assignments shift (put onto this path from here: https://forum.manjaro.org/t/displayp...h-reboot/52347). I tried rebooting (on the reasoning that this system only has 2 GPUs, unlike 3 as in the Manjaro thread, and it can thus logically only have 2 states) and things went back to 'working' (as in, the DP assignments are all expected so xrandr knows what its looking at). This leads to a second potential idea: is there a way to ascertain the init order of GPUs and/or specify it manually? Their bus IDs are not changing, and they also always seem to be defined in the same way in /dev/dri (as card0 and card1) and xrandr (as provider-0 and provider-1; in this case card1 always seems to be defined as provider-0), but that seems to not be what I'm looking for because it can still end up with them 'reversed' which causes the DisplayPort outputs to be re-enumerated.
Summary questions:
- Is there something akin to UUID for physical monitors?
- Is there a way to ascertain and/or define the startup behavior (ordering) of GPUs?