mirror of
				https://gitlab.sectorq.eu/jaydee/omv_backup.git
				synced 2025-10-31 02:21:10 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			423 lines
		
	
	
		
			16 KiB
		
	
	
	
		
			Plaintext
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			423 lines
		
	
	
		
			16 KiB
		
	
	
	
		
			Plaintext
		
	
	
		
			Executable File
		
	
	
	
	
| Metadata-Version: 2.1
 | |
| Name: autorandr
 | |
| Version: 1.15.post1
 | |
| Summary: Automatically select a display configuration based on connected devices
 | |
| Home-page: https://github.com/phillipberndt/autorandr
 | |
| Author: Phillip Berndt
 | |
| Author-email: phillip.berndt@googlemail.com
 | |
| License: GPLv3
 | |
| Keywords: xrandr
 | |
| Platform: UNKNOWN
 | |
| Classifier: Environment :: Console
 | |
| Classifier: Intended Audience :: End Users/Desktop
 | |
| Classifier: License :: OSI Approved :: GNU General Public License v3 (GPLv3)
 | |
| Classifier: Programming Language :: Python :: 2
 | |
| Classifier: Programming Language :: Python :: 2.7
 | |
| Classifier: Programming Language :: Python :: 3
 | |
| Classifier: Programming Language :: Python :: 3.3
 | |
| Classifier: Programming Language :: Python :: 3.4
 | |
| Classifier: Programming Language :: Python :: 3.6
 | |
| Classifier: Programming Language :: Python :: 3.7
 | |
| Classifier: Programming Language :: Python :: 3.8
 | |
| Classifier: Programming Language :: Python :: 3.9
 | |
| Classifier: Programming Language :: Python :: 3.10
 | |
| Description-Content-Type: text/markdown
 | |
| 
 | |
| # autorandr
 | |
| 
 | |
| Automatically select a display configuration based on connected devices
 | |
| 
 | |
| ## Branch information
 | |
| 
 | |
| This is a compatible Python rewrite of
 | |
| [wertarbyte/autorandr](https://github.com/wertarbyte/autorandr). Contributions
 | |
| for bash-completion, fd.o/XDG autostart, Nitrogen, pm-utils, and systemd can be
 | |
| found under [contrib](contrib/).
 | |
| 
 | |
| The original [wertarbyte/autorandr](https://github.com/wertarbyte/autorandr)
 | |
| tree is unmaintained, with lots of open pull requests and issues. I forked it
 | |
| and merged what I thought were the most important changes. If you are searching
 | |
| for that version, see the [`legacy` branch](https://github.com/phillipberndt/autorandr/tree/legacy).
 | |
| Note that the Python version is better suited for non-standard configurations,
 | |
| like if you use `--transform` or `--reflect`. If you use `auto-disper`, you
 | |
| have to use the bash version, as there is no disper support in the Python
 | |
| version (yet). Both versions use a compatible configuration file format, so
 | |
| you can, to some extent, switch between them.  I will maintain the `legacy`
 | |
| branch until @wertarbyte finds the time to maintain his branch again.
 | |
| 
 | |
| If you are interested in why there are two versions around, see
 | |
| [#7](https://github.com/phillipberndt/autorandr/issues/7),
 | |
| [#8](https://github.com/phillipberndt/autorandr/issues/8) and
 | |
| especially
 | |
| [#12](https://github.com/phillipberndt/autorandr/issues/12)
 | |
| if you are unhappy with this version and would like to contribute to the bash
 | |
| version.
 | |
| 
 | |
| ## License information and authors
 | |
| 
 | |
| autorandr is available under the terms of the GNU General Public License
 | |
| (version 3).
 | |
| 
 | |
| Contributors to this version of autorandr are:
 | |
| 
 | |
| * Adrián López
 | |
| * andersonjacob
 | |
| * Alexander Lochmann
 | |
| * Alexander Wirt
 | |
| * Brice Waegeneire
 | |
| * Chris Dunder
 | |
| * Christoph Gysin
 | |
| * Christophe-Marie Duquesne
 | |
| * Daniel Hahler
 | |
| * Maciej Sitarz
 | |
| * Mathias Svensson
 | |
| * Matthew R Johnson
 | |
| * Nazar Mokrynskyi
 | |
| * Phillip Berndt
 | |
| * Rasmus Wriedt Larsen
 | |
| * Sam Coulter
 | |
| * Simon Wydooghe
 | |
| * Stefan Tomanek
 | |
| * stormc
 | |
| * tachylatus
 | |
| * Timo Bingmann
 | |
| * Timo Kaufmann
 | |
| * Tomasz Bogdal
 | |
| * Victor Häggqvist
 | |
| * Jan-Oliver Kaiser
 | |
| * Alexandre Viau
 | |
| 
 | |
| ## Installation/removal
 | |
| 
 | |
| You can use the `autorandr.py` script as a stand-alone binary. If you'd like to
 | |
| install it as a system-wide application, there is a Makefile included that also
 | |
| places some configuration files in appropriate directories such that autorandr
 | |
| is invoked automatically when a monitor is connected or removed, the system
 | |
| wakes up from suspend, or a user logs into an X11 session. Run `make install`
 | |
| as root to install it.
 | |
| 
 | |
| If you prefer to have a system wide install managed by your package manager,
 | |
| you can
 | |
| 
 | |
| * Use the [official Arch package](https://archlinux.org/packages/extra/any/autorandr/).
 | |
| * Use the [official Debian package](https://packages.debian.org/sid/x11/autorandr) on sid
 | |
| * 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.
 | |
| 
 | |
| If you prefer `pip` over your package manager, you can install autorandr with:
 | |
| 
 | |
|     sudo pip install "git+http://github.com/phillipberndt/autorandr#egg=autorandr"
 | |
| 
 | |
| or simply
 | |
| 
 | |
|     sudo pip install autorandr
 | |
| 
 | |
| if you prefer to use a stable version.
 | |
| 
 | |
| ## How to use
 | |
| 
 | |
| Save your current display configuration and setup with:
 | |
| 
 | |
|     autorandr --save mobile
 | |
| 
 | |
| Connect an additional display, configure your setup and save it:
 | |
| 
 | |
|     autorandr --save docked
 | |
| 
 | |
| Now autorandr can detect which hardware setup is active:
 | |
| 
 | |
|     $ autorandr
 | |
|       mobile
 | |
|       docked (detected)
 | |
| 
 | |
| To automatically reload your setup:
 | |
| 
 | |
|     $ autorandr --change
 | |
| 
 | |
| To manually load a profile:
 | |
| 
 | |
|     $ autorandr --load <profile>
 | |
| 
 | |
| or simply:
 | |
| 
 | |
|     $ autorandr <profile>
 | |
| 
 | |
| autorandr tries to avoid reloading an identical configuration. To force the
 | |
| (re)configuration:
 | |
| 
 | |
|     $ autorandr --load <profile> --force
 | |
| 
 | |
| To prevent a profile from being loaded, place a script call _block_ in its
 | |
| directory. The script is evaluated before the screen setup is inspected, and
 | |
| in case of it returning a value of 0 the profile is skipped. This can be used
 | |
| to query the status of a docking station you are about to leave.
 | |
| 
 | |
| If no suitable profile can be identified, the current configuration is kept.
 | |
| To change this behaviour and switch to a fallback configuration, specify
 | |
| `--default <profile>`. The system-wide installation of autorandr by default
 | |
| calls autorandr with a parameter `--default default`. There are three special,
 | |
| virtual configurations called `horizontal`, `vertical` and `common`. They
 | |
| automatically generate a configuration that incorporates all screens
 | |
| connected to the computer. You can symlink `default` to one of these
 | |
| names in your configuration directory to have autorandr use any of them
 | |
| 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 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 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):
 | |
| 
 | |
| - `postswitch` is executed *after* a mode switch has taken place. This can be
 | |
|   used to notify window managers or other applications about the switch.
 | |
| - `preswitch` is executed *before* a mode switch takes place.
 | |
| - `postsave` is executed after a profile was stored or altered.
 | |
| - `predetect` is executed before autorandr attempts to run xrandr. 
 | |
| 
 | |
| These scripts must be executable and can be placed directly in the configuration
 | |
| directory, where they will always be executed, or in the profile subdirectories,
 | |
| where they will only be executed on changes regarding that specific profile.
 | |
| 
 | |
| 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
 | |
| [XDG spec](https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html))
 | |
| and profile configuration over general configuration.
 | |
| 
 | |
| As a concrete example, suppose you have the files
 | |
| 
 | |
| - `/etc/xdg/autorandr/postswitch`
 | |
| - `~/.config/autorandr/postswitch`
 | |
| - `~/.config/autorandr/postswitch.d/notify-herbstluftwm`
 | |
| - `~/.config/autorandr/docked/postswitch`
 | |
| 
 | |
| and switch from `mobile` to `docked`. Then
 | |
| `~/.config/autorandr/docked/postswitch` is executed, since the profile specific
 | |
| configuration takes precedence, and
 | |
| `~/.config/autorandr/postswitch.d/notify-herbstluftwm` is executed, since
 | |
| it has a unique name.
 | |
| 
 | |
| If you switch back from `docked` to `mobile`, `~/.config/autorandr/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
 | |
| 
 | |
| 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`
 | |
| 
 | |
| 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
 | |
| 
 | |
| The EDID strings in the `~/.config/autorandr/*/setup` files may contain an
 | |
| asterisk to enable wildcard matching: Such EDIDs are matched against connected
 | |
| 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
 | |
| ```
 | |
| 
 | |
| ### Wayland
 | |
| 
 | |
| Before running autorandr will check the environment for the `WAYLAND_DISPLAY`
 | |
| variable to check if the program is running in a Wayland session. This is to
 | |
| avoid issues between usage of xrandr in Wayland environments.
 | |
| 
 | |
| If you need to run autorandr in a Wayland environment, one workaround is to
 | |
| unset the `WAYLAND_DISPLAY` variable before running the program, such as:
 | |
| 
 | |
| ```
 | |
| WAYLAND_DISPLAY= autorandr
 | |
| ```
 | |
| 
 | |
| ## Changelog
 | |
| 
 | |
| **autorandr 1.15**
 | |
| * *2023-11-27* Several regex literal bug fixes
 | |
| * *2023-12-27* Fix #375: Listen to correct events in launcher
 | |
| * *2024-03-03* Fix #367: Skip profiles without outputs
 | |
| 
 | |
| 
 | |
| **autorandr 1.14**
 | |
| * *2023-06-22* Direct --match-edid renaming of output messages to stderr
 | |
| * *2023-06-22* Add Wayland awareness
 | |
| * *2023-06-22* Various minor auxiliary tooling bug fixes, see git-log
 | |
| 
 | |
| **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
 | |
| * *2018-04-30* Added a `AUTORANDR_MONITORS` variable to hooks (by @bricewge, #106)
 | |
| * *2018-06-29* Fix detection of current configuration if extra monitors are active
 | |
| * *2018-07-11* Bugfix in the latest change: Correctly handle "off" minitors when comparing
 | |
| * *2018-07-19* Do not kill spawned user processes from systemd unit
 | |
| * *2018-07-20* Correctly handle "off" monitors when comparing -- fixup for another bug.
 | |
| 
 | |
| **autorandr 1.5**
 | |
| 
 | |
| * *2018-01-03* Add --version
 | |
| * *2018-01-04* Fixed vertical/horizontal/clone-largest virtual profiles
 | |
| * *2018-03-07* Output all non-error messages to stdout instead of stderr
 | |
| * *2018-03-25* Add --detected and --current to filter the profile list output
 | |
| * *2018-03-25* Allow wildcard matching in EDIDs
 | |
| 
 | |
| **autorandr 1.4**
 | |
| 
 | |
| * *2017-12-22* Fixed broken virtual profile support
 | |
| * *2017-12-14* Added support for a settings file
 | |
| * *2017-12-14* Added a virtual profile `off`, which disables all screens
 | |
| 
 | |
| **autorandr 1.3**
 | |
| 
 | |
| * *2017-11-13* Add a short form for `--load`
 | |
| * *2017-11-21* Fix environment stealing in `--batch` mode (See #87)
 | |
| 
 | |
| **autorandr 1.2**
 | |
| 
 | |
| * *2017-07-16* Skip `--panning` unless it is required (See #72)
 | |
| * *2017-10-13* Add `clone-largest` virtual profile
 | |
| 
 | |
| **autorandr 1.1**
 | |
| 
 | |
| * *2017-06-07* Call systemctl with `--no-block` from udev rule (See #61)
 | |
| * *2017-01-20* New script hook, `predetect`
 | |
| * *2017-01-18* Accept comments (lines starting with `#`) in config/setup files
 | |
| 
 | |
| **autorandr 1.0**
 | |
| 
 | |
| * *2016-12-07* Tag the current code as version 1.0.0; see github issue #54
 | |
| * *2016-10-03* Install a desktop file to `/etc/xdg/autostart` by default
 | |
| 
 | |
| 
 | 
