GNOME's Mutter Rolls Out New Monitor Configuration System
Of this new monitor configuration system, Jonas explained in this tracker bug, "moving all low level monitor logic (i.e. CRTC/connector/... things into mutter, hiding it behind a higher level configuration API). While the current API simply provides a getter and a setter for all KMS like state, the new will be placed a layer above, with a set of 'monitors' that can be placed in 'logical monitors'. One will be able to rotate a logical monitor, set a scale, place multiple monitors inside one (i.e. mirroring)."
The new monitor configuration system is just referred to as MetaMonitorConfigManager and the initial implementation landed today in Git, but it's not yet enabled by default.
The new monitor configuration system (MetaMonitorConfigManager) aims to replace the current MetaMonitorConfig. The main difference between the two is that MetaMonitorConfigManager works with higher level input (MetaMonitor, MetaMonitorMode) instead of directly looking at the CRTC and connector state. It still produces CRTC and connector configuration later applied by the respective backends.
Other difference the new system aims to introduce is that the configuration system doesn't manipulate the monitor manager state; that responsibility is left for the monitor manager to handle (it only manages configuration and creates CRTC/connector assignments, it doesn't apply anything).
The new configuration system allows backends to not rely on deriving the current configuration from the CRTC/connector state, as this may no longer be possible (i.e. when using KMS and multiple framebuffers).
The MetaMonitorConfigManager system is so far disabled by default, as it does not yet have all the features of the old system, but eventually it will replace MetaMonitorConfig which will at that point be removed. This will make it possible to remove old hacks introduced due to limitations in the old system.
Landing the initial code on MetaMonitorConfigManager was nearly 150 commits.
Excited to see it in action for improved monitor management and will hopefully be all squared away in time for the March release of GNOME 3.24.