rbtylee / zarfy

Zarfy is a gtk gui for changing your screen resolution. Works well with multiple monitor setups.
GNU General Public License v3.0
5 stars 1 forks source link
gtk monitor screen xrandr

zarfy - a GUI front end for RandR >=1.2

License Build Status

This repository is a fork from Jim Allingham's original. Zarfy is Software Libre released under version 3 of the GPL.

The initial commit is based from version 0.1.0. Minor changes have been made since it would no longer build (ubuntu 18.04). Compiler warnings and run time errors were fixed.

Features

A gui to libxrandr. It presents the user with visual representaion of active displays on an interactive map of the screen memory. Features free postioning, configuration saving, scripting for R&R and an alternate gui for switching between monitors.

Dependencies

For Debian & debian-based distros

sudo apt install libgdk-pixbuf2.0-dev libglade2-dev libx11-dev libxrandr-dev libxrender-dev

should do it.

Installation

./autogen.sh
make
sudo make install

Usage

In normal mode (no command line options) a representation of the virtual screen area is displayed with each active output mapped onto it. To position an output device, select it by clicking on it's thumb at the top of the window, then click the map area where it should go. By default, the click is interpreted as "right-of", "beneath", etc., relative to the output nearest to the click. Alternately, free positioning can be done by clicking off the "snap-to" button.

Zarfy saves your monitor configuration on apply/ok and automatically loads it on next run. For more information

man zarfy

Load & Exit Mode

Command: zarfy -l

Loads the last configuration and exits - no gui. Can be used eg. to configure displays on startup: system->preferences->sessions->startup programs->add zarfy -l

Quick-Switch Mode

Command: zarfy -s

Lets you quickly switch between combinations of displays, simlar to the Fn key function of a certain well-known propietary OS :) Use the right & left arrow keys to step between combos, Enter to select & exit. Or use the mouse - click to select, double click to execute & exit.

The following sample script (Debian) may be tied to the appropriate acpi Fn key. The first keystroke launches zarfy in switch mode, successive keystrokes step thorough the possible combinations.

#!/bin/bash
test -f /usr/share/acpi-support/power-funcs || exit 0
. /etc/default/acpi-support
. /usr/share/acpi-support/power-funcs
. /usr/share/acpi-support/key-constants

if pidof zarfy; then
    acpi_fakekey $KEY_RIGHT
else 
 for x in /tmp/.X11-unix/*; do
    displaynum=`echo $x | sed s#/tmp/.X11-unix/X##`
    getXuser;
    if [ x"$XAUTHORITY" != x"" ]; then
        export DISPLAY=":$displaynum.0"
    /usr/local/bin/zarfy -s &
    fi
 done
fi

Scripting for Rotate//Reflect

Automate rotation/relection on your input device (eg. wacom). Upon execution of rotate/reflect on a display, zarfy looks for a script associated with that display and, if found, executes it with one of the following arguments: "_rotatenone", "_rotateleft", "_rotateright", "_rotate180", "_refectx", "_reflecty", "_unreflectx", "_unreflecty". The script must be located in

~/$XDG_DATA_HOME/zarfy// or if XDG_DATA_HOME is undefined: ~/.local/share/zarfy//

and have the name _RR.sh, where is the driver-specifc name of the device (eg Intel "LVDS", "VGA", etc). Device names for your system are displayed under the thumbnails at the top of the main zarfy window. The for the default display is created automatically the first time you run zarfy.

Reporting bugs

Please use the GitHub issue tracker for any bugs or feature suggestions:

https://github.com/rbtylee/zarfy/issues

Contributing

Help is always Welcome, as with all Open Source Projects the more people that help the better it gets! Adding support for translations and the translations themselves would be especially welcome and much needed.

Please submit patches to the code or documentation as GitHub pull requests!

Contributions must be licensed under this project's copyright (see LICENSE).

Credits

Full credit for the original code of this module go to:

Additional modifications:

Links

For more information on RandR, what cards/drivers are supported, how to set up your xorg.conf, etc.