Bash script for applying a pre-defined Xorg monitor layout. Useful for tiling window manager users.
Shell Makefile
Pull request Compare This branch is even with beanaroo:master.
Failed to load latest commit information.


i3 does not manage displays and I move my laptop around a lot. This little script fills a much needed gap in my tiling window manager setup.

How it works

When executed, it checks the available and connected display outputs and sets the optimal resolution for each (as determined by xrandr). It can then also reset the wallpaper. The script then waits for a signal to restart the procedure.

At the moment I have three outputs defined: LVDS1, HDMI1 and VGA1. For now, layout configuration is hard-coded. I am hoping to make this more dynamic.

When lid is open (-l): LVDS (Primary) on left with HDMI or VGA on right. My laptop can only handle two displays at a time, so if both HDMI and VGA are present, or...

When lid is closed: HDMI (Primary) on left with VGA on right.

If you prefer, you could of course use arandr to generate layout scripts and replace my xrandr lines with those.

How to use it

Usage: display-visor [-f] [-i] [-l [switch]]

    -f, --feh   Run feh bg script.
                         Executes ~/.fehbg upon completion.
    -i, --i3    Test for i3wm instance.
                         For avoiding conflict with multiple environments.
    -l, --lid   Check laptop lid status.
                         Ignored/Assumed closed if not given. 
                         It is possible to specify switch. Defaults to 'LID0'
                         If unsure, look under /proc/acpi/button/lid/...
    -v, --version   Print version info.

Simply set the script to start upon login.

i3wm config example:

exec --no-startup-id display-visor -f -l

The script waits for a RTMIN+5 real-time signal. This can be sent with pkill like so:

pkill -x -RTMIN+5 display-visor

Some default event signallers are included.

  • udev - A hotplug rule for when cables are (dis)connected.
  • acpid - A lid switch event action. Useful when -l argument is used. [1]
  • systemd-sleep - A wake-up hook. [2]


  • Arch Linux - Available on the AUR as display-visor

Or manually with:

$ sudo make (un)install



[1] Remember to restart acpid service for this to take effect. [2] Please see Issue #8


I shamelessly stole some base functionality from codingtony. Thank you, kind sir.