Use less generic name for monitors.xml to avoid clashing with other desktops
- "$HOME/.config/monitors.xml" is not installed by default in Ubuntu during the installation at this writing, you have to generate it by running the GUI preferences
$ gnome-control-center display
for GNOME, and$ mate-display-properties
for MATE. - Both GNOME and MATE can be run on the same distro, which causes compatibility issues with monitors.xml: monitors.xml in Ubuntu 22.04, and 23.04 (GNOME) is starting with
<monitors version="2">
, while in Ubuntu MATE 22.04, and 23.04 it is starting with<monitors version="1">
- The monitors.xml file name for MATE is defined at https://github.com/mate-desktop/mate-desktop/blob/master/libmate-desktop/mate-rr-config.c#L44, and for GNOME it is defined at #2919 (comment 1799008).
Expected behaviour
cinnamon is using a dedicated name, cinnamon-monitors.xml. This doesn't cause the file to be overwritten by the display preferences if other desktop environment are used on the same distro. If MATE and GNOME followed the same approach, the file name would be mate-monitors.xml, and gnome-monitors.xml, respectively.
Actual behaviour
monitors.xml in Ubuntu 23.10, 23.04, and 22.04:
<monitors version="2">
<configuration>
<logicalmonitor>
<x>0</x>
<y>0</y>
<scale>1</scale>
<primary>yes</primary>
<monitor>
<monitorspec>
<connector>Virtual-1</connector>
<vendor>unknown</vendor>
<product>unknown</product>
<serial>unknown</serial>
</monitorspec>
<mode>
<width>1600</width>
<height>900</height>
<rate>60.000</rate>
</mode>
</monitor>
</logicalmonitor>
</configuration>
</monitors>
monitors.xml in Ubuntu 22.04 (with ubuntu-mate-desktop installed), or 23.04 (with ubuntu-mate-desktop installed):
<monitors version="2">
<configuration>
<migrated/>
<logicalmonitor>
<x>0</x>
<y>0</y>
<primary>yes</primary>
<monitor>
<monitorspec>
<connector>Virtual-1</connector>
<vendor>???</vendor>
<product>0x0000</product>
<serial>0x00000000</serial>
</monitorspec>
<mode>
<width>1600</width>
<height>900</height>
<rate>60.000</rate>
</mode>
</monitor>
</logicalmonitor>
</configuration>
<configuration>
<logicalmonitor>
<x>0</x>
<y>0</y>
<scale>1</scale>
<primary>yes</primary>
<monitor>
<monitorspec>
<connector>Virtual-1</connector>
<vendor>unknown</vendor>
<product>unknown</product>
<serial>unknown</serial>
</monitorspec>
<mode>
<width>1280</width>
<height>800</height>
<rate>59.810</rate>
</mode>
</monitor>
</logicalmonitor>
</configuration>
</monitors>
monitors.xml in Ubuntu MATE 22.04, Ubuntu MATE 23.04, ubuntu-mate-desktop from Ubuntu 22.04, or ubuntu-mate-desktop from Ubuntu 23.04:
<monitors version="1">
<configuration>
<clone>no</clone>
<output name="Virtual-1">
<vendor>???</vendor>
<product>0x0000</product>
<serial>0x00000000</serial>
<width>1600</width>
<height>900</height>
<rate>60</rate>
<x>0</x>
<y>0</y>
<rotation>normal</rotation>
<reflect_x>no</reflect_x>
<reflect_y>no</reflect_y>
<primary>yes</primary>
</output>
<output name="Virtual-2">
</output>
<output name="Virtual-3">
</output>
<output name="Virtual-4">
</output>
</configuration>
</monitors>
Steps to reproduce the behaviour
Steps I used to reproduce the issue in Ubuntu 22.04 with ubuntu-mate-desktop installed:
- Log into GNOME
- Ubuntu comes with GNOME, so install MATE in addition:
sudo apt-get install mate-desktop-environment-extras mate-desktop-environment
- Log out, and log in to MATE.
- Run
$ mate-display-properties
, just click on the "Apply" button (you don't have to click on the "Keep this configuration" button that pop-ups in the dialoge-box), it will generate "$HOME/.config/monitors.xml" - Log out from MATE. From the display manager, log into GNOME.
- As you can see, the screen resolution (1600x900 configured in MATE) not used by GNOME (https://github.com/mate-desktop/mate-control-center/assets/6416073/1b978bd7-22dd-4b42-a5b5-d32ec2d42f21), instead a fallback resolution is used.
- Run
$ gnome-control-center display
, change the "Resolution" to 1600x900, click on the "Apply": This will 1) move"$HOME/.config/monitors.xml"
(that was generated by MATE) to"$HOME/.config/monitors-v1-backup.xml"
2) generate a new "$HOME/.config/monitors.xml" 3) Change the screen resolution directly (https://github.com/mate-desktop/mate-control-center/assets/6416073/6a841086-6936-4a21-9d43-ca1a605a9806). Close the window. - Log out from GNOME. From the display manager, log into MATE.
- As you can see, the screen resolution (1600x900 configured in GNOME) not used by MATE (https://github.com/mate-desktop/mate-control-center/assets/6416073/adffa08e-cf08-499d-8dc3-9e7800e4d7e9), instead a fallback resolution is used.
MATE does not generate a backup file of monitors.xml if you run the above steps and starting with MATE first.
Package version
$ apt-cache show gnome-control-center
Package: gnome-control-center
Architecture: amd64
Version: 1:44.0-1ubuntu5
Priority: optional
Section: gnome
Origin: Ubuntu
Linux Distribution
Ubuntu MATE 22.04, Ubuntu 22.04
Link to bugreport
- Ubuntu MATE: [Feature request] mate-display-properties: Please upgrade monitors.xml from to - https://bugs.launchpad.net/ubuntu/+bug/2028818
- https://bugs.launchpad.net/ubuntu/+source/gnome-control-center/+bug/2028469
- https://github.com/mate-desktop/mate-control-center/issues/712