https://github.com/fd0/grobi
Automatically configure monitors/outputs for Xorg via RANDR
https://github.com/fd0/grobi
Last synced: 10 months ago
JSON representation
Automatically configure monitors/outputs for Xorg via RANDR
- Host: GitHub
- URL: https://github.com/fd0/grobi
- Owner: fd0
- License: bsd-2-clause
- Created: 2015-10-03T10:23:05.000Z (over 10 years ago)
- Default Branch: master
- Last Pushed: 2021-08-20T08:35:49.000Z (over 4 years ago)
- Last Synced: 2025-02-27T20:49:27.839Z (11 months ago)
- Language: Go
- Homepage:
- Size: 700 KB
- Stars: 131
- Watchers: 3
- Forks: 24
- Open Issues: 7
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-repositories - fd0/grobi - Automatically configure monitors/outputs for Xorg via RANDR (Go)
README
[](https://github.com/fd0/grobi/actions?query=workflow%3Atest)
# grobi
This program watches for changes in the available outputs (e.g. when a monitor
is connected/disconnected) and will automatically configure the currently used
outputs via RANDR according to configurable profiles.
# Installation
Grobi requires Go version 1.11 or newer to compile. To build grobi, run the
following command:
```shell
$ go build
```
Afterwards please find a binary of grobi in the current directory:
```
$ ./grobi --help
Usage:
grobi [OPTIONS]
Application Options:
-v, --verbose Be verbose (false)
-C, --config= Read config from this file
-n, --dry-run Only print what commands would be executed without actually
runnig them
-i, --interval= Number of seconds between polls, set to zero to disable
polling (5)
-p, --pause= Number of seconds to pause after a change was executed (2)
-l, --logfile= Write log to file
Help Options:
-h, --help Show this help message
Available commands:
apply apply a rule
update update outputs
version display version
watch watch for changes
```
# Configuration
Have a look at the sample configuration file provided at
[`doc/grobi.conf`](doc/grobi.conf). By default, `grobi` uses the [XDG directory
standard](https://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html)
to search for the config file. Most users will probably put the config file to
`~/.config/grobi.conf`.
If you have any questions, please open an issue on GitHub.
There is also a [sample systemd](doc/grobi.service) unit file you can run as a
user. This requires that the `PATH` and `DISPLAY` environment variables can be
accessed, so run the following command in e.g. your `~/.xsession` file just
before starting the window manager:
```
systemctl --user import-environment DISPLAY PATH
```
Run the command once to import the environment for the current session, then
execute the following commands to install and start the unit:
```
mkdir ~/.config/systemd/user
cp doc/grobi.service ~/.config/systemd/user
systemctl --user enable grobi
systemctl --user start grobi
```
You can then use `systemctl` to check the current status:
```
systemctl --user status grobi
```
# Compatibility
Grobi follows [Semantic Versioning](http://semver.org) to clearly define which
versions are compatible. The configuration file and command-line parameters and
user-interface are considered the "Public API" in the sense of Semantic
Versioning.
# Development
## Release New Version
Rough steps for releasing a new version:
* Update version number in `cmd_version.go`, remove the `-dev` suffix
* Commit and tag version
* Add `-dev` suffix to version in `cmd_version.go`