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

FreeBSD Manual Pages

  
 
  

home | help
SPECTRWM(1)		     General Commands Manual		     SPECTRWM(1)

NAME
     spectrwm -- window manager for X11

SYNOPSIS
     spectrwm [-c file] [-v]

OPTIONS
     -c file
	     Specify a configuration file to load instead of scanning for one.

     -d      Enable debug mode and logging to stderr.

     -v      Print version and exit.

DESCRIPTION
     spectrwm is a minimalistic window manager that tries to stay out of the way
     so  that  valuable  screen  real estate can be used for much more important
     stuff.  It has sane defaults and does not require one to learn  a	language
     to  do  any  configuration.   It  was written by hackers for hackers and it
     strives to be small, compact and fast.

     When spectrwm starts up, it reads settings  from  its  configuration  file,
     spectrwm.conf.  See the "CONFIGURATION FILES" section below.

     The following notation is used throughout this page:

	   M	   Meta
	   S	   Shift
	   <Name>  Named key or button

     spectrwm  is very simple in its use.  Most of the actions are initiated via
     key or pointer button bindings.  See the "BINDINGS" section below	for  de-
     faults and customizations.

CONFIGURATION FILES
     spectrwm looks for the user-configuration file in the following order:

	   1.	$XDG_CONFIG_HOME/spectrwm/spectrwm.conf
	   2.	~/.config/spectrwm/spectrwm.conf  (if $XDG_CONFIG_HOME is either
		not set or empty)
	   3.	~/.spectrwm.conf.

     If the user-configuration file is not found, spectrwm then  looks	for  the
     global configuration file in the following order:

	   1.	$XDG_CONFIG_DIRS/spectrwm/spectrwm.conf   (each  colon-separated
		directory in $XDG_CONFIG_DIRS)
	   2.	/usr/local/etc/xdg/spectrwm/spectrwm.conf  (if	$XDG_CONFIG_DIRS
		is either not set or empty)
	   3.	/usr/local/etc/spectrwm.conf

     The format of the file is

	   keyword = setting

     Where `=' may be replaced with `+=' or `-=', if supported by the option.

     For example:

	   color_focus = red
	   quirk[XTerm] += FLOAT

     Enabling or disabling an option is done by using 1 or 0 respectively.

     Colors need to be specified per the XQueryColor(3) specification.	In addi-
     tion,    alpha    transparency    may   be   specified   via   the   format
     rbga:red/green/blue/alpha (8-bit hex values) For example, to specify a  50%
     transparent blue status bar background:

	   bar_color = rgba:00/00/ff/7f

     Note that a compositing manager is required for alpha transparency.

     Mark option values may be wrapped in single/double quotes to prevent white-
     space  trimming, specify empty strings, etc.  Literal quote/backslash char-
     acters can be escaped with a backslash `\', when needed.

     Comments begin with a #.  When a literal `#' is desired in an option,  then
     it must be escaped with a backslash, i.e. \#

     The file supports the following keywords:

     autorun
	 Launch  an  application  in a specified workspace at start-of-day.  De-
	 fined in the format ws[idx]:application, e.g. ws[2]:xterm  launches  an
	 xterm(1)  in workspace 2.  Specify `ws[-1]' to launch applications such
	 as desktop managers and panels in free mode to keep them always mapped.

	 Note that libswmhack.so is required for "spawn-in-workspace"  behavior.
	 See  the  "SWMHACK"  section  below  for  more  information,  tips, and
	 workarounds if a program fails to spawn in the specified workspace.

     bar_action
	 External script that populates additional  information  in  the  status
	 bar, such as battery life.

     bar_action_expand
	 Process bar_format character sequences in bar_action output; default is
	 0.

     bar_at_bottom
	 Place	the  statusbar	at the bottom of each region instead of the top.
	 Default is 0.

     bar_border[x]
	 Border  color	of  status  bar(s)  on	screen	number	x.   Default  is
	 rgb:00/80/80.

     bar_border_free[x]
	 Border  color	of  a status bar for a focused region on screen number x
	 when a workspace-free window is focused.  Default is rgb:80/80/00.

     bar_border_unfocus[x]
	 Border color of status bar(s) for unfocused region(s) on screen  number
	 x.  Default is rgb:00/40/40.

     bar_border_width
	 Set  status  bar border thickness in pixels.  Disable border by setting
	 to 0.

     bar_color[x]
	 Background color of status bar(s) on screen number x.

	 A comma-separated list of multiple colors can be specified.  The  first
	 value is used as the default background color.  Any of these colors can
	 then  be  selected  as a background color in the status bar through the
	 use of the markup sequence +@bg=n; where n is the color index	counting
	 from 0.

     bar_color_free[x]
	 Background  color of a status bar for a focused region on screen number
	 x when a workspace-free window is focused.

	 A comma-separated list of multiple colors can be  specified,  with  the
	 same syntax and behavior as bar_color.  Default is rgb:40/40/00.

	 Note  that  bar_color	defines the background color indices that can be
	 used in bar_format markup sequences and is the fallback for colors that
	 are left unspecified in this option.

     bar_color_selected[x]
	 Background color for selected menu items on screen number x.	Defaults
	 to the value of bar_border.

     bar_color_unfocus[x]
	 Background  color  of	status	bar(s) for unfocused region(s) on screen
	 number x.

	 A comma-separated list of multiple colors can be  specified,  with  the
	 same  syntax  and behavior as bar_color for unfocused bar(s).	Defaults
	 to the value of bar_color.

	 Note that bar_color defines the background color indices  that  can  be
	 used in bar_format markup sequences and is the fallback for colors that
	 are left unspecified in this option.

     bar_enabled
	 Set default bar_toggle state; default is 1.

     bar_enabled_ws[x]
	 Set default bar_toggle_ws state on workspace x; default is 1.

     bar_font
	 Fonts used in the status bar.	Either Xft or X Logical Font Description
	 (XLFD)  may  be used to specify fonts.  Fallback fonts may be specified
	 by separating each font with a comma.	If all entries are in XLFD  syn-
	 tax,  font set will be used.  If at least one entry is Xft, Xft will be
	 used.

	 The default is to use font set.

	 If Xft is used, a comma-separated list of multiple fonts can be  speci-
	 fied.	 The first entry is the default font.  Any font defined here can
	 then be selected in the status bar through the use of	the  markup  se-
	 quence +@fn=n; where n is the font index counting from 0.

	 Also note that dmenu(1) prior to 4.6 does not support Xft fonts.

	 Xft examples:

	       bar_font = Terminus:style=Regular:pixelsize=14:antialias=true

	       bar_font = -*-profont-medium-*-*-*-11-*-*-*-*-*-*-*,Terminus:pixelsize=14,-*-clean-medium-*-*-*-12-*-*-*-*-*-*-*

	 Font set examples:

	       bar_font = -*-terminus-medium-*-*-*-14-*-*-*-*-*-*-*

	       bar_font = -*-profont-medium-*-*-*-11-*-*-*-*-*-*-*,-*-terminus-medium-*-*-*-14-*-*-*-*-*-*-*,-*-clean-medium-*-*-*-12-*-*-*-*-*-*-*

	 To  list  the	available  fonts  in  your system see fc-list(1) or xls-
	 fonts(1) manpages.  The xfontsel(1) application can help with the  XLFD
	 setting.

     bar_font_color[x]
	 Foreground color of the status bar(s) on screen number x.

	 A  comma-separated list of multiple colors can be specified.  The first
	 value is used as the default foreground color.  Any of these colors can
	 then be selected as a foreground color in the status  bar  through  the
	 use  of the markup sequence +@fg=n; where n is the color index counting
	 from 0.

     bar_font_color_free[x]
	 Foreground color of a status bar for a focused region on screen  number
	 x when a workspace-free window is focused.

	 A  comma-separated  list  of multiple colors can be specified, with the
	 same syntax and behavior as bar_font_color.  Default is rgb:ff/ff/ff.

	 Note that bar_font_color defines the foreground color indices that  can
	 be  used  in bar_format markup sequences and is the fallback for colors
	 that are left unspecified in this option.

     bar_font_color_unfocus[x]
	 Foreground color of status bar(s) for	unfocused  region(s)  on  screen
	 number x.

	 A  comma-separated  list  of multiple colors can be specified, with the
	 same syntax and behavior as bar_font_color for unfocused  bar(s).   De-
	 faults to the value of bar_font_color.

	 Note  that bar_font_color defines the foreground color indices that can
	 be used in bar_format markup sequences and is the fallback  for  colors
	 that are left unspecified in this option.

     bar_font_color_selected[x]
	 Foreground  color for selected menu items on screen number x.	Defaults
	 to the value of bar_color.

     bar_font_pua
	 Specify a font to override the Unicode Private  Use  Area  code  points
	 (U+E000  ->  U+F8FF,  U+F0000	-> U+FFFFD, U+100000 -> U+10FFFD).  Some
	 fonts use these code points to provide special icon glyphs.   Available
	 only with Xft fonts.

     bar_format
	 Set  the  bar	format	string,  overriding  clock_format and all of the
	 enabled options.  The format is passed through strftime(3) before being
	 used.	It may contain the following character sequences:

	       Character sequence    Replaced with
	       +<		     Pad with a space
	       +A		     Output of the external script
	       +C		     Window class (from WM_CLASS)
	       +D		     Workspace name
	       +F		     Focus status indicator
	       +I		     Workspace index
	       +L		     Workspace list indicator
	       +M		     Number of	iconic	(minimized)  windows  in
						      workspace
	       +N		     Screen number
	       +P		     Window  class  and  instance separated by a
						      colon
	       +R		     Region index
	       +S		     Stacking algorithm
	       +T		     Window instance (from WM_CLASS)
	       +U		     Urgency hint
	       +V		     Program version
	       +w		     Number of windows in workspace
	       +W		     Window name (from _NET_WM_NAME/WM_NAME)
	       +|[weight][justify]   Begin new section and reset markup sequence
						      effects.

						      weight is a positive inte-
						      ger used to allocate hori-
						      zontal space between  'L',
						      'C'  and 'R' sections (see
						      justify).    The	 default
						      weight is 1.

						      justify can have the value
						      L,  C, R or T. L, C, R are
						      for left, center and right
						      justified sections respec-
						      tively.	A  'T'	 section
						      will limit its space usage
						      to fit to the text.  If no
						      value  is  specified for a
						      given section, the setting
						      from bar_justify is used.
	       ++		     A literal `+'
	       +@		     Prefix for text markup sequences

	 The currently recognized text markup sequences are:

	       Character sequence    Action
	       +@fn=n;		     Selects  font  n  (starting  at   0)   from
					       bar_font.
	       +@fg=n;		     Selects  foreground color n (starting at 0)
					       from bar_font_color.
	       +@bg=n;		     Selects background color n (starting at  0)
					       from bar_color.
	       +@stp;		     Stops    the   interpretation   of   markup
					       sequences.  Any	markup	sequence
					       found  after +@stp will appear as
					       normal characters in  the  status
					       bar.

	 Note  that  markup  sequences	in bar_action script output will only be
	 processed if bar_action_expand is enabled.

	 All character sequences may limit its output to a specific length,  for
	 example  +64A.   By  default,	no padding/alignment is done in case the
	 length of the replaced string is less than the specified length (64  in
	 the example).	The padding/alignment can be enabled using a '_' charac-
	 ter  in  the  sequence.   For	example:  +_64W, +64_W and +_64_W enable
	 padding before (right alignment), after (left alignment), and both  be-
	 fore and after (center alignment) window name, respectively.  Any char-
	 acters that do not match the specification are copied as-is.

     bar_justify
	 Justify  the  status  bar  text.  Possible values are left, center, and
	 right.

	 Note that if the output is not left justified, it may not  be	properly
	 aligned  in  some circumstances, due to the white-spaces in the default
	 static format.  See the bar_format option for more details.

     bar_padding_horizontal
	 Set status bar horizontal padding in pixels; default is 0.

     bar_padding_vertical
	 Set status bar vertical padding in pixels; default is 0.

     bar_workspace_limit
	 Set the maximum workspace index (counting from 1) to list in the status
	 bar workspace (+L) and urgency hint (+U) indicators.  Workspaces beyond
	 this value will not be shown.	Default is 0 (disabled).

     bind[x]
	 Bind key or button combo to action x.	See the "BINDINGS"  section  be-
	 low.

     border_width
	 Set  window border thickness in pixels.  Disable all borders by setting
	 to 0.

     boundary_width
	 Set region containment boundary width in pixels.  This  is  how  far  a
	 window  must  be  dragged/resized  (with the pointer) beyond the region
	 edge before it is allowed outside the region.	Disable the window  con-
	 tainment effect by setting to 0.

     cancelkey
	 Change  the key used as an alternative means of terminating move/resize
	 operations.  Default is Escape.

	 See the "BINDINGS" section below for details on how to find key names.

     center_adaptive
	 In centered mode, enable to center the master area only when  centering
	 does  not  create empty space (e.g., with one stack, revert to non-cen-
	 tered).  Default is 0.

     center_autobalance
	 Automatically balance the master/stacking areas when toggling	centered
	 mode.	Default is 0.

     center_noautostack
	 In  centered  mode, an extra stack is automatically added when there is
	 only one stack.  Disable the automatic stack by setting to 1.	 Can  be
	 used in combination with center_adaptive to only center the master area
	 when there are at least two stacks.  Default is 0.

     center_nowrap
	 In  centered  mode,  stacks  are positioned from one side of the master
	 area and spillover to the opposite side.  Enable to maintain the origi-
	 nal order of stacks, split by the master area	without  wrapping.   De-
	 fault is 0.

     click_to_raise
	 Enable  or disable raising stacking priority when clicking on a window.
	 Default is 1.

     clock_enabled
	 Enable or disable displaying the clock in the status bar.   Disable  by
	 setting to 0 so a custom clock could be used in the bar_action script.

     color_focus_free
	 Border color of the currently focused window that is in free mode.  De-
	 fault is yellow.

     color_focus_maximized_free
	 Border  color of the currently focused maximized window that is in free
	 mode.	Defaults to the value of color_focus_free.

     color_unfocus_free
	 Border color of unfocused windows that are in	free  mode,  default  is
	 rgb:88/88/00.

     color_unfocus_maximized_free
	 Border color of unfocused maximized windows that are in free mode.  De-
	 faults to the value of color_unfocus_free.

     color_urgent_free
	 Border  color of urgent windows that are in free mode.  Defaults to the
	 value of color_unfocus_free.

     color_urgent_maximized_free
	 Border color of urgent maximized windows that are in  free  mode.   De-
	 faults to the value of color_urgent_free.

     color_focus
	 Border color of the currently focused window.	Default is red.

     color_focus_maximized
	 Border  color	of the currently focused, maximized window.  Defaults to
	 the value of color_focus.

     color_unfocus
	 Border color of unfocused windows, default is rgb:88/88/88.

     color_unfocus_maximized
	 Border color of unfocused, maximized windows.	Defaults to the value of
	 color_unfocus.

     color_urgent
	 Border  color	of  urgent  windows.	Defaults   to	the   value   of
	 color_unfocus.

     color_urgent_maximized
	 Border  color	of  urgent, maximized windows.	Defaults to the value of
	 color_urgent.

     cycle_visible
	 Include  workspaces  that  are  mapped  when  switching  with	ws_next,
	 ws_prev,  ws_next_all, ws_prev_all, ws_next_move, or ws_prev_move.  En-
	 able by setting to 1.

	 Note that mapped workspaces will be swapped unless  workspace_clamp  is
	 enabled.   If	warp_focus  is also enabled, focus will go to the region
	 where the workspace is mapped.

     dialog_ratio
	 Some applications have dialogue windows that are too small to	be  use-
	 ful.	This  ratio  adjusts  the window/region size ratio for transient
	 windows having the TRANSSZ quirk.  For example, 0.6 is 60% of	the  the
	 monitor size if the current region spans the monitor.

     disable_border
	 Remove  border when bar is disabled and there is only one window on the
	 region.  Enable by setting to 1.  Setting this to  always  removes  the
	 border regardless of the bar being enabled/disabled.  Defaults to 0.

     disable_padding
	 Remove  region  padding  when the bar is disabled and there is only one
	 window on the region.	Enable by setting to 1.  Setting this to  always
	 removes  the  region  padding	regardless of the bar being enabled/dis-
	 abled.  Defaults to 0.

     focus_close
	 Window to put focus when the focused window is closed.  Possible values
	 are first, next, previous (default), last and prior.  next and previous
	 are relative to the window that is closed.  prior is the  last  focused
	 window in the workspace.

     focus_close_wrap
	 Whether  to  allow  the focus to jump to the last window when the first
	 window is closed or vice versa.  Disable by setting to 0.

     focus_default
	 Window to put focus when no window has been focused.	Possible  values
	 are first and last (default).

     focus_mark_none
	 Set  the  bar_format  focus  status indicator (+F) string to substitute
	 when no window is focused.  Default is ''.

     focus_mark_normal
	 Set the bar_format focus status indicator  (+F)  string  to  substitute
	 when a normal (not floating, maximized or free) window is focused.  De-
	 fault is ''.

     focus_mark_floating
	 Set  the  bar_format  focus  status indicator (+F) string to substitute
	 when a floating window is focused.  Default is '(f)'.

     focus_mark_free
	 Set the bar_format focus status indicator  (+F)  string  to  substitute
	 when a window that is in free mode is focused.  Default is '(*)'.

     focus_mark_maximized
	 Set  the  bar_format  focus  status indicator (+F) string to substitute
	 when a maximized window is focused.  Default is '(m)'.

     focus_mode[t]
	 Set window focus behavior with respect to the pointer.   Possible  val-
	 ues:

	       default	Set  window  focus  on border crossings caused by cursor
			motion and window interaction.
	       follow	Prioritize the pointer location.  Set  window  focus  on
			all   cursor   border	crossings,  including  workspace
			switches and changes to layout.
	       manual	Ignore the pointer location.  Set window focus on window
			interaction only.

	 Optionally, it is possible to adjust the focus mode for specific  focus
	 situations.   A comma-separated list of the following situations can be
	 specified for t:

	       border	  Pointer enters a window.  Default is follow.
	       configure  Window position/size changed by the client/EWMH.   De-
			  fault is manual.
	       iconify	  Window iconified.  Default is manual.
	       layout	  Workspace layout changed.  Default is manual.
	       map	  Window maps.	Default is manual.
	       move	  Window moved to another workspace.  Default is manual.
	       startup	  spectrwm (re)started.  Default is manual.
	       uniconify  Window uniconified.  Default is manual.
	       unmap	  Window unmaps.  Default is manual.
	       workspace  Workspace switched.  Default is manual.

	 Note  that  when  t is omitted, the specified setting is applied to all
	 focus situations.  Example:

	       focus_mode = follow # Set all focus situations to 'follow'.
	       focus_mode[map,unmap] = manual # Change only map and unmap to 'manual'.
	       focus_mode = default # Reset all focus situations to respective default values.

     fullscreen_hide_other
	 When a fullscreen window is focused and not in below state, hide  unre-
	 lated	windows  in the same workspace.  Useful for transparent windows.
	 Defaults to 0.

     fullscreen_unfocus
	 Set handling when a fullscreen window loses focus.  Possible values:

	       none	       Leave window fullscreen.  (default)
	       restore	       Exit fullscreen.
	       iconify	       Minimize/hide the window.
	       float	       Exit fullscreen and float window.
	       below	       Set below state on the window.
	       quick_below     Set below state on the window, unset  when  refo-
			       cused.

	 Note that this option is ignored in max layout.

     iconic_enabled
	 Display  the  number  of  iconic (minimized) windows in the status bar.
	 Enable by setting to 1.

     keyboard_mapping
	 Clear all key bindings (not button bindings) and load new bindings from
	 the specified file.  This allows you to load pre-defined  key	bindings
	 for your keyboard layout.  See the "KEYBOARD MAPPING FILES" section be-
	 low  for  a  list of keyboard mapping files that have been provided for
	 several keyboard layouts.

	 Note that /dev/null can be specified if you only want	to  clear  bind-
	 ings.

     layout
	 Select   layout   to  use  at	start-of-day.	Defined  in  the  format
	 ws[idx]:master_grow:master_add:stack_inc:always_raise:stack_mode,  e.g.
	 ws[2]:-4:0:1:0:horizontal  sets  workspace  2	to  the horizontal stack
	 mode, shrinks the master area by 4 ticks and adds  one  window  to  the
	 stack,  while	maintaining  default floating window behavior.	Possible
	 stack_mode  values  are   vertical,   vertical_flip,	vertical_center,
	 vertical_center_flip,	horizontal,  horizontal_flip, horizontal_center,
	 horizontal_center_flip, max and floating.

	 See  master_grow,  master_shrink,  master_add,  master_del,  stack_inc,
	 stack_dec,  stack_balance, and always_raise for more information.  Note
	 that the stacking options are complicated and have  side-effects.   One
	 should  familiarize  oneself  with  these commands before experimenting
	 with the layout option.

	 This setting is not retained at restart.

     layout_order
	 Define the layout sequence used by the cycle_layout  action.	Possible
	 values  are vertical, horizontal, max and floating.  At least one value
	 must	be   specified,   without   duplicates.     The    default    is
	 vertical,horizontal,max,floating.

     max_layout_maximize
	 Automatically maximize windows in max layout.	Note that automatic max-
	 imize behavior is disabled for windows that are unmaximized in max lay-
	 out.	Maximizing  the  window or resetting the layout with stack_reset
	 enables it again.  Enabled by default.  Disable by setting to 0.

     maximize_hide_bar
	 When set to 1, maximize_toggle will also hide/restore the bar	visibil-
	 ity of the affected workspace.  Defaults to 0.

     maximize_hide_other
	 When  a  maximized window is focused and not in below state, hide unre-
	 lated windows in the same workspace.  Useful for  transparent	windows.
	 Defaults to 0.

     maximized_unfocus
	 Set handling when a maximized window loses focus.  Possible values:

	       none	       Leave window maximized.
	       restore	       Unmaximize window.  (default)
	       iconify	       Minimize/hide the window.
	       float	       Unmaximize and float window.
	       below	       Set below state on the window.
	       quick_below     Set  below  state on the window, unset when refo-
			       cused.

	 Note that this option is ignored in max layout.

     modkey
	 Change the current modifier value of MOD  in  bind  entries  that  come
	 later	in the configuration file.  For existing bindings, the new value
	 is substituted for the previous value.  Possible values are  Mod1  (de-
	 fault), Mod2, Mod3, Mod4 and Mod5.

	 Mod1  is  generally  the  Alt key, Mod2 is the Command key on macOS and
	 Mod4 is the Windows key on a PC.  The current modifier key mapping  can
	 be found by running xmodmap(1).

     move_step
	 Set  the  pixel  amount to move a window for the move_left, move_right,
	 move_up, and move_down actions.  Default is 50.

     name
	 Set the name of a workspace at start-of-day.	Defined  in  the  format
	 ws[idx]:name,	e.g.  ws[1]:Console  sets  the	name  of  workspace 1 to
	 "Console".

     program[p]
	 Define new action to spawn a program p.  See the "PROGRAMS" section be-
	 low.

     quirk[c[:i[:n[:t]]]]
	 Add "quirk" for windows with class c, instance  i  (optional),  name  n
	 (optional), and type t (optional.)  See the "QUIRKS" section below.

     region
	 Allocates  a  custom region, removing any autodetected regions that oc-
	 cupy the same space on the specified logical X screen number.	 Defined
	 in    the    format	screen[idx]:widthxheight+x+y[,rotation],    e.g.
	 screen[1]:800x1200+0+0  or  screen[1]:800x1200+0+0,inverted  (with  op-
	 tional rotation).

	 To  make a region span multiple monitors, create a region big enough to
	 cover them all, e.g. screen[1]:2048x768+0+0 makes the region  span  two
	 monitors with 1024x768 resolution sitting one next to the other.

	 Possible  values  for	the  optional  rotation argument are normal (de-
	 fault), left, inverted and  right.   Note  that  rotation  is	used  by
	 workspace_autorotate.

     region_padding
	 Pixel	width  of empty space within region borders.  Disable by setting
	 to 0.

     resize_step
	 Set  the  pixel  amount  to  resize  a  window  for  the  width_shrink,
	 width_grow, height_shrink, and height_grow actions.  Default is 50.

     snap_range
	 Set the distance in pixels a tiled/maximized window must be moved (with
	 the  pointer)	to  unsnap and float freely.  Set to 0 to unsnap immedi-
	 ately.  Default is 25.

     spawn_flags[p]
	 If search pattern p is specified, change the spawn  flags  of	existing
	 program  entries.   If p is omitted, change the default spawn flags for
	 any program or autorun entries that come  later  in  the  configuration
	 file.	 Note  that p is interpreted as a POSIX Extended Regular Expres-
	 sion.

	 One or more of the following flags may be specified  in  a  comma-sepa-
	 rated list:

	       nospawnws       When the program is spawned, do not associate the
			       spawn workspace with the program's windows.
	       xterm_fontadj   Enables	automatic font size adjustments when re-
			       sizing xterm(1) windows.  Note that this works in
			       conjunction with the term_width	option	and  the
			       XTERM_FONTADJ  quirk.   See the term_width option
			       and "QUIRKS" section for more information.
	       optional        Disable program validation.
	       none	       No flags specified.

	 The default is none.

	 In addition to the `=' operator, this option  also  supports  `+='  and
	 `-=' to add/remove flags instead of replacing them.

	 Note  that  the default of associating windows with the spawn workspace
	 and the  xterm_fontadj  flag  both  rely  on  libswmhack.so.	See  the
	 "SWMHACK" section below for more information.

     spawn_position
	 Position  in stack to place newly spawned windows.  Possible values are
	 first, next, previous and last (default).  next and previous are  rela-
	 tive to the focused window.

     stack_enabled
	 Enable or disable displaying the current stacking algorithm in the sta-
	 tus bar.

     stack_mark_floating
	 Set  the  floating  layout  mark  for the bar_format stacking indicator
	 (+S).	Default is '[~]'.

     stack_mark_horizontal
	 Set the horizontal layout mark for the  bar_format  stacking  indicator
	 (+S).	Default is '[-]'.

     stack_mark_horizontal_center
	 Set the horizontal_center layout mark for the bar_format stacking indi-
	 cator (+S).  Default is '(-)'.

     stack_mark_horizontal_center_flip
	 Set  the horizontal_center_flip layout mark for the bar_format stacking
	 indicator (+S).  Default is '(v)'.

     stack_mark_horizontal_flip
	 Set the horizontal_flip layout mark for the bar_format stacking indica-
	 tor (+S).  Default is '[v]'.

     stack_mark_max
	 Set the max layout mark for the  bar_format  stacking	indicator  (+S).
	 Default is '[ ]'.

     stack_mark_vertical
	 Set  the  vertical  layout  mark  for the bar_format stacking indicator
	 (+S).	Default is '[|]'.

     stack_mark_vertical_center
	 Set the vertical_center layout mark for the bar_format stacking indica-
	 tor (+S).  Default is '(|)'.

     stack_mark_vertical_center_flip
	 Set the vertical_center_flip layout mark for  the  bar_format	stacking
	 indicator (+S).  Default is '(>)'.

     stack_mark_vertical_flip
	 Set the vertical_flip layout mark for the bar_format stacking indicator
	 (+S).	Default is '[>]'.

     term_width
	 Set  a  preferred  minimum  width  for  the terminal.	If this value is
	 greater than 0, spectrwm will attempt to adjust the font sizes  in  the
	 terminal  to keep the terminal width above this number as the window is
	 resized.

	 Note that only xterm(1) is currently supported.  The  terminal  process
	 must be spawned with the xterm_fontadj spawn flag and the XTERM_FONTADJ
	 quirk	must  be  set on its window.  See the spawn_flags option and the
	 "QUIRKS" section for more information.  In addition, the  xterm(1)  bi-
	 nary  must not be setuid or setgid, which it is by default on most sys-
	 tems.	Users may need to set program[term] (see the "PROGRAMS" section)
	 to use an alternate copy of the xterm(1) binary without the setgid  bit
	 set.

     uniconify_order
	 Set  the  window  order  in  the  uniconify  menu.  Possible values are
	 earliest, latest, and workspace (default).

     tile_gap
	 Pixel width of empty space  between  tiled  windows.	Negative  values
	 cause	overlap.   Set	this to the opposite of border_width to collapse
	 the border between tiles.  Disable by setting to 0.

     urgent_collapse
	 Minimizes the space consumed by the urgency hint indicator by	removing
	 the  placeholders  for  non-urgent  workspaces, the trailing space when
	 there are urgent windows and the default leading space.  Enable by set-
	 ting to 1.

     urgent_enabled
	 Enable or disable the urgency hint indicator in the status  bar.   Note
	 that  many  terminal emulators require an explicit setting for the bell
	 character to trigger urgency on the window.  In xterm(1), for	example,
	 one needs to add the following line to .Xdefaults:

	       xterm.bellIsUrgent: true

     verbose_layout
	 Enable  or disable displaying the current master window count and stack
	 column/row count in the status bar.   Enable  by  setting  to	1.   See
	 master_add, master_del, stack_inc and stack_dec for more information.

     warp_focus
	 Focus on the target window/workspace/region when clamped.  For example,
	 when  attempting to switch to a workspace that is mapped on another re-
	 gion and workspace_clamp is enabled, focus on the region with the  tar-
	 get workspace.  Enable by setting to 1.

     warp_pointer
	 Centers the pointer on the focused window when using bindings to change
	 focus, switch workspaces, change regions, etc.  Enable by setting to 1.
	 Note  that  this  option  is  ignored	in  focus_mode situations set to
	 follow.

     window_class_enabled
	 Enable or disable displaying the window class name (from  WM_CLASS)  in
	 the status bar.  Enable by setting to 1.

     window_instance_enabled
	 Enable  or  disable displaying the window instance name (from WM_CLASS)
	 in the status bar.  Enable by setting to 1.

     window_name_enabled
	 Enable  or  disable  displaying   the	 window   display   name   (from
	 _NET_WM_NAME/WM_NAME) in the status bar.  Enable by setting to 1.

	 To  prevent  excessively  large window names from pushing the remaining
	 text off the bar, it is limited to 64 characters, by default.	See  the
	 bar_format option for more details.

     workspace_autorotate
	 When  moving workspaces across regions, auto-rotate vertical/horizontal
	 layouts based on rotation data from xrandr(1).  Enable by setting to 1.

     workspace_clamp
	 Prevents workspaces from being swapped when attempting to switch  to  a
	 workspace that is mapped to another region.  Use warp_focus if you want
	 to focus on the region containing the workspace and warp_pointer if you
	 want to also send the pointer.  Enable by setting to 1.

     workspace_indicator
	 Configure  the status bar workspace indicator.  One or more of the fol-
	 lowing options may be specified in a comma-separated list:

	       listcurrent     Include the current workspace.
	       listactive      Include workspaces with windows.
	       listempty       Include empty workspaces.
	       listnamed       Include named workspaces.
	       listurgent      Include workspaces with urgent window(s).
	       listall	       Include all workspaces.
	       hidecurrent     Always exclude the  current  workspace  from  the
			       list.
	       markcurrent     Indicate  the  current  workspace if it is in the
			       list.
	       markactive      Indicate workspaces in the list that are active.
	       markempty       Indicate workspaces in the list that are empty.
	       markurgent      Indicate workspaces in the list that contain  ur-
			       gent window(s).
	       printnames      Display	the  names  of	named  workspaces in the
			       list.
	       noindexes       Hide the index of the workspaces.

	 The default is listcurrent,listactive,markcurrent,printnames

	 Note that markup sequences can be used to style the  workspace  indica-
	 tor.  For example, to change the color of the current workspace:

	       workspace_mark_current = '+@fg=1;'
	       workspace_mark_current_suffix = '+@fg=0;'

     workspace_limit
	 Set the total number of workspaces available.	Minimum is 1, maximum is
	 100,  default is 10.  Note that workspaces 23 and above do not have de-
	 fault bindings.  See the "BINDINGS" section below for defaults and cus-
	 tomization.   To  limit  the  workspaces  listed  in	the   bar,   see
	 bar_workspace_limit.

     workspace_mark_active
	 Set   the   string   inserted	 before   active   workspaces	in   the
	 workspace_indicator.  Default is '^'.

     workspace_mark_active_suffix
	 Set   the   string   inserted	 after	 active   workspaces   in    the
	 workspace_indicator.  Default is '' (empty string).

     workspace_mark_current
	 Set   the   string   inserted	before	the  current  workspace  in  the
	 workspace_indicator.  Default is '*'.

     workspace_mark_current_suffix
	 Set  the  string  inserted  after  the   current   workspace	in   the
	 workspace_indicator.  Default is '' (empty string).

     workspace_mark_empty
	 Set	the   string   inserted   before   empty   workspaces	in   the
	 workspace_indicator.  Default is '-'.

     workspace_mark_empty_suffix
	 Set   the   string   inserted	 after	 empty	 workspaces    in    the
	 workspace_indicator.  Default is '' (empty string).

     workspace_mark_urgent
	 Set   the   string   inserted	 before   urgent   workspaces	in   the
	 workspace_indicator.  Default is '!'.

     workspace_mark_urgent_suffix
	 Set   the   string   inserted	 after	 urgent   workspaces   in    the
	 workspace_indicator.  Default is '' (empty string).

STACK MODES
     vertical		 Master  area  is  on  the left and stack area is on the
			 right.  Additional  windows  are  vertically  tiled  in
			 stack area.

     vertical flipped	 Same as above but stack and master areas are swapped.

     horizontal 	 Master area is on the top and stack area is on the bot-
			 tom.	Additional  windows  are  horizontally	tiled in
			 stack area.

     horizontal flipped  Same as above but stack and master areas are swapped.

     max		 The focused window occupies the  whole  region,  except
			 for the bar (if enabled).

     floating		 Windows are untiled and can be resized and positioned.

WINDOW STATES
     These  can  be  set/unset by the corresponding toggle actions listed in the
     "BINDINGS" section below.

     floating	 The window is stacked above others and is not in a tile; it may
		 be freely resized and positioned.

     below	 The window is floating, but stacked below others.

     maximized	 The window occupies the work area of the region (area that  ex-
		 cludes  space	reserved by the bar, docks/panels, etc.)  By de-
		 fault, focusing another window removes the maximized  state  of
		 the  window.	See maximized_unfocus to configure unfocused be-
		 havior.

     fullscreen  The window occupies the whole region.	By default, focusing an-
		 other window does not remove the fullscreen state of  the  win-
		 dow.  See fullscreen_unfocus to configure unfocused behavior.

     free	 The window is floating, but not bound by regions, workspaces or
		 their	layouts.  It is always mapped, unless iconified, and may
		 be resized and positioned anywhere.

PROGRAMS
     spectrwm allows you to define custom actions to  launch  programs	of  your
     choice  and  then	bind  them  the  same as with built-in actions.  See the
     "BINDINGS" section below.

     Custom programs in the configuration file are specified as follows:

	   program[action] = progpath [arg [arg ...]]

     action is any identifier that does not conflict with a built-in  action  or
     keyword, progpath is the desired program, and arg is zero or more arguments
     to the program.

     With the exception of '~' expansion, program calls are executed as-is with-
     out  any  interpretation.	A shell can be called to execute shell commands.
     (e.g. sh -c 'command string').

     Remember that when using `#' in your program call, it must be escaped  with
     a backslash, i.e. \#

     The  following  argument variables are replaced with values at the time the
     program is spawned:

	   $bar_border
	   $bar_color
	   $bar_color_selected
	   $bar_font
	   $bar_font_color
	   $bar_font_color_selected
	   $color_focus
	   $color_unfocus
	   $color_urgent
	   $dmenu_bottom    -b if bar_at_bottom is enabled, otherwise ''  (empty
			    string.)
	   $region_index
	   $workspace_index

     Example:

	   program[ff] = /usr/local/bin/firefox http://spectrwm.org/
	   bind[ff] = MOD+Shift+b # Now M-S-b launches firefox

     To cancel the previous, unbind it:

	   bind[] = MOD+Shift+b

     A	number	of built-in actions spawn a program as part of their implementa-
     tion.  The respective default program entries are as follows:

	   term 	    xterm
	   lock 	    xlock
	   menu 	    dmenu_run $dmenu_bottom -fn $bar_font -nb $bar_color
			    -nf  $bar_font_color  -sb  $bar_color_selected   -sf
			    $bar_font_color_selected
	   search	    dmenu  $dmenu_bottom -i -fn $bar_font -nb $bar_color
			    -nf  $bar_font_color  -sb  $bar_color_selected   -sf
			    $bar_font_color_selected
	   name_workspace   dmenu  $dmenu_bottom  -p Workspace -fn $bar_font -nb
			    $bar_color -nf  $bar_font_color  -sb  $bar_color_se-
			    lected -sf $bar_font_color_selected
	   initscr	    initscreen.sh	 # optional
	   screenshot_all   screenshot.sh full	 # optional
	   screenshot_wind  screenshot.sh window # optional

     Note  that  search  is  required  by  the search_win, search_workspace, and
     uniconify actions and does not have a direct binding.

     With the exception of the default entries marked "optional", validation  is
     performed to ensure the program exists.  If validation fails, the exception
     can  be resolved by installing the program, adding the optional flag to the
     program entry's spawn flags, or by disabling the program entry  by  freeing
     the respective binding.

     For example, to add the optional flag to lock:

	   spawn_flags[lock] += optional

     To unbind lock and prevent it from being validated:

	   bind[] = MOD+Shift+Delete

     Note  that when a program is spawned, spectrwm aims to place its windows in
     its spawn workspace.  See the "SWMHACK" section below for more information,
     tips, and workarounds if a program fails to spawn in the correct workspace.

BINDINGS
     spectrwm provides many functions (or actions) accessed via key  or  pointer
     button bindings.

     The default bindings are listed below:

	   <Button1>	       focus
	   M-<Button1>	       move
	   M-<Button3>	       resize
	   M-S-<Button3>       resize_centered
	   M-S-<Return>        term
	   M-p		       menu
	   M-S-q	       quit
	   M-q		       restart
	   <unbound>	       restart_of_day
	   <unbound>	       reload
	   M-<Space>	       cycle_layout
	   M-\		       center_layout
	   M-S-\	       flip_layout
	   <unbound>	       prior_layout
	   <unbound>	       layout_vertical
	   <unbound>	       layout_horizontal
	   <unbound>	       layout_max
	   <unbound>	       layout_floating
	   M-S-<Space>	       stack_reset
	   <unbound>	       stack_balance
	   M-h		       master_shrink
	   M-l		       master_grow
	   M-,		       master_add
	   M-.		       master_del
	   M-S-,	       stack_inc
	   M-S-.	       stack_dec
	   M-<Return>	       swap_main
	   M-j, M-<TAB>        focus_next
	   M-k, M-S-<TAB>      focus_prev
	   M-m		       focus_main
	   M-`		       focus_free
	   M-S-a	       focus_prior
	   M-u		       focus_urgent
	   M-S-j	       swap_next
	   M-S-k	       swap_prev
	   M-b		       bar_toggle
	   M-S-b	       bar_toggle_ws
	   M-x		       wind_del
	   M-S-x	       wind_kill
	   M-<1-9,0,F1-F12>    ws_<1-22>
	   <unbound>	       ws_<23-100>
	   M-S-<1-9,0,F1-F12>  mvws_<1-22>
	   <unbound>	       mvws_<23-100>
	   M-<Keypad 1-9>      rg_<1-9>
	   M-S-<Keypad 1-9>    mvrg_<1-9>
	   <unbound>	       mvrg_next
	   <unbound>	       mvrg_prev
	   <unbound>	       ws_empty
	   <unbound>	       ws_empty_move
	   M-<Right>	       ws_next
	   M-<Left>	       ws_prev
	   M-<Up>	       ws_next_all
	   M-<Down>	       ws_prev_all
	   M-a		       ws_prior
	   M-S-<Down>	       ws_prev_move
	   M-S-<Up>	       ws_next_move
	   M-S-<Right>	       rg_next
	   M-S-<Left>	       rg_prev
	   <unbound>	       rg_move_next
	   <unbound>	       rg_move_prev
	   M-s		       screenshot_all
	   M-S-s	       screenshot_wind
	   M-S-v	       version
	   M-t		       float_toggle
	   M-S-t	       below_toggle
	   M-S-`	       free_toggle
	   M-S-<Delete>        lock
	   M-S-i	       initscr
	   M-w		       iconify
	   M-S-w	       uniconify
	   <unbound>	       uniconify_quick
	   M-e		       maximize_toggle
	   M-S-e	       fullscreen_toggle
	   M-r		       raise
	   M-S-r	       always_raise
	   M-v		       button2
	   M--		       width_shrink
	   M-=		       width_grow
	   M-S--	       height_shrink
	   M-S-=	       height_grow
	   M-[		       move_left
	   M-]		       move_right
	   M-S-[	       move_up
	   M-S-]	       move_down
	   M-S-/	       name_workspace
	   M-/		       search_workspace
	   M-f		       search_win
	   M-d		       debug_toggle (debug mode only)
	   M-S-d	       dumpwins (debug mode only)

     The action names and descriptions are listed below:

	   focus	       Focus window/region under pointer.
	   move 	       Move   window   with  pointer  while  binding  is
			       pressed.
	   resize	       Resize  window  with  pointer  while  binding  is
			       pressed.
	   resize_centered     Same as resize but keep window centered.
	   term 	       Spawn a new terminal (see "PROGRAMS" above).
	   menu 	       Menu (see "PROGRAMS" above).
	   quit 	       Quit spectrwm.
	   restart	       Restart spectrwm.
	   restart_of_day      Same  as  restart  but  the configuration file is
			       loaded in full, excluding autorun.
	   reload	       Reload the configuration without  restarting  and
			       reinitialize the bar(s) along with bar_action (if
			       used).
	   cycle_layout        Switch to the next layout.
	   center_layout       Toggle centering of the master area.
	   flip_layout	       Swap the master and stacking areas.
	   prior_layout        Switch to the last used layout.
	   layout_vertical     Switch to vertical layout.
	   layout_horizontal   Switch to horizontal layout.
	   layout_max	       Switch to max layout.
	   layout_floating     Switch to floating layout.
	   stack_reset	       Reset layout.
	   stack_balance       Balance master/stacking area.
	   master_shrink       Shrink master area.
	   master_grow	       Grow master area.
	   master_add	       Add windows to master area.
	   master_del	       Remove windows from master area.
	   stack_inc	       Add columns/rows to stacking area.
	   stack_dec	       Remove columns/rows from stacking area.
	   swap_main	       Move current window to master area.
	   focus_next	       Focus next window in workspace.
	   focus_prev	       Focus previous window in workspace.
	   focus_main	       Focus on main window in workspace.
	   focus_prior	       Focus last focused window in workspace.
	   focus_free	       Focus on a window in free mode, if any.
	   focus_urgent        Focus  on  next window with the urgency hint flag
			       set.  The workspace is switched if needed.
	   swap_next	       Swap with next window in workspace.
	   swap_prev	       Swap with previous window in workspace.
	   bar_toggle	       Toggle overall visibility of status bars.
	   bar_toggle_ws       Toggle status bar on current workspace.
	   wind_del	       Delete current window.
	   wind_kill	       Kill the program that created the current window.
	   ws_n 	       Switch to workspace n, where n is at least 1.
	   mvws_n	       Move current window to workspace n, where n is at
			       least 1.
	   rg_n 	       Focus on region n, where n is at least 1.
	   mvrg_n	       Move current window to region n, where  n  is  at
			       least 1.
	   mvrg_next	       Move current window to workspace in next region.
	   mvrg_prev	       Move  current window to workspace in previous re-
			       gion.
	   ws_empty	       Switch to the first empty workspace.
	   ws_empty_move       Switch to the first empty workspace and move cur-
			       rent window.
	   ws_next	       Switch to next workspace with a window in it.
	   ws_prev	       Switch to previous workspace with a window in it.
	   ws_next_all	       Switch to next workspace.
	   ws_prev_all	       Switch to previous workspace.
	   ws_next_move        Switch to next workspace with the current window.
	   ws_prev_move        Switch to previous  workspace  with  the  current
			       window.
	   ws_prior	       Switch to last visited workspace.
	   rg_next	       Switch to next region.
	   rg_prev	       Switch to previous region.
	   rg_move_next        Switch to next region and move current workspace.
	   rg_move_prev        Switch  to previous region and move current work-
			       space.
	   screenshot_all      Take screenshot of  entire  screen  (if	enabled)
			       (see "PROGRAMS" above).
	   screenshot_wind     Take  screenshot  of selected window (if enabled)
			       (see "PROGRAMS" above).
	   version	       Toggle version in status bar.
	   float_toggle        Toggle focused window between tiled and floating.
	   below_toggle        Toggle below state on current window.
	   free_toggle	       Toggle focused window between workspace mode  and
			       free mode.
	   lock 	       Lock screen (see "PROGRAMS" above).
	   initscr	       Reinitialize  physical  screens	(see  "PROGRAMS"
			       above).
	   iconify	       Minimize (unmap) currently focused window.
	   uniconify	       Restore (map) window returned by dmenu(1)  selec-
			       tion.
	   uniconify_quick     Restore (map) the most recently iconified window.
	   maximize_toggle     Toggle maximization of focused window.
	   fullscreen_toggle   Toggle fullscreen state of focused window.
	   raise	       Raise the current window.
	   always_raise        When  set  tiled  windows  are allowed to obscure
			       floating windows.
	   button2	       Fake a middle mouse button click (Button2).
	   width_shrink        Shrink the width of a floating window.
	   width_grow	       Grow the width of a floating window.
	   height_shrink       Shrink the height of a floating window.
	   height_grow	       Grow the height of a floating window.
	   move_left	       Move a floating window a step to the left.
	   move_right	       Move a floating window a step to the right.
	   move_up	       Move a floating window a step upwards.
	   move_down	       Move a floating window a step downwards.
	   name_workspace      Name the current workspace.
	   search_workspace    Search for a workspace.
	   search_win	       Search the windows in the current workspace.
	   debug_toggle        Toggles debug overlay.  (debug mode only)
	   dumpwins	       Dump current window/focus/stacking state to debug
			       log.  (debug mode only)

     Custom bindings in the configuration file are specified as follows:

	   bind[action] = combo

     action is one of the actions listed above (or empty to unbind) and combo is
     in the form of zero or more modifier keys and/or special  arguments  (Mod1,
     Shift,  Control,  MOD,  etc.)  and a normal key (b, Space, etc) or a button
     (Button1 .. Button255), separated by `+'.	Multiple key/button combinations
     may be bound to the same action.

     Special arguments:

	   MOD	       Substituted for the currently defined modkey.
	   ANYMOD      Select all modifier combinations not handled  by  another
		       binding.
	   REPLAY      Reprocess binding press/release events for other programs
		       to    handle.	Unavailable   for   move,   resize   and
		       resize_centered.

     MOD example:

	   bind[reset] = Mod4+q # bind Windows-key + q to reset
	   bind[] = Mod1+q # unbind Alt + q
	   bind[move] = MOD+Button3 # Bind move to M-Button3
	   bind[] = MOD+Button1 # Unbind default move binding.

     ANYMOD example:

	   bind[focus] = ANYMOD+Button3
	   bind[move] = MOD+Button3

     In the above example, M-<Button3> initiates move and <Button3> pressed with
     any other combination of modifiers sets focus to  the  window/region  under
     the pointer.

     REPLAY example:

	   bind[focus] = REPLAY+Button3

     In  the  above  example, when <Button3> is pressed without any modifier(s),
     focus is set to the window under the pointer and the button press is passed
     to the window.

     To bind non-latin characters such as a or <pi> you must enter the xkb char-
     acter name instead of the character itself.  Run xev(1), focus  the  window
     and press the specific key and in the terminal output read the symbol name.
     In the following example for a:

	   KeyPress event, serial 41, synthetic NO, window 0x2600001,
	       root 0x15a, subw 0x0, time 106213808, (11,5), root:(359,823),
	       state 0x0, keycode 24 (keysym 0xe5, aring), same_screen YES,
	       XLookupString gives 2 bytes: (c3 a5) "a"
	       XmbLookupString gives 2 bytes: (c3 a5) "a"
	       XFilterEvent returns: False

     The xkb name is aring.  In other words, in spectrwm.conf add:

	   bind[program] = MOD+aring

     To  clear	all  default  keyboard	bindings  and  specify your own, see the
     keyboard_mapping option.

KEYBOARD MAPPING FILES
     Keyboard mapping files for  several  keyboard  layouts  are  listed  below.
     These  files  can be used with the keyboard_mapping setting to load pre-de-
     fined key bindings for the specified keyboard layout.

	   spectrwm_cz.conf	Czech Republic keyboard layout
	   spectrwm_es.conf	Spanish keyboard layout
	   spectrwm_fr.conf	French keyboard layout
	   spectrwm_fr_ch.conf	Swiss French keyboard layout
	   spectrwm_se.conf	Swedish keyboard layout
	   spectrwm_us.conf	United States keyboard layout

QUIRKS
     spectrwm provides "quirks" which handle windows that must be  treated  spe-
     cially  in  a  tiling  window  manager, such as some dialogs and fullscreen
     apps.

     The default quirks are described below:

	   .*:.*:.*:splash,dialog		   FLOAT
	   .*:.*:.*:toolbar,utility		   FLOAT + ANYWHERE
	   .*:.*:.*:notification		   FLOAT + ANYWHERE  +	MINIMAL-
						   BORDER + NOFOCUSONMAP
	   Firefox-bin:firefox-bin		   TRANSSZ
	   Firefox:Dialog			   FLOAT
	   Gimp:gimp				   FLOAT + ANYWHERE
	   MPlayer:xv				   FLOAT  +  FULLSCREEN + FOCUS-
						   PREV
	   OpenOffice.org 2.4:VCLSalFrame	   FLOAT
	   OpenOffice.org 3.1:VCLSalFrame	   FLOAT
	   pcb:pcb				   FLOAT
	   xine:Xine Window			   FLOAT + ANYWHERE
	   xine:xine Panel			   FLOAT + ANYWHERE
	   xine:xine Video Fullscreen Window	   FULLSCREEN + FLOAT
	   Xitk:Xitk Combo			   FLOAT + ANYWHERE
	   Xitk:Xine Window			   FLOAT + ANYWHERE
	   XTerm:xterm				   XTERM_FONTADJ

     The quirks themselves are described below:

	   ANYWHERE		  Allow window to position itself, uncentered.
	   BELOW		  Put the window into  below  state  upon  being
				  managed.
	   FLOAT		  This	window	should not be tiled, but allowed
				  to float freely.
	   FOCUSONMAP_SINGLE	  When the window first appears on  the  screen,
				  change  focus  to  the  window if there are no
				  other windows on the workspace with  the  same
				  WM_CLASS  class/instance value.  Has no effect
				  when focus_mode is set to follow.
	   FOCUSPREV		  On exit force focus on previously focused  ap-
				  plication  not  previous  application  in  the
				  stack.
	   FULLSCREEN		  Remove border to allow window to use full  re-
				  gion size.
	   ICONIFY		  Hide/minimize the window upon being managed.
	   IGNOREPID		  Ignore  the  PID  when determining the initial
				  workspace for a new window.  Especially useful
				  for terminal windows that share a process.
	   IGNORESPAWNWS	  Ignore the spawn  workspace  when  determining
				  the initial workspace for a new window.
	   IGNOREURGENT 	  Ignore urgency hint.
	   MAXIMIZE		  Put the window into maximized state upon being
				  managed.
	   MINIMALBORDER	  Remove  border  when	window	is unfocused and
				  floating.
	   NOFOCUSCYCLE 	  Remove from normal focus cycle (focus_prev  or
				  focus_next).	 The window can still be focused
				  using search_win.
	   NOFOCUSONMAP 	  Do not change focus  to  the	window	when  it
				  first  appears  on  the screen.  Has no effect
				  when focus_mode is set to follow.
	   NOFOCUSPOINTER	  Do not focus the window via  pointer	interac-
				  tion.   The  window can still be focused using
				  key bindings.
	   OBEYAPPFOCUSREQ	  When an application requests focus on the win-
				  dow via a  _NET_ACTIVE_WINDOW  client  message
				  (source  indication of 1), comply with the re-
				  quest.  Note that a  source  indication  of  0
				  (unspecified) or 2 (pager) are always obeyed.
	   TRANSSZ		  Adjusts size on transient windows that are too
				  small  using	dialog_ratio (see "CONFIGURATION
				  FILES").
	   WS[n]		  Force a new window to appear on  workspace  n.
				  Specify -1 to put the window into free mode so
				  that	it  is	mapped independent of workspaces
				  and regions.
	   XTERM_FONTADJ	  Adjust xterm(1)  fonts  when	resizing.   Note
				  that	this  requires	the  xterm_fontadj spawn
				  flag to be set on  the  autorun/program  entry
				  when	 the   program	 is  spawned.	See  the
				  spawn_flags option for information on  how  to
				  enable it.
	   NOTILE		  Disallow  the  window  from being tiled.  Note
				  that the window will always  float  regardless
				  of whether _NET_WM_STATE_ABOVE is set.

     Custom quirks in the configuration file are specified as follows:

	   quirk[class[:instance[:name[:type]]]] {=|+=|-=} quirk [+ quirk ...]

     class,  instance  (optional), name (optional), and type (optional) are used
     to determine which window(s) the quirk(s) apply to.  class and instance are
     regex search patterns for the respective  fields  of  the	WM_CLASS  window
     property.	  name	 is   a   regex  search  pattern  for  the  window  name
     (WM_NAME/_NET_WM_NAME.)  type is a comma-separated list of zero or more  of
     the  following  window types (_NET_WM_WINDOW_TYPE): desktop, dock, toolbar,
     menu,  utility,  splash,  dialog,	 dropdown_menu,   popup_menu,	tooltip,
     notification,  combo, dnd, and normal.  Leave this field blank to match any
     window type.  quirk is one of the quirks from the list above.

     When a window is managed, quirk entries are applied in the order  specified
     in  the  configuration  file.   The  assignment operator determines how the
     quirks are applied.  When assigning quirks with `=', quirks are replaced on
     matching windows.	To add or remove quirks, assign them with `+='	or  `-='
     instead.

     Note  that  patterns are interpreted as POSIX Extended Regular Expressions.
     Any ':', '[' or ']' must be escaped with '\'.  See regex(7) for more infor-
     mation on POSIX Extended Regular Expressions.

     For example:

	   quirk[MPlayer] = FLOAT + FULLSCREEN + FOCUSPREV # Float all windows having a class of 'MPlayer'
	   quirk[.*] = FLOAT # Float all windows by default.
	   quirk[.*:.*:.*] = FLOAT # Same as above.
	   quirk[firefox:Navigator] = FLOAT # Float all Firefox browser windows.
	   quirk[::Console] = FLOAT # Float windows with WM_CLASS not set and a window name of 'Console'.
	   quirk[\[0-9\].*:.*:\[\[\:alnum\:\]\]*] = FLOAT # Float windows with WM_CLASS class beginning with a number, any WM_CLASS instance and a _NET_WM_NAME/WM_NAME either blank or containing alphanumeric characters without spaces.
	   quirk[pcb:pcb] = NONE # Remove the default quirk entry.
	   quirk[.*:ws10] += WS[10] # Force windows with a WM_CLASS name of 'ws10' to workspace 10 without removing existing quirks.
	   quirk[.*:.*:.*:splash,dialog] = FLOAT + ANYWHERE # Override default quirk entry.

     You can obtain class, instance and name by running xprop(1) and then click-
     ing on the desired window.  In the following example  the	main  window  of
     Firefox was clicked:

	   $ xprop | grep -E "^(WM_CLASS|_NET_WM_NAME|WM_NAME)"
	   WM_CLASS(STRING) = "Navigator", "Firefox"
	   WM_NAME(STRING) = "spectrwm - ConformalOpenSource"
	   _NET_WM_NAME(UTF8_STRING) = "spectrwm - ConformalOpenSource"

     Note that xprop(1) displays WM_CLASS as:

	   WM_CLASS(STRING) = "<instance>", "<class>"

     In the example above the quirk entry would be:

	   quirk[Firefox:Navigator] = FLOAT

     spectrwm also automatically assigns quirks to windows based on the value of
     the window's _NET_WM_WINDOW_TYPE property as follows:

	   _NET_WM_WINDOW_TYPE_TOOLBAR		FLOAT + ANYWHERE
	   _NET_WM_WINDOW_TYPE_UTILITY		FLOAT + ANYWHERE
	   _NET_WM_WINDOW_TYPE_SPLASH		FLOAT
	   _NET_WM_WINDOW_TYPE_DIALOG		FLOAT

     In all other cases, no automatic quirks are assigned to the window.  Quirks
     specified in the configuration file override the automatic quirks.

EWMH
     spectrwm  partially  implements  the  Extended  Window Manager Hints (EWMH)
     specification.  This enables controlling windows as well as spectrwm itself
     from external scripts and programs.  This is achieved by spectrwm	respond-
     ing to certain ClientMessage events.  From the terminal these events can be
     conveniently  sent  using	tools such as wmctrl(1) and xdotool(1).  For the
     actual format of these ClientMessage events, see the EWMH specification.

     The id of the currently focused window is stored in the  _NET_ACTIVE_WINDOW
     property  of the root window.  This can be used for example to retrieve the
     title of the currently active window with xprop(1) and grep(1):

	   $ WINDOWID=`xprop -root _NET_ACTIVE_WINDOW | grep -o "0x.*"`
	   $ xprop -id $WINDOWID _NET_WM_NAME | grep -o "\".*\""

     A window can be focused by sending a _NET_ACTIVE_WINDOW client  message  to
     the  root window.	For example, using wmctrl(1) to send the message (assum-
     ing 0x4a0000b is the id of the window to be focused):

	   $ wmctrl -i -a 0x4a0000b

     Windows can be closed by sending a _NET_CLOSE_WINDOW client message to  the
     root  window.   For  example, using wmctrl(1) to send the message (assuming
     0x4a0000b is the id of the window to be closed):

	   $ wmctrl -i -c 0x4a0000b

     Windows  can  be  floated	and  un-floated  by  adding  or   removing   the
     _NET_WM_STATE_ABOVE  atom	from  the  _NET_WM_STATE property of the window.
     This can be achieved by sending a _NET_WM_STATE client message to the  root
     window.   For example, the following toggles the floating state of a window
     using wmctrl(1) to send the message (assuming 0x4a0000b is the  id  of  the
     window to be floated or un-floated):

	   $ wmctrl -i -r 0x4a0000b -b toggle,above

     Windows   can   also   be	 iconified   and  un-iconified	by  substituting
     _NET_WM_STATE_HIDDEN for _NET_WM_STATE_ABOVE in the previous example:

	   $ wmctrl -i -r 0x4a0000b -b toggle,hidden

     Floating windows can also be resized and moved by	sending  a  _NET_MOVERE-
     SIZE_WINDOW  client  message  to  the root window.  For example, using wmc-
     trl(1) to send the message (assuming 0x4a0000b is the id of the  window  to
     be resize/moved):

	   $ wmctrl -i -r 0x4a0000b -e 0,100,50,640,480

     This moves the window to (100,50) and resizes it to 640x480.

     Note   that   if  a  window  has  been  manually  positioned  via	binding,
     _NET_MOVERESIZE_WINDOW requests are ignored unless the window has the  ANY-
     WHERE  quirk,  the  workspace is in floating layout, or the window is work-
     space-free.  Requests are also ignored on maximized and fullscreen windows.

SWMHACK
     When spawning a program  via  an  autorun	or  program  entry  without  the
     nospawnws	flag,  spectrwm  aims to place the program's windows (if any) in
     its spawn workspace.  To  accomplish  this  "spawn-in-workspace"  behavior,
     spectrwm  must  determine	the intended spawn workspace when managing a new
     window.  Since it cannot be done with X11 alone, libswmhack.so is	included
     to make this feature possible.

     When  a  program  is  spawned,  spectrwm  automatically sets LD_PRELOAD and
     _SWM_WS in the program's spawn environment to enable libswmhack.so when  it
     is executed.  Note that LD_PRELOAD is the path to libswmhack.so and _SWM_WS
     is the spawn workspace for any windows created by the program.

     When  running programs from terminals, scripts, etc, the inherited environ-
     ment may need to be configured.  It is possible to override the spawn work-
     space by setting _SWM_WS to a different value.  Alternatively, _SWM_WS  can
     be  unset(1) or set to a blank value to disable "spawn-in-workspace" behav-
     ior.  Note that workspaces are counted from 0.  `-1' can  be  specified  to
     put windows into workspace-free mode.

     For  example,  to play a video with mpv(1) on workspace 10 without changing
     the spawn workspace in the environment:

	   $ _SWM_WS=9 mpv video.mkv

     Play the video in free mode so that it remains mapped when switching  work-
     spaces.

	   $ _SWM_WS=-1 mpv video.mkv

     Disable  "spawn-in-workspace" in the environment so that new windows map on
     whichever workspace happens to be focused.

	   $ unset _SWM_WS

     Change the environment to spawn programs in free mode.

	   $ export _SWM_WS=-1

     When spawning a program that creates windows via a daemon, ensure the  dae-
     mon is started with the correct LD_PRELOAD in its environment.

     For example, when starting urxvtd(1) via xinit(1), LD_PRELOAD must be spec-
     ified.

	   LD_PRELOAD=/usr/lib/libswmhack.so.0.0 urxvtd -q -o -f

     Note  that  some  operating systems may ignore LD_PRELOAD if certain condi-
     tions are not met.  It is advised to check the man page of ld.so.

     In situations where libswmhack.so cannot be used, it is possible to  use  a
     quirk to spawn a program in a specific workspace.

     e.g. launch an xterm(1) in workspace 2 on startup:

	   quirk[XTerm:ws2] += WS[2]
	   autorun = ws[2]:xterm -name ws2

     Launch a chromium(1) window in workspace 3 on startup:

	   quirk[Chromium:chromium:ws3] += WS[3]
	   autorun = ws[3]:chromium --window-name="ws3" --new-window

     If the "spawn-in-workspace" behavior is not desired, it is possible to dis-
     able  it before programs are spawned by setting the nospawnws spawn flag on
     spawn entries via the spawn_flags option:

	   # Make 'nospawnws' the default for any autorun/program entries that are
	   # added/replaced below this line in the configuration file:
	   spawn_flags = nospawnws
	   program[pcmanfm] = pcmanfm -n  # 'nospawnws' is set
	   autorun = ws[1]:firefox	  # ws[1] is ignored since 'nospawnws' is set
	   program[lock] = xlock	  # the replaced default entry has 'nospawnws' set

	   # Add 'nospawnws' to an existing entry:
	   spawn_flags[term] += nospawnws

     Alternatively, the IGNORESPAWNWS and IGNOREPID quirks  can  be  applied  to
     windows:

	   # Disable spawn-in-workspace on PCManFM windows:
	   quirk[Pcmanfm] = IGNORESPAWNWS

	   # Disable spawn-in-workspace on all windows, including those spawned via autorun:
	   quirk[.*] += IGNORESPAWNWS + IGNOREPID

     Note that XCB programs that roll their own X11 requests (e.g. Chromium) are
     currently unsupported by libswmhack.so.

SIGNALS
     Sending  spectrwm	a HUP signal will restart it.  USR1 will reload the con-
     figuration without  restarting  and  reinitialize	the  bar(s)  along  with
     bar_action (if used).

FILES
     ~/.spectrwm.conf		      spectrwm user specific settings.
     /usr/local/etc/spectrwm.conf     spectrwm global settings.

HISTORY
     spectrwm was inspired by xmonad & dwm.

AUTHORS
     spectrwm was written by:

	   Marco Peereboom <marco@peereboom.us>
	   Ryan Thomas McBride <mcbride@countersiege.com>
	   Darrin Chandler <dwchandler@stilyagin.com>
	   Pierre-Yves Ritschard <pyr@spootnik.org>
	   Tuukka Kataja <stuge@xor.fi>
	   Jason L. Wright <jason@thought.net>
	   Reginald Kennedy <rk@rejii.com>
	   Lawrence Teo <lteo@lteo.net>
	   Tiago Cunha <tcunha@gmx.com>
	   David Hill <dhill@mindcry.org>

FreeBSD ports 15.quarterly	 August 26, 2025		     SPECTRWM(1)

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

home | help