Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
WAY-DISPLAYS(1)			 User Manuals		       WAY-DISPLAYS(1)

NAME
       way-displays - Auto Manage Your Wayland Displays

SYNOPSIS
       way-displays [OPTIONS...]  [COMMAND]

DESCRIPTION
       1. Set resolution/refresh: preferred, highest or	custom

       2. Enable VRR / adaptive	sync

       3. Arrange in a row or a	column

       4. Auto scale based on DPI: 96 is a scale of 1

       5. Update when displays plugged/unplugged

       6. Update when laptop lid closed/opened

       Works out of the	box: no	configuration required.

       Wayland	 successor  to	xlayoutdisplay	<https://github.com/alex-cour-
       tis/xlayoutdisplay>, inspired by	 kanshi	 <https://sr.ht/~emersion/kan-
       shi/>.

       See  wiki  for  Configuration <https://github.com/alex-courtis/way-dis-
       plays/wiki/Configuration>,    Recipes	<https://github.com/alex-cour-
       tis/way-displays/wiki/Recipes>,			       Troubleshooting
       <https://github.com/alex-courtis/way-displays/wiki/Troubleshooting> and
       more.

   Server
       Background process that performs	the management.	 Configuration is read
       from a file discovered in order:

	      $XDG_CONFIG_HOME/way-displays/cfg.yaml
	      $HOME/.config/way-displays/cfg.yaml
	      /usr/local/etc/way-displays/cfg.yaml
	      /etc/way-displays/cfg.yaml

       The file	may be specified via the --config option.

       cfg.yaml	will be	monitored for changes, which will be  immediately  ap-
       plied.

       See	  the	    default	  /etc/way-displays/cfg.yaml	   and
       https://github.com/alex-courtis/way-displays/blob/master/doc/CONFIGURA-
       TION.md for details on individual configurable settings.

       Server is run when no commands are specified.

       Server  responds	 to  IPC  requests  to	 fetch	 and   mutate	state:
       https://github.com/alex-courtis/way-displays/blob/master/doc/IPC.md

   Client
       Manages	the server.  The active	configuration and display state	may be
       inspected, and the configuration	modified.

       The active configuration	can be written to disk,	however	 any  comments
       and formatting will be lost.

REQUIREMENTS
       A wlroots based compositor that supports	the WLR	Output Management pro-
       tocol.

       way-displays  is	 blessed  for the sway <https://swaywm.org/> and river
       <https://github.com/riverwm/river>.  It may work	on others.

       Hpyrland	<https://hyprland.org/>	provides all way-displays  functional-
       ity and you may experience issues.

       way-displays  must be run as a daemon, a	background server process.  It
       will respond to your configuration changes as  well  as	state  changes
       such as plugging	in a monitor or	closing	the lid.

       User  should  be	 a  member  of the input group for querying laptop lid
       state.

OPTIONS
       -L | --l[og-threshold] <debug|info|warning|error|fatal>
	      Overrides	cfg.yaml.  info	is default.

       -c | --c[onfig] <path>
	      Configuration file, falls	back to	defaults if not	found.

       -y | --y[aml]
	      Print client output as raw YAML

COMMANDS
       -h | --h[elp]
	      Print usage and exit.

       -v | --v[ersion]
	      Display version information and exit.

       -g | --g[et]
	      Show the active  configuration,  commands	 and  current  display
	      state.

       -s | --s[et]
	      Add a new	setting	or modify an existing.

	      ARRANGE_ALIGN <row|column> <top|middle|bottom|left|right>
		     Set vertical arrangement and the alignment.

	      ORDER <name|!regex> ...
		     Set the order of arrangement.  Replaces previous order.

	      SCALING <on|off>
		     Enable scaling, overrides AUTO_SCALE and SCALE

	      AUTO_SCALE <on|off>
		     Enable auto scaling.

	      SCALE <name> <scale>
		     Set the scale for a specific display.

	      MODE <name> MAX
		     Highest available resolution / refresh.

	      MODE <name> <width> <height> [<Hz>]
		     Specified	resolution  at	its highest refresh.  Optional
		     refresh will choose a mode	+-0.5Hz.

	      TRANSFORM	<name>
	      <90|180|270|flipped|flipped-90|flipped-180|flipped-270>
		     Transform a specific display.

	      VRR_OFF <name>
		     Disable VRR for a display.

	      DISABLED <name>
		     Disable a display.

	      CALLBACK_CMD <shell command>
		     Sets a /bin/sh command  to	 be  executed  following  most
		     events.  Obeys LOG_THRESHOLD

	      	Default: notify-send "way-displays ${CALLBACK_LEVEL}" "${CALL-
		BACK_MSG}"

	      	${CALLBACK_MSG}	contains a human readable message

	      	${CALLBACK_LEVEL} LOG_THRESHOLD

       -d, --d[elete]
	      Remove an	existing setting.

	      SCALE <name>
		     Use auto scaling for the display, if enabled.

	      MODE <name>
		     Use preferred or highest availble if no preferred.

	      TRANSFORM	<name>
		     Remove transformation for a display.

	      VRR_OFF <name>
		     Enable VRR	for a display.

	      DISABLED <name>
		     Enable a display.

	      CALLBACK_CMD <shell command>
		     Remove command on display configuration success.

       -t, --t[oggle]
	      Toggle a setting.

	      SCALING
		     Toggle scaling.

	      AUTO_SCALE
		     Toggle auto scaling.

	      VRR_OFF <name>
		     Toggle VRR	for a display.

	      DISABLED <name>
		     Toggle a display.

       -w | --w[rite]
	      Write  active  configuration to cfg.yaml;	removes	any whitespace
	      or comments.

NAMING
       You can configure displays by name or description.  You can find	 these
       by looking at the logs e.g.

	      DP-3 Arrived:
		info:
		  name:	    'DP-3'
		  make:	    'Monitor Maker'
		  model:    'ABC123'
		  desc:	    'Monitor Maker ABC123 (DP-3	via HDMI)'

       It  is  recommended to use the description rather than the name,	as the
       name may	change over time and will most likely be different on  differ-
       ent PCs.

       The  description	does contain information about how it is connected, so
       strip that out.	In the above example, you would	 use  the  description
       `Monitor	Maker ABC123'.

       The  name  should  be at	least 3	characters long, to avoid any unwanted
       extra matches.

EXAMPLES
       exec way-displays > /tmp/way-displays.${XDG_VTNR}.${USER}.log 2>&1
	      Add to your sway config to start way-displays when sway starts.

       way-displays -g
	      Show current configuration and display state.

       way-displays -s ARRANGE_ALIGN row bottom
	      Arrange left to right, aligned at	the bottom.

       way-displays -s ORDER "!^DP-[0-9]+$" HDMI-1 "monitor maker ABC model
       XYZ" eDP-1
	      Set the order for	arrangement.

       way-displays -s SCALE "eDP-1" 3
	      Set the scale.

       way-displays -s MODE HDMI-A-1 3840 2160 24
	      Use 3840x2160@24Hz

       way-displays -w
	      Persist your changes to your cfg.yaml

SEE ALSO
       https://github.com/alex-courtis/way-displays

AUTHORS
       Alexander Courtis.

way-displays			  2025/03/28		       WAY-DISPLAYS(1)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=way-displays&sektion=1&manpath=FreeBSD+Ports+14.3.quarterly>

home | help