artizirk / wdisplays

Mirror of cyclopsian/wdisplays
https://web.archive.org/web/20210204184506/https://github.com/cyclopsian/wdisplays
Other
207 stars 15 forks source link
arandr sway wayland wlroots xrandr

wdisplays

License: GPL 3.0 or later

wdisplays is a graphical application for configuring displays in Wayland compositors. It borrows some code from kanshi. It should work in any compositor that implements the wlr-output-management-unstable-v1 protocol. Compositors that are known to support the protocol are Sway and Wayfire. The goal of this project is to allow precise adjustment of display settings in kiosks, digital signage, and other elaborate multi-monitor setups.

Screenshot

Installation

Repology

Check your distro for a wdisplays package. Known distro packages:

Building

Build requirements are:

meson build
ninja -C build
sudo ninja -C build install

Usage

Displays can be moved around the virtual screen space by clicking and dragging them in the preview on the left panel. By default, they will snap to one another. Hold Shift while dragging to disable snapping. You can click and drag with the middle mouse button to pan. Zoom in and out either with the buttons on the top left, or by holding Ctrl and scrolling the mouse wheel. Fine tune your adjustments in the right panel, then click apply.

There are some options available by clicking the menu button on the top left:

FAQ

What is this?

It's intended to be the Wayland equivalent of an xrandr GUI, like ARandR.

I'm using Sway, why aren't my display settings saved when I log out?

Sway, like i3, doesn't save any settings unless you put them in the config file. See man sway-output. If you want to have multiple configurations depending on the monitors connected, you'll need to use an external program like kanshi or way-displays. Integration with that and other external daemons is planned.

How do I add support to my compositor?

A minimal amount of code (approximately 150-200 LOC) is currently required to get support for this in wlroots compositors. See the diff here for a sample implementation on top of tinywl: tinywl-output-management.