* Adrián López
* andersonjacob
+* Alexander Lochmann
* Alexander Wirt
* Brice Waegeneire
* Chris Dunder
* Christoph Gysin
+* Christophe-Marie Duquesne
* Daniel Hahler
* Maciej Sitarz
* Mathias Svensson
* Tomasz Bogdal
* Victor Häggqvist
* Jan-Oliver Kaiser
+* Alexandre Viau
## Installation/removal
If you prefer to have a system wide install managed by your package manager,
you can
-* Use the [aur package](https://aur.archlinux.org/packages/autorandr-git/) on Arch
+* Use the [official Arch package](https://www.archlinux.org/packages/community/any/autorandr/).
* Use the [official Debian package](https://packages.debian.org/sid/x11/autorandr) on sid
-* Use the [ebuild from zugaina](https://gpo.zugaina.org/x11-misc/autorandr) on Gentoo.
+* Use the [FreeBSD Ports Collection](https://www.freshports.org/x11/autorandr/) on FreeBSD.
+* Use the [official Gentoo package](https://packages.gentoo.org/packages/x11-misc/autorandr).
* Use the
[nix package](https://github.com/NixOS/nixpkgs/blob/master/nixos/modules/services/misc/autorandr.nix)
on NixOS.
+* Use the
+ [guix package](https://git.savannah.gnu.org/cgit/guix.git/log/gnu/packages/xdisorg.scm?qt=grep&q=autorandr)
+ on Guix.
+* Use the [SlackBuild](https://slackbuilds.org/repository/14.2/desktop/autorandr/) on Slackware.
* Use the automated nightlies generated by the
[openSUSE build service](https://build.opensuse.org/package/show/home:phillipberndt/autorandr)
for various distributions (RPM and DEB based).
+* Use the [X binary package system](https://wiki.voidlinux.eu/XBPS)' on Void Linux
* Build a .deb-file from the source tree using `make deb`.
+* Build a .rpm-file from the source tree using `make rpm`.
We appreciate packaging scripts for other distributions, please file a pull
request if you write one.
as the default configuration without you having to change the system-wide
configuration.
-You can store default values for any option in an INI-file in
-`~/.config/autorandr/settings.ini` in a section `config`. The most useful
-candidate for doing that is `skip-options`, if you need it.
+You can store default values for any option in an INI-file located at
+`~/.config/autorandr/settings.ini`. In a `config` section, you may place any
+default values in the form `option-name=option-argument`.
+
+A common and effective use of this is to specify default `skip-options`, for
+instance skipping the `gamma` setting if using
+[`redshift`](https://github.com/jonls/redshift) as a daemon. To implement
+the equivalent of `--skip-options gamma`, your `settings.ini` file should look
+like this:
+
+```
+[config]
+skip-options=gamma
+```
## Advanced usage
### Hook scripts
-Three more scripts can be placed in the configuration directory (as
+Three more scripts can be placed in the configuration directory
(as defined by the [XDG spec](https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html),
usually `~/.config/autorandr` or `~/.autorandr` if you have an old installation
for user configuration and `/etc/xdg/autorandr` for system wide configuration):
Instead (or in addition) to these scripts, you can also place as many executable
files as you like in subdirectories called `script_name.d` (e.g. `postswitch.d`).
+The order of execution of scripts in these directories is by file name, you can
+force a certain ordering by naming them `10-wallpaper`, `20-restart-wm`, etc.
If a script with the same name occurs multiple times, user configuration
takes precedence over system configuration (as specified by the
it has a unique name.
If you switch back from `docked` to `mobile`, `~/.config/autorandr/postswitch`
-is executed instead of the `mobile` specific `postswitch`.
+is executed instead of the `docked` specific `postswitch`.
+
+If you experience issues with xrandr being executed too early after connecting
+a new monitor, then you can use a `predetect` script to delay the execution.
+Write e.g. `sleep 1` into that file to make autorandr wait a second before
+running `xrandr`.
+
+#### Variables
-In these scripts, some of autorandr's state is exposed as environment variables
+Some of autorandr's state is exposed as environment variables
prefixed with `AUTORANDR_`, such as:
- `AUTORANDR_CURRENT_PROFILE`
- `AUTORANDR_CURRENT_PROFILES`
- `AUTORANDR_PROFILE_FOLDER`
- `AUTORANDR_MONITORS`
-If you experience issues with xrandr being executed too early after connecting
-a new monitor, then you can use a `predetect` script to delay the execution.
-Write e.g. `sleep 1` into that file to make autorandr wait a second before
-running `xrandr`.
+with the intention that they can be used within the hook scripts.
+
+For instance, you might display which profile has just been activated by
+including the following in a `postswitch` script:
+```sh
+notify-send -i display "Display profile" "$AUTORANDR_CURRENT_PROFILE"
+```
+
+The one kink is that during `preswitch`, `AUTORANDR_CURRENT_PROFILE` is
+reporting the *upcoming* profile rather than the *current* one.
### Wildcard EDID matching
monitors using the usual file name globbing rules. This can be used to create
profiles matching multiple (or any) monitors.
+### udev triggers with NVidia cards
+
+In order for `udev` to detect `drm` events from the native NVidia driver, the
+kernel parameter `nvidia-drm.modeset` must be set to 1. For example, add a file
+`/etc/modprobe.d/nvidia-drm-modeset.conf`:
+
+```
+options nvidia_drm modeset=1
+```
+
## Changelog
+**autorandr 1.13.3**
+* *2023-01-24* Revert udev rule to rely on "change" event (see #324)
+
+**autorandr 1.13.2**
+* *2023-01-23* Fix autostart in KDE (see #320)
+* *2023-01-23* Match add/remove rather than change in udev rule (see #321)
+* *2023-01-23* Fix wildcard use in EDIDs (see #322)
+* *2023-01-23* Do a final xrandr call to set the frame buffer size (see #319)
+
+**autorandr 1.13.1**
+* *2023-01-16* Fix bug with Version comparison
+
+**autorandr 1.13**
+* *2023-01-15* Add reversed horizontal/vertical profiles
+* *2023-01-15* Fix distutils deprecation warning
+* *2023-01-15* Print error when user script fails
+* *2022-12-01* Support `--skip-options set` to skip setting properties
+
+**autorandr 1.12.1**
+* *2021-12-22* Fix `--match-edid` (see #273)
+
+**autorandr 1.12**
+* *2021-12-16* Switch default interpreter to Python 3
+* *2021-12-16* Add `--list` to list all profiles
+* *2021-12-16* Add `--cycle` to cycle all detected profiles
+* *2021-12-16* Store display properties (see #204)
+
+**autorandr 1.11**
+* *2020-05-23* Handle empty sys.executable
+* *2020-06-08* Fix Python 2 compatibility
+* *2020-10-06* Set group membership of users in batch mode
+
+**autorandr 1.10.1**
+* *2020-05-04* Revert making the launcher the default (fixes #195)
+
+**autorandr 1.10**
+* *2020-04-23* Fix hook script execution order to match description from readme
+* *2020-04-11* Handle negative gamma values (fixes #188)
+* *2020-04-11* Sort approximate matches in detected profiles by quality of match
+* *2020-01-31* Handle non-ASCII environment variables (fixes #180)
+* *2019-12-31* Fix output positioning if the top-left output is not the first
+* *2019-12-31* Accept negative gamma values (and interpret them as 0)
+* *2019-12-31* Prefer the X11 launcher over systemd/udev configuration
+
+**autorandr 1.9**
+
+* *2019-11-10* Count closed lids as disconnected outputs
+* *2019-10-05* Do not overwrite existing configurations without `--force`
+* *2019-08-16* Accept modes that don't match the WWWxHHH pattern
+* *2019-03-22* Improve bash autocompletion
+* *2019-03-21* Store CRTC values in configurations
+* *2019-03-24* Fix handling of recently disconnected outputs (See #128 and #143)
+
+**autorandr 1.8.1**
+
+* *2019-03-18* Removed mandb call from Makefile
+
+**autorandr 1.8**
+
+* *2019-02-17* Add an X11 daemon that runs autorandr when a display connects (by @rliou92, #127)
+* *2019-02-17* Replace width=0 check with disconnected to detect disconnected monitors (by @joseph-jones, #139)
+* *2019-02-17* Fix handling of empty padding (by @jschwab, #138)
+* *2019-02-17* Add a man page (by @somers-all-the-time, #133)
+
+**autorandr 1.7**
+
+* *2018-09-25* Fix FB size computation with rotated screens (by @Janno, #117)
+
**autorandr 1.6**
* *2018-04-19* Bugfix: Do not load default profile unless --change is set