autorandr/README.md

162 lines
6.4 KiB
Markdown
Raw Normal View History

# autorandr
2012-06-28 20:30:49 +00:00
Automatically select a display configuration based on connected devices
## Branch information
2013-11-29 06:51:28 +00:00
This is a compatible Python rewrite of
2017-08-12 04:23:30 +00:00
[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/).
2015-01-02 10:34:30 +00:00
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 contibute to the bash
version.
2013-11-29 06:51:28 +00:00
2015-01-02 09:53:31 +00:00
## License information and authors
autorandr is available under the terms of the GNU General Public License
(version 3).
2015-01-02 10:34:30 +00:00
Contributors to this version of autorandr are:
2017-10-13 12:24:43 +00:00
* Adrián López
* andersonjacob
2015-01-02 10:34:30 +00:00
* Alexander Wirt
* Chris Dunder
* Daniel Hahler
2015-01-02 10:34:30 +00:00
* Maciej Sitarz
2016-02-10 14:07:10 +00:00
* Mathias Svensson
2015-01-02 10:34:30 +00:00
* Matthew R Johnson
2016-10-02 19:19:18 +00:00
* Nazar Mokrynskyi
2015-01-02 10:34:30 +00:00
* Phillip Berndt
2015-01-22 13:28:27 +00:00
* Rasmus Wriedt Larsen
2017-10-13 12:24:43 +00:00
* Simon Wydooghe
* Stefan Tomanek
2017-10-13 12:24:43 +00:00
* stormc
* tachylatus
2015-01-02 10:34:30 +00:00
* Timo Bingmann
* Tomasz Bogdal
* Victor Häggqvist
2013-11-29 06:51:28 +00:00
## Installation/removal
2016-10-03 16:21:19 +00:00
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.
2016-10-03 16:21:19 +00:00
For Debian-based distributions (including Ubuntu) it is recommended to call
`make deb` to obtain a package that can be installed and removed with `dpkg`.
2016-10-03 16:21:19 +00:00
On Arch Linux, there is [an aur package
available](https://aur.archlinux.org/packages/autorandr-git/).
On other distributions you can install autorandr by calling `make install` and
remove it by calling `make uninstall`. Run `make` without arguments to obtain a
list of what exactly will be installed.
We appreciate packaging scripts for other distributions, please file a pull
request if you write one.
2016-11-30 21:17:28 +00:00
If you prefer `pip` over your package manager, you can install autorandr with:
sudo pip install "git+http://github.com/phillipberndt/autorandr#egg=autorandr"
2017-07-17 16:02:14 +00:00
or simply
sudo pip install autorandr
if you prefer to use a stable version.
2017-06-07 08:31:57 +00:00
Automatically generated packages versions are available from the
[openSUSE build service](https://build.opensuse.org/package/show/home:phillipberndt/autorandr).
2016-11-30 01:37:05 +00:00
2013-05-12 12:33:46 +00:00
## How to use
2012-06-28 20:30:49 +00:00
Save your current display configuration and setup with:
2016-10-03 16:21:19 +00:00
autorandr --save mobile
2012-06-28 20:30:49 +00:00
Connect an additional display, configure your setup and save it:
2016-10-03 16:21:19 +00:00
autorandr --save docked
2012-06-28 20:30:49 +00:00
Now autorandr can detect which hardware setup is active:
2016-10-03 16:21:19 +00:00
$ autorandr
mobile
docked (detected)
2012-06-28 20:30:49 +00:00
To automatically reload your setup, just append `--change` to the command line
2012-06-28 20:30:49 +00:00
To manually load a profile, you can use the `--load <profile>` option.
2012-06-28 20:30:49 +00:00
autorandr tries to avoid reloading an identical configuration. To force the
(re)configuration, apply `--force`.
2012-06-28 20:30:49 +00:00
To prevent a profile from being loaded, place a script call _block_ in its
2012-06-28 20:30:49 +00:00
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
2016-10-03 16:21:19 +00:00
`--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.
2012-06-28 20:30:49 +00:00
Another script called `postswitch` can be placed in the directory
`~/.config/autorandr` (or `~/.autorandr` if you have an old installation) as
well as in all profile directories: The scripts are executed after a mode
switch has taken place and can notify window managers or other applications
about it. The same holds for `preswitch`, which is executed before the switch
takes place, and `postsave`, which is executed after a profile was
stored/altered.
2012-06-28 20:30:49 +00:00
If you experience issues with xrandr being executed too early after connecting
a new monitor, then you can create a script `predetect`, which will be executed
before autorandr attempts to run xrandr. Place e.g. `sleep 1` into that file
to make autorandr wait a second before running xrandr.
All scripts can also be placed in any of the `$XDG_CONFIG_DIRS`. In addition to
the script names themselves, any executables in subdirectories named
`script_name.d` (e.g. `postswitch.d`) are executed as well. In scripts, some of
autorandr's state is exposed as environment variables prefixed with `AUTORANDR_`.
The most useful one is `$AUTORANDR_CURRENT_PROFILE`.
2016-10-03 16:21:19 +00:00
## Changelog
2017-10-13 12:42:12 +00:00
**autorandr 1.2**
2017-07-16 15:02:04 +00:00
* *2017-07-16* Skip `--panning` unless it is required (See #72)
2017-10-13 12:24:43 +00:00
* *2017-10-13* Add `clone-largest` virtual profile
2017-07-16 15:02:04 +00:00
2017-06-07 08:31:57 +00:00
**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-22 11:57:49 +00:00
* *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 16:21:19 +00:00
* *2016-10-03* Install a desktop file to `/etc/xdg/autostart` by default