diff options
author | Jonas Ã…dahl <jadahl@gmail.com> | 2021-10-01 09:52:15 +0200 |
---|---|---|
committer | Marge Bot <marge-bot@gnome.org> | 2022-01-25 16:25:48 +0000 |
commit | b5f99bd12ebc483e682e39c8126a1b51772bc67d (patch) | |
tree | 91666370dc98a32c00c4e76c28184911215cbbb7 /doc | |
parent | b49421d8e8c73447872de571620649309e774708 (diff) | |
download | mutter-b5f99bd12ebc483e682e39c8126a1b51772bc67d.tar.gz |
doc: Add monitor configuration documentation
This describes how the `monitors.xml` file work, and how to override the
newly introduced configurable policy.
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/2030>
Diffstat (limited to 'doc')
-rw-r--r-- | doc/monitor-configuration.md | 105 |
1 files changed, 105 insertions, 0 deletions
diff --git a/doc/monitor-configuration.md b/doc/monitor-configuration.md new file mode 100644 index 000000000..46c107837 --- /dev/null +++ b/doc/monitor-configuration.md @@ -0,0 +1,105 @@ +Monitor configuration +===================== + +File locations +-------------- + +Monitor configurations are stored as XML files called `monitors.xml` on the file +system. There are two types of locations for the XML file: the system level and +the user level. + +The directories for system level configuration is defined in accordance to the +$XDG_CONFIG_DIRS environment variable defined in the XDG Base Directory +Specification. The default is `/etc/xdg/monitors.xml`. + +The directory for the user level configuration is defined in accordance to the +$XDG_CONFIG_HOME environment variable defined in the XDG Base Directory +Specification. The default is `~/.config/monitors.xml` + +File contents +------------- + +A configuration file consists of an XML document with the root element +`<monitors version="2">`. In this document multiple configurations are stored as +individual `<configuration/>` elements containing all the details of the monitor +setup. The `version` attribute must be set to `"2"`. + +Each configuration corresponds to a specific hardware setup, where a given set +of monitors are connected to the computer. There can only be one configuration +per hardware setup. + +Writing configuration +--------------------- + +Monitor configurations are managed by Mutter via the Display panel in Settings, +which uses a D-Bus API to communicate with Mutter. Each time a new configuration +is applied and accepted, the user level configuration file is replaced with +updated content. + +Previously defined monitor configurations for hardware state other than the +current are left intact. + +Configuration policy +-------------------- + +The monitor configuration policy determines how Mutter configures monitors. This +can mean for example in what order configuration files should be preferred, or +whether configuration via Settings (i.e. D-Bus) should be allowed. + +The default policy is to prioritize configurations defined in the user level +configuration file, and to allow configuring via D-Bus. + +Changing the policy is possible by manually adding a `<policy/>` element inside +the `<monitors version="2"/>` element in the `monitors.xml` file. Note that +there may only be one `<policy/>` element in each configuration file. + +### Changing configuration file priority policy + +To change the order of configuration file priority, or to disable configuration +files completely, add a `<stores/>` element inside the `<policy/>` element +described above. + +In this element, the file policy is defined by a `<stores/>` element, which +lists stores with the order according to prioritization. Each store is specified +using a `<store/>` element with either `system` or `user` as the content. + +#### Example of only reading monitor configuration from the system level file: + +```xml +<monitors version="2"> + <policy> + <stores> + <store>system</store> + </stores> + </policy> +</monitors> +``` + +#### Example of reversing the priority of monitor configuration: + +```xml +<monitors version="2"> + <policy> + <stores> + <store>user</store> + <store>system</store> + </stores> + </policy> +</monitors> +``` + +### Changing D-Bus configuration policy + +D-Bus configureability can be configured using a `<dbus/>` element in the +`<policy/>` element. It's content should either be `yes` or `no` depending on +whether monitor configuration via D-Bus should be enabled or disable. + +#### Example of how to disable monitor configuration via D-Bus: + +```xml +<monitors version="2"> + <policy> + <dbus>no</dbus> + </policy> +</monitors> +``` |