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.
Grobi requires Go version 1.11 or newer to compile. To build grobi, run the following command:
$ go build
Afterwards please find a binary of grobi in the current directory:
$ ./grobi --help
Usage:
grobi [OPTIONS] <command>
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
Have a look at the sample configuration file provided at
doc/grobi.conf
. By default, grobi
uses the XDG directory
standard
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 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
Grobi follows Semantic Versioning 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.
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 incmd_version.go