mirror of
https://github.com/vale981/spectrwm
synced 2025-03-04 09:21:39 -05:00
1544 lines
40 KiB
Groff
1544 lines
40 KiB
Groff
.\" Copyright (c) 2009-2012 Marco Peereboom <marco@peereboom.us>
|
|
.\" Copyright (c) 2009 Darrin Chandler <dwchandler@stilyagin.com>
|
|
.\" Copyright (c) 2011-2018 Reginald Kennedy <rk@rejii.com>
|
|
.\" Copyright (c) 2011-2012 Lawrence Teo <lteo@lteo.net>
|
|
.\" Copyright (c) 2011-2012 Tiago Cunha <tcunha@gmx.com>
|
|
.\" Copyright (c) 2012 David Hill <dhill@mindcry.org>
|
|
.\"
|
|
.\" Permission to use, copy, modify, and distribute this software for any
|
|
.\" purpose with or without fee is hereby granted, provided that the above
|
|
.\" copyright notice and this permission notice appear in all copies.
|
|
.\"
|
|
.\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
|
.\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
|
.\" MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
|
.\" ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
|
.\" WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
|
.\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
|
.\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
|
.\"
|
|
.Dd $Mdocdate: August 29 2018 $
|
|
.Dt SPECTRWM 1
|
|
.Os
|
|
.Sh NAME
|
|
.Nm spectrwm
|
|
.Nd window manager for X11
|
|
.Sh SYNOPSIS
|
|
.Nm spectrwm
|
|
.Op Fl c Ar file
|
|
.Op Fl v
|
|
.Sh OPTIONS
|
|
.Bl -tag -width Ds
|
|
.It Fl c Ar file
|
|
Specify a configuration file to load instead of scanning for one.
|
|
.It Fl v
|
|
Print version and exit.
|
|
.El
|
|
.Sh DESCRIPTION
|
|
.Nm
|
|
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.
|
|
.Pp
|
|
When
|
|
.Nm
|
|
starts up, it reads settings from its configuration file,
|
|
.Pa spectrwm.conf .
|
|
See the
|
|
.Sx CONFIGURATION FILES
|
|
section below.
|
|
.Pp
|
|
The following notation is used throughout this page:
|
|
.Pp
|
|
.Bl -tag -width Ds -offset indent -compact
|
|
.It Cm M
|
|
Meta
|
|
.It Cm S
|
|
Shift
|
|
.It Aq Cm Name
|
|
Named key or button
|
|
.El
|
|
.Pp
|
|
.Nm
|
|
is very simple in its use.
|
|
Most of the actions are initiated via key or pointer bindings.
|
|
See the
|
|
.Sx BINDINGS
|
|
section below for defaults and customizations.
|
|
.Sh CONFIGURATION FILES
|
|
.Nm
|
|
looks for the user-configuration file in the following order:
|
|
.Pp
|
|
.Bl -enum -offset indent -compact
|
|
.It
|
|
.Pa $XDG_CONFIG_HOME/spectrwm/spectrwm.conf
|
|
.It
|
|
.Pa ~/.config/spectrwm/spectrwm.conf
|
|
(if
|
|
.Pa $XDG_CONFIG_HOME
|
|
is either not set or empty)
|
|
.It
|
|
.Pa ~/.spectrwm.conf .
|
|
.El
|
|
.Pp
|
|
If the user-configuration file is not found,
|
|
.Nm
|
|
then looks for the global configuration file in the following order:
|
|
.Pp
|
|
.Bl -enum -offset indent -compact
|
|
.It
|
|
.Pa $XDG_CONFIG_DIRS/spectrwm/spectrwm.conf
|
|
(each colon-separated directory in
|
|
.Pa $XDG_CONFIG_DIRS )
|
|
.It
|
|
.Pa /etc/xdg/spectrwm/spectrwm.conf
|
|
(if
|
|
.Pa $XDG_CONFIG_DIRS
|
|
is either not set or empty)
|
|
.It
|
|
.Pa /etc/spectrwm.conf
|
|
.El
|
|
.Pp
|
|
The format of the file is
|
|
.Pp
|
|
.Dl Ar keyword Li = Ar setting
|
|
.Pp
|
|
For example:
|
|
.Pp
|
|
.Dl color_focus = red
|
|
.Pp
|
|
Enabling or disabling an option is done by using 1 or 0 respectively.
|
|
.Pp
|
|
Colors need to be specified per the
|
|
.Xr XQueryColor 3
|
|
specification.
|
|
.Pp
|
|
Comments begin with a #.
|
|
When a literal
|
|
.Ql #
|
|
is desired in an option, then it must be escaped with a backslash, i.e. \e#
|
|
.Pp
|
|
The file supports the following keywords:
|
|
.Bl -tag -width 2m
|
|
.It Ic autorun
|
|
Launch an application in a specified workspace at start-of-day.
|
|
Defined in the format
|
|
.Li ws Ns Bo Ar idx Bc : Ns Ar application ,
|
|
e.g. ws[2]:xterm launches an
|
|
.Xr xterm 1
|
|
in workspace 2.
|
|
.Pp
|
|
Note that workspace mapping is handled via
|
|
.Pa libswmhack.so .
|
|
When
|
|
.Ic autorun
|
|
spawns windows via a daemon, ensure the daemon is started with the correct
|
|
.Pa LD_PRELOAD
|
|
in its environment.
|
|
.Pp
|
|
For example, starting
|
|
.Xr urxvtd 1
|
|
via
|
|
.Xr xinit 1 :
|
|
.Bd -literal -offset indent
|
|
LD_PRELOAD=/usr/lib/libswmhack.so.0.0 urxvtd -q -o -f
|
|
.Ed
|
|
.Pp
|
|
Spawned programs automatically have
|
|
.Pa LD_PRELOAD
|
|
set when executed.
|
|
.Pp
|
|
It is advised to check the man page of
|
|
.Pa ld.so
|
|
as
|
|
.Pa LD_PRELOAD
|
|
is sometimes ignored by some operating systems.
|
|
A workaround is available, e.g. launch an xterm(1) in workspace 2:
|
|
.Bd -literal -offset indent
|
|
autorun = ws[2]:xterm -name ws2
|
|
quirk[XTerm:ws2] = WS[2]
|
|
.Ed
|
|
.It Ic bar_action
|
|
External script that populates additional information in the status bar,
|
|
such as battery life.
|
|
.It Ic bar_action_expand
|
|
Process bar_format character sequences in
|
|
.Ic bar_action
|
|
output; default is 0.
|
|
.It Ic bar_at_bottom
|
|
Place the statusbar at the bottom of each region instead of the top.
|
|
.It Ic bar_border Ns Bq Ar x
|
|
Border color of the status bar(s) in screen
|
|
.Ar x .
|
|
.It Ic bar_border_unfocus Ns Bq Ar x
|
|
Border color of the status bar(s) on unfocused region(s) in screen
|
|
.Ar x .
|
|
.It Ic bar_border_width
|
|
Set status bar border thickness in pixels.
|
|
Disable border by setting to 0.
|
|
.It Ic bar_color Ns Bq Ar x
|
|
Background color of the status bar(s) in screen
|
|
.Ar x .
|
|
.Pp
|
|
A comma separated list of up to 10 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
|
|
.Ic +@bg=n;
|
|
where n is between 0 and 9.
|
|
.It Ic bar_color_selected Ns Bq Ar x
|
|
Background color for selections on the status bar(s) in screen
|
|
.Ar x .
|
|
Defaults to the value of
|
|
.Ic bar_border .
|
|
.It Ic bar_enabled
|
|
Set default
|
|
.Ic bar_toggle
|
|
state; default is 1.
|
|
.It Ic bar_enabled_ws Ns Bq Ar x
|
|
Set default
|
|
.Ic bar_toggle_ws
|
|
state on workspace
|
|
.Ar x ;
|
|
default is 1.
|
|
.It Ic 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 syntax, font set will be used.
|
|
If at least one entry is Xft, Xft will be used.
|
|
.Pp
|
|
The default is to use font set.
|
|
.Pp
|
|
If Xft is used, a comma-separated list of up to 10 fonts can be specified.
|
|
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 sequence
|
|
.Ic +@fn=n;
|
|
where n is between 0 and 9.
|
|
.Pp
|
|
Also note that
|
|
.Xr dmenu 1
|
|
does not support Xft fonts.
|
|
.Pp
|
|
Xft examples:
|
|
.Bd -literal -offset indent
|
|
bar_font = Terminus:style=Regular:pixelsize=14:antialias=true
|
|
|
|
bar_font = -*-profont-medium-*-*-*-11-*-*-*-*-*-*-*,Terminus:pixelsize=14,\
|
|
-*-clean-medium-*-*-*-12-*-*-*-*-*-*-*
|
|
.Ed
|
|
.Pp
|
|
Font set examples:
|
|
.Bd -literal -offset indent
|
|
bar_font = -*-terminus-medium-*-*-*-14-*-*-*-*-*-*-*
|
|
|
|
bar_font = -*-profont-medium-*-*-*-11-*-*-*-*-*-*-*,\
|
|
-*-terminus-medium-*-*-*-14-*-*-*-*-*-*-*,\
|
|
-*-clean-medium-*-*-*-12-*-*-*-*-*-*-*
|
|
.Ed
|
|
.Pp
|
|
To list the available fonts in your system see
|
|
.Xr fc-list 1
|
|
or
|
|
.Xr xlsfonts 1
|
|
manpages.
|
|
The
|
|
.Xr xfontsel 1
|
|
application can help with the XLFD setting.
|
|
.It Ic bar_font_color Ns Bq Ar x
|
|
Foreground color of the status bar(s) in screen
|
|
.Ar x .
|
|
.Pp
|
|
A comma separated list of up to 10 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
|
|
.Ic +@fg=n;
|
|
where n is between 0 and 9.
|
|
.It Ic bar_font_color_selected Ns Bq Ar x
|
|
Foreground color for selections on the status bar(s) in screen
|
|
.Ar x .
|
|
Defaults to the value of
|
|
.Ic bar_color .
|
|
.It Ic bar_font_pua
|
|
Specify a font which uses the Unicode Private Use Area (U+E000 -> U+F8FF).
|
|
Some fonts use these code points to provide special icon glyphs.
|
|
Available only with Xft fonts.
|
|
.It Ic bar_format
|
|
Set the bar format string, overriding
|
|
.Ic clock_format
|
|
and all of the
|
|
.Ic enabled
|
|
options.
|
|
The format is passed through
|
|
.Xr strftime 3
|
|
before being used.
|
|
It may contain the following character sequences:
|
|
.Bl -column "Character sequence" "Replaced with" -offset indent
|
|
.It Sy "Character sequence" Ta Sy "Replaced with"
|
|
.It Li "+<" Ta "Pad with a space"
|
|
.It Li "+A" Ta "Output of the external script"
|
|
.It Li "+C" Ta "Window class (from WM_CLASS)"
|
|
.It Li "+D" Ta "Workspace name"
|
|
.It Li "+F" Ta "Floating indicator"
|
|
.It Li "+I" Ta "Workspace index"
|
|
.It Li "+L" Ta "Workspace list indicator"
|
|
.It Li "+M" Ta "Number of iconic (minimized) windows in workspace"
|
|
.It Li "+N" Ta "Screen number"
|
|
.It Li "+P" Ta "Window class and instance separated by a colon"
|
|
.It Li "+R" Ta "Region index"
|
|
.It Li "+S" Ta "Stacking algorithm"
|
|
.It Li "+T" Ta "Window instance (from WM_CLASS)"
|
|
.It Li "+U" Ta "Urgency hint"
|
|
.It Li "+V" Ta "Program version"
|
|
.It Li "+W" Ta "Window name (from _NET_WM_NAME/WM_NAME)"
|
|
.It Li "+|[weight][justify]" Ta Begin new section and reset markup
|
|
sequence effects.
|
|
.Pp
|
|
.Ic weight
|
|
is a positive integer used to allocate horizontal space between 'L', 'C'
|
|
and 'R' sections (see justify).
|
|
The default weight is 1.
|
|
.Pp
|
|
.Ic justify
|
|
can have the value L, C, R or T. L, C, R are for left, center and right
|
|
justified sections respectively.
|
|
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
|
|
.Ic bar_justify
|
|
is used.
|
|
.It Li "++" Ta "A literal" Ql +
|
|
.It Li "+@" Ta "Prefix for text markup sequences"
|
|
.El
|
|
.Pp
|
|
The currently recognized text markup sequences are:
|
|
.Bl -column "Character sequence" "Action" -offset indent
|
|
.It Sy "Character sequence" Ta Sy "Action"
|
|
.It Li "+@fn=n;" Ta Selects font n (from 0 to 9) from
|
|
.Ic bar_font .
|
|
.It Li "+@fg=n;" Ta Selects foreground color n (from 0 to 9) from
|
|
.Ic bar_font_color .
|
|
.It Li "+@bg=n;" Ta Selects background color n (from 0 to 9) from
|
|
.Ic bar_color .
|
|
.It Li "+@stp;" Ta Stops the interpretation of markup sequences.
|
|
Any markup sequence found after +@stp will appear as normal characters in the
|
|
status bar.
|
|
.El
|
|
.Pp
|
|
Note that markup sequences in
|
|
.Ic bar_action
|
|
script output will only be processed if
|
|
.Ic bar_action_expand
|
|
is enabled.
|
|
.Pp
|
|
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 '_' character in the sequence.
|
|
For example: +_64W, +64_W and +_64_W enable padding before (right alignment),
|
|
after (left alignment), and both before and after (center alignment) window
|
|
name, respectively.
|
|
Any characters that don't match the specification are copied as-is.
|
|
.It Ic bar_justify
|
|
Justify the status bar text.
|
|
Possible values are
|
|
.Ar left ,
|
|
.Ar center ,
|
|
and
|
|
.Ar right .
|
|
.Pp
|
|
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
|
|
.Ic bar_format
|
|
option for more details.
|
|
.It Ic bind Ns Bq Ar x
|
|
Bind key or button combo to action
|
|
.Ar x .
|
|
See the
|
|
.Sx BINDINGS
|
|
section below.
|
|
.It Ic border_width
|
|
Set window border thickness in pixels.
|
|
Disable all borders by setting to 0.
|
|
.It Ic 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 containment effect by setting to 0.
|
|
.It Ic 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
|
|
.Ic bar_action
|
|
script.
|
|
.It Ic iconic_enabled
|
|
Display the number of iconic (minimized) windows in the status bar.
|
|
Enable by setting to 1.
|
|
.It Ic color_focus
|
|
Border color of the currently focused window.
|
|
Default is red.
|
|
.It Ic color_focus_maximized
|
|
Border color of the currently focused, maximized window.
|
|
Defaults to the value of
|
|
.Ic color_focus .
|
|
.It Ic color_unfocus
|
|
Border color of unfocused windows, default is rgb:88/88/88.
|
|
.It Ic color_unfocus_maximized
|
|
Border color of unfocused, maximized windows.
|
|
Defaults to the value of
|
|
.Ic color_unfocus .
|
|
.It Ic dialog_ratio
|
|
Some applications have dialogue windows that are too small to be useful.
|
|
This ratio is the screen size to what they will be resized.
|
|
For example, 0.6 is 60% of the physical screen size.
|
|
.It Ic 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
|
|
.Ar always
|
|
removes border from lone tiled windows, regardless of the bar being
|
|
enabled/disabled.
|
|
Defaults to 0.
|
|
.It Ic focus_close
|
|
Window to put focus when the focused window is closed.
|
|
Possible values are
|
|
.Ar first ,
|
|
.Ar next ,
|
|
.Ar previous
|
|
(default) and
|
|
.Ar last .
|
|
.Ar next
|
|
and
|
|
.Ar previous
|
|
are relative to the window that is closed.
|
|
.It Ic 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.
|
|
.It Ic focus_default
|
|
Window to put focus when no window has been focused.
|
|
Possible values are
|
|
.Ar first
|
|
and
|
|
.Ar last
|
|
(default).
|
|
.It Ic focus_mode
|
|
Window focus behavior with respect to the pointer.
|
|
Possible values:
|
|
.Pp
|
|
.Bl -tag -width "default" -offset indent -compact
|
|
.It Ar default
|
|
Set window focus on border crossings caused by cursor motion and
|
|
window interaction.
|
|
.It Ar follow
|
|
Set window focus on all cursor border crossings, including workspace switches
|
|
and changes to layout.
|
|
.It Ar manual
|
|
Set window focus on window interaction only.
|
|
.El
|
|
.It Ic maximize_hide_bar
|
|
When set to 1,
|
|
.Ic maximize_toggle
|
|
will also hide/restore the bar visibility of the affected workspace.
|
|
Defaults to 0.
|
|
.It Ic 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
|
|
.Sx KEYBOARD MAPPING FILES
|
|
section below for a list of keyboard mapping files that have been provided
|
|
for several keyboard layouts.
|
|
.Pp
|
|
Note that
|
|
.Pa /dev/null
|
|
can be specified if you only want to clear bindings.
|
|
.It Ic layout
|
|
Select layout to use at start-of-day.
|
|
Defined in the format
|
|
.Li ws Ns Bo Ar idx Bc : Ns Ar master_grow : Ns Ar master_add : Ns Ar \
|
|
stack_inc : Ns Ar always_raise : Ns Ar stack_mode ,
|
|
e.g. ws[2]:-4:0:1:0:horizontal sets worskspace 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
|
|
.Ar stack_mode
|
|
values are
|
|
.Ar vertical ,
|
|
.Ar vertical_flip ,
|
|
.Ar horizontal ,
|
|
.Ar horizontal_flip
|
|
and
|
|
.Ar max .
|
|
.Pp
|
|
See
|
|
.Ic master_grow ,
|
|
.Ic master_shrink ,
|
|
.Ic master_add ,
|
|
.Ic master_del ,
|
|
.Ic stack_inc ,
|
|
.Ic stack_dec ,
|
|
.Ic stack_balance ,
|
|
and
|
|
.Ic 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
|
|
.Ic layout
|
|
option.
|
|
.Pp
|
|
This setting is not retained at restart.
|
|
.It Ic modkey
|
|
Change mod key.
|
|
Mod1 is generally the ALT key and Mod4 is the windows key on a PC.
|
|
.It Ic name
|
|
Set the name of a workspace at start-of-day.
|
|
Defined in the format
|
|
.Li ws Ns Bo Ar idx Bc : Ns Ar name ,
|
|
e.g. ws[1]:Console sets the name of workspace 1 to
|
|
.Dq Console .
|
|
.It Ic program Ns Bq Ar p
|
|
Define new action to spawn a program
|
|
.Ar p .
|
|
See the
|
|
.Sx PROGRAMS
|
|
section below.
|
|
.It Ic quirk Ns Bq Ar c Ns Bq : Ns Ar i Ns Bq : Ns Ar n
|
|
Add "quirk" for windows with class
|
|
.Ar c ,
|
|
instance
|
|
.Ar i
|
|
(optional) and name
|
|
.Ar n
|
|
(optional).
|
|
See the
|
|
.Sx QUIRKS
|
|
section below.
|
|
.It Ic region
|
|
Allocates a custom region, removing any autodetected regions which occupy the
|
|
same space on the screen.
|
|
Defined in the format
|
|
.Li screen Ns Bo Ar idx Ns Bc : Ns Ar width Ns x Ns Ar height Ns + Ns Ar x Ns \
|
|
+ Ns Ar y ,
|
|
e.g. screen[1]:800x1200+0+0.
|
|
.Pp
|
|
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.
|
|
.It Ic region_padding
|
|
Pixel width of empty space within region borders.
|
|
Disable by setting to 0.
|
|
.It Ic spawn_position
|
|
Position in stack to place newly spawned windows.
|
|
Possible values are
|
|
.Ar first ,
|
|
.Ar next ,
|
|
.Ar previous
|
|
and
|
|
.Ar last
|
|
(default).
|
|
.Ar next
|
|
and
|
|
.Ar previous
|
|
are relative to the focused window.
|
|
.It Ic stack_enabled
|
|
Enable or disable displaying the current stacking algorithm in the status bar.
|
|
.It Ic term_width
|
|
Set a preferred minimum width for the terminal.
|
|
If this value is greater than 0,
|
|
.Nm
|
|
will attempt to adjust the font sizes in the terminal to keep the terminal
|
|
width above this number as the window is resized.
|
|
Only
|
|
.Xr xterm 1
|
|
is currently supported.
|
|
The
|
|
.Xr xterm 1
|
|
binary must not be setuid or setgid, which it is by default on most systems.
|
|
Users may need to set program[term] (see the
|
|
.Sx PROGRAMS
|
|
section) to use an alternate copy of the
|
|
.Xr xterm 1
|
|
binary without the setgid bit set.
|
|
.It Ic tile_gap
|
|
Pixel width of empty space between tiled windows.
|
|
Negative values cause overlap.
|
|
Set this to the opposite of
|
|
.Ic border_width
|
|
to collapse the border between tiles.
|
|
Disable by setting to 0.
|
|
.It Ic 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 setting to 1.
|
|
.It Ic 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
|
|
.Xr xterm 1 ,
|
|
for example, one needs to add the following line to
|
|
.Pa .Xdefaults :
|
|
.Bd -literal -offset indent
|
|
xterm.bellIsUrgent: true
|
|
.Ed
|
|
.It Ic 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
|
|
.Ar master_add ,
|
|
.Ar master_del ,
|
|
.Ar stack_inc
|
|
and
|
|
.Ar stack_dec
|
|
for more information.
|
|
.It Ic workspace_clamp
|
|
Prevents workspaces from being swapped when attempting to switch to a workspace
|
|
that is mapped to another region.
|
|
Use
|
|
.Ar warp_focus
|
|
if you want to focus on the region containing the workspace and
|
|
.Ar warp_pointer
|
|
if you want to also send the pointer.
|
|
Enable by setting to 1.
|
|
.It Ic workspace_auto_pin
|
|
Pins every workspace to the region where it first appeared.
|
|
The focus warping is analogous to how
|
|
.Ar workspace_clamp
|
|
handles that. If you want to unpin a workspace, you can release it with
|
|
.Ar ws_release
|
|
binding. Empty workspaces are unpinned by default.
|
|
.It Ic window_class_enabled
|
|
Enable or disable displaying the window class name (from WM_CLASS) in the
|
|
status bar.
|
|
Enable by setting to 1.
|
|
.It Ic window_instance_enabled
|
|
Enable or disable displaying the window instance name (from WM_CLASS) in the
|
|
status bar.
|
|
Enable by setting to 1.
|
|
.It Ic 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.
|
|
.Pp
|
|
To prevent excessively large window names from pushing the remaining text off
|
|
the bar, it's limited to 64 characters, by default.
|
|
See the
|
|
.Ic bar_format
|
|
option for more details.
|
|
.It Ic 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
|
|
region and
|
|
.Ar workspace_clamp
|
|
is enabled, focus on the region with the target workspace.
|
|
Enable by setting to 1.
|
|
.It Ic 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.
|
|
.It Ic workspace_indicator
|
|
Configure the status bar workspace indicator.
|
|
One or more of the following options may be specified in a comma-separated
|
|
list:
|
|
.Pp
|
|
.Bl -tag -width "markcurrentXXX" -offset indent -compact
|
|
.It Ar listcurrent
|
|
Include the current workspace.
|
|
.It Ar listactive
|
|
Include workspaces with windows.
|
|
.It Ar listempty
|
|
Include empty workspaces.
|
|
.It Ar listnamed
|
|
Include named workspaces.
|
|
.It Ar listurgent
|
|
Include workspaces with urgent window(s).
|
|
.It Ar listall
|
|
Include all workspaces.
|
|
.It Ar hidecurrent
|
|
Always exclude the current workspace from the list.
|
|
.It Ar markcurrent
|
|
Indicate the current workspace if it is in the list.
|
|
.It Ar markurgent
|
|
Indicate workspaces in the list that contain urgent window(s).
|
|
.It Ar printnames
|
|
Display the names of named workspaces in the list.
|
|
.El
|
|
.Pp
|
|
The default is
|
|
.Ar listcurrent , Ns Ar listactive , Ns Ar markcurrent , Ns Ar printnames
|
|
.It Ic workspace_limit
|
|
Set the total number of workspaces available.
|
|
Minimum is 1, maximum is 22, default is 10.
|
|
.El
|
|
.Sh PROGRAMS
|
|
.Nm
|
|
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
|
|
.Sx BINDINGS
|
|
section below.
|
|
.Pp
|
|
Custom programs in the configuration file are specified as follows:
|
|
.Pp
|
|
.Dl program Ns Bo Ar action Bc = Ar progpath Op Ar arg Op Ar arg ...
|
|
.Pp
|
|
.Ar action
|
|
is any identifier that does not conflict with a built-in action or keyword,
|
|
.Ar progpath
|
|
is the desired program, and
|
|
.Ar arg
|
|
is zero or more arguments to the program.
|
|
.Pp
|
|
Remember that when using
|
|
.Ql #
|
|
in your program call, it must be escaped with a backslash, i.e. \e#
|
|
.Pp
|
|
The following argument variables will be substituted for values at the time the
|
|
program is spawned:
|
|
.Pp
|
|
.Bl -tag -width "$bar_font_color" -offset indent -compact
|
|
.It Cm $bar_border
|
|
.It Cm $bar_color
|
|
.It Cm $bar_color_selected
|
|
.It Cm $bar_font
|
|
.It Cm $bar_font_color
|
|
.It Cm $bar_font_color_selected
|
|
.It Cm $color_focus
|
|
.It Cm $color_unfocus
|
|
.It Cm $dmenu_bottom
|
|
\-b if
|
|
.Ic bar_at_bottom
|
|
is enabled.
|
|
.It Cm $region_index
|
|
.It Cm $workspace_index
|
|
.El
|
|
.Pp
|
|
Example:
|
|
.Bd -literal -offset indent
|
|
program[ff] = /usr/local/bin/firefox http://spectrwm.org/
|
|
bind[ff] = MOD+Shift+b # Now M-S-b launches firefox
|
|
.Ed
|
|
.Pp
|
|
To cancel the previous, unbind it:
|
|
.Bd -literal -offset indent
|
|
bind[] = MOD+Shift+b
|
|
.Ed
|
|
.Pp
|
|
Default programs:
|
|
.Bl -tag -width "screenshot_wind" -offset indent -compact
|
|
.It Cm term
|
|
xterm
|
|
.It Cm lock
|
|
xlock
|
|
.It Cm menu
|
|
dmenu_run $dmenu_bottom \-fn $bar_font \-nb $bar_color \-nf $bar_font_color
|
|
\-sb $bar_color_selected \-sf $bar_font_color_selected
|
|
.It Cm search
|
|
dmenu $dmenu_bottom \-i \-fn $bar_font \-nb $bar_color \-nf $bar_font_color
|
|
\-sb $bar_color_selected \-sf $bar_font_color_selected
|
|
.It Cm name_workspace
|
|
dmenu $dmenu_bottom \-p Workspace \-fn $bar_font \-nb $bar_color \-nf
|
|
$bar_font_color \-sb $bar_color_selected \-sf $bar_font_color_selected
|
|
.It Cm initscr
|
|
initscreen.sh # optional
|
|
.It Cm screenshot_all
|
|
screenshot.sh full # optional
|
|
.It Cm screenshot_wind
|
|
screenshot.sh window # optional
|
|
.El
|
|
.Pp
|
|
Note that optional default programs will not be validated unless overridden.
|
|
If a default program fails validation, you can resolve the exception by
|
|
installing the program, modifying the program call or disabling the program by
|
|
freeing the respective binding.
|
|
.Pp
|
|
For example, to override
|
|
.Ic lock :
|
|
.Bd -literal -offset indent
|
|
program[lock] = xscreensaver\-command \-lock
|
|
.Ed
|
|
.Pp
|
|
To unbind
|
|
.Ic lock
|
|
and prevent it from being validated:
|
|
.Bd -literal -offset indent
|
|
bind[] = MOD+Shift+Delete
|
|
.Ed
|
|
.Sh BINDINGS
|
|
.Nm
|
|
provides many functions (or actions) accessed via key or pointer bindings.
|
|
.Pp
|
|
The default bindings are listed below:
|
|
.Pp
|
|
.Bl -tag -width "M-j, M-<TAB>XXXXXX" -offset indent -compact
|
|
.It Aq Cm Button1
|
|
focus
|
|
.It Cm M- Ns Aq Cm Button1
|
|
move
|
|
.It Cm M- Ns Aq Cm Button3
|
|
resize
|
|
.It Cm M-S- Ns Aq Cm Button3
|
|
resize_centered
|
|
.It Cm M-S- Ns Aq Cm Return
|
|
term
|
|
.It Cm M-p
|
|
menu
|
|
.It Cm M-S-q
|
|
quit
|
|
.It Cm M-q
|
|
restart
|
|
.It Aq Ar unbound
|
|
restart_of_day
|
|
.It Cm M- Ns Aq Cm Space
|
|
cycle_layout
|
|
.It Cm M-S-\e
|
|
flip_layout
|
|
.It Aq Ar unbound
|
|
layout_vertical
|
|
.It Aq Ar unbound
|
|
layout_horizontal
|
|
.It Aq Ar unbound
|
|
layout_max
|
|
.It Cm M-S- Ns Aq Cm Space
|
|
stack_reset
|
|
.It Aq Ar unbound
|
|
stack_balance
|
|
.It Cm M-h
|
|
master_shrink
|
|
.It Cm M-l
|
|
master_grow
|
|
.It Cm M-,\&
|
|
master_add
|
|
.It Cm M-.\&
|
|
master_del
|
|
.It Cm M-S-,\&
|
|
stack_inc
|
|
.It Cm M-S-.\&
|
|
stack_dec
|
|
.It Cm M- Ns Aq Cm Return
|
|
swap_main
|
|
.It Xo
|
|
.Cm M-j ,
|
|
.Cm M- Ns Aq Cm TAB
|
|
.Xc
|
|
focus_next
|
|
.It Xo
|
|
.Cm M-k ,
|
|
.Cm M-S- Ns Aq Cm TAB
|
|
.Xc
|
|
focus_prev
|
|
.It Cm M-m
|
|
focus_main
|
|
.It Cm M-u
|
|
focus_urgent
|
|
.It Cm M-S-j
|
|
swap_next
|
|
.It Cm M-S-k
|
|
swap_prev
|
|
.It Cm M-b
|
|
bar_toggle
|
|
.It Cm M-S-b
|
|
bar_toggle_ws
|
|
.It Cm M-x
|
|
wind_del
|
|
.It Cm M-S-x
|
|
wind_kill
|
|
.It Cm M- Ns Aq Ar 1-9,0,F1-F12
|
|
.Pf ws_ Aq Ar 1-22
|
|
.It Cm M-S- Ns Aq Ar 1-9,0,F1-F12
|
|
.Pf mvws_ Ns Aq Ar 1-22
|
|
.It Cm M- Ns Aq Ar Keypad 1-9
|
|
.Pf rg_ Aq Ar 1-9
|
|
.It Cm M-S- Ns Aq Ar Keypad 1-9
|
|
.Pf mvrg_ Aq Ar 1-9
|
|
.It Aq Ar unbound
|
|
mvrg_next
|
|
.It Aq Ar unbound
|
|
mvrg_prev
|
|
.It Aq Ar unbound
|
|
ws_empty
|
|
.It Aq Ar unbound
|
|
ws_empty_move
|
|
.It Cm M- Ns Aq Cm Right
|
|
ws_next
|
|
.It Cm M- Ns Aq Cm Left
|
|
ws_prev
|
|
.It Cm M- Ns Aq Cm Up
|
|
ws_next_all
|
|
.It Cm M- Ns Aq Cm Down
|
|
ws_prev_all
|
|
.It Cm M-a
|
|
ws_prior
|
|
.It Cm M-S- Ns Aq Cm Down
|
|
ws_prev_move
|
|
.It Cm M-S- Ns Aq Cm Up
|
|
ws_next_move
|
|
.It Cm M-S- Ns Aq Cm Right
|
|
rg_next
|
|
.It Cm M-S- Ns Aq Cm Left
|
|
rg_prev
|
|
.It Aq Ar unbound
|
|
rg_move_next
|
|
.It Aq Ar unbound
|
|
rg_move_prev
|
|
.It Cm M-s
|
|
screenshot_all
|
|
.It Cm M-S-s
|
|
screenshot_wind
|
|
.It Cm M-S-v
|
|
version
|
|
.It Cm M-t
|
|
float_toggle
|
|
.It Cm M-S- Ns Aq Cm Delete
|
|
lock
|
|
.It Cm M-S-i
|
|
initscr
|
|
.It Cm M-w
|
|
iconify
|
|
.It Cm M-S-w
|
|
uniconify
|
|
.It Cm M-e
|
|
maximize_toggle
|
|
.It Cm M-S-e
|
|
fullscreen_toggle
|
|
.It Cm M-r
|
|
raise
|
|
.It Cm M-S-r
|
|
always_raise
|
|
.It Cm M-v
|
|
button2
|
|
.It Cm M--
|
|
width_shrink
|
|
.It Cm M-=
|
|
width_grow
|
|
.It Cm M-S--
|
|
height_shrink
|
|
.It Cm M-S-=
|
|
height_grow
|
|
.It Cm M-[
|
|
move_left
|
|
.It Cm M-]\&
|
|
move_right
|
|
.It Cm M-S-[
|
|
move_up
|
|
.It Cm M-S-]\&
|
|
move_down
|
|
.It Cm M-S-a
|
|
ws_release
|
|
.It Cm M-S-/
|
|
name_workspace
|
|
.It Cm M-/
|
|
search_workspace
|
|
.It Cm M-f
|
|
search_win
|
|
.El
|
|
.Pp
|
|
The action names and descriptions are listed below:
|
|
.Pp
|
|
.Bl -tag -width "layout_horizontalX" -offset indent -compact
|
|
.It Cm focus
|
|
Focus window/region under pointer.
|
|
.It Cm move
|
|
Move window with pointer while binding is pressed.
|
|
.It Cm resize
|
|
Resize window with pointer while binding is pressed.
|
|
.It Cm resize_centered
|
|
Same as
|
|
.Ic resize
|
|
but keep window centered.
|
|
.It Cm term
|
|
Spawn a new terminal (see
|
|
.Sx PROGRAMS
|
|
above).
|
|
.It Cm menu
|
|
Menu (see
|
|
.Sx PROGRAMS
|
|
above).
|
|
.It Cm quit
|
|
Quit
|
|
.Nm .
|
|
.It Cm restart
|
|
Restart
|
|
.Nm .
|
|
.It Cm restart_of_day
|
|
Same as
|
|
.Ic restart
|
|
but configuration file is loaded in full.
|
|
.It Cm cycle_layout
|
|
Cycle layout.
|
|
.It Cm flip_layout
|
|
Swap the master and stacking areas.
|
|
.It Cm layout_vertical
|
|
Switch to vertical layout.
|
|
.It Cm layout_horizontal
|
|
Switch to horizontal layout.
|
|
.It Cm layout_max
|
|
Switch to max layout.
|
|
.It Cm stack_reset
|
|
Reset layout.
|
|
.It Cm stack_balance
|
|
Balance master/stacking area.
|
|
.It Cm master_shrink
|
|
Shrink master area.
|
|
.It Cm master_grow
|
|
Grow master area.
|
|
.It Cm master_add
|
|
Add windows to master area.
|
|
.It Cm master_del
|
|
Remove windows from master area.
|
|
.It Cm stack_inc
|
|
Add columns/rows to stacking area.
|
|
.It Cm stack_dec
|
|
Remove columns/rows from stacking area.
|
|
.It Cm swap_main
|
|
Move current window to master area.
|
|
.It Cm focus_next
|
|
Focus next window in workspace.
|
|
.It Cm focus_prev
|
|
Focus previous window in workspace.
|
|
.It Cm focus_main
|
|
Focus on main window in workspace.
|
|
.It Cm focus_urgent
|
|
Focus on next window with the urgency hint flag set.
|
|
The workspace is switched if needed.
|
|
.It Cm swap_next
|
|
Swap with next window in workspace.
|
|
.It Cm swap_prev
|
|
Swap with previous window in workspace.
|
|
.It Cm bar_toggle
|
|
Toggle overall visibility of status bars.
|
|
.It Cm bar_toggle_ws
|
|
Toggle status bar on current workspace.
|
|
.It Cm wind_del
|
|
Delete current window in workspace.
|
|
.It Cm wind_kill
|
|
Destroy current window in workspace.
|
|
.It Cm ws_ Ns Ar n
|
|
Switch to workspace
|
|
.Ar n ,
|
|
where
|
|
.Ar n
|
|
is 1 through
|
|
.Ic workspace_limit .
|
|
.It Cm mvws_ Ns Ar n
|
|
Move current window to workspace
|
|
.Ar n ,
|
|
where
|
|
.Ar n
|
|
is 1 through
|
|
.Ic workspace_limit .
|
|
.It Cm rg_ Ns Ar n
|
|
Focus on region
|
|
.Ar n ,
|
|
where
|
|
.Ar n
|
|
is 1 through 9.
|
|
.It Cm mvrg_ Ns Ar n
|
|
Move current window to region
|
|
.Ar n ,
|
|
where
|
|
.Ar n
|
|
is 1 through 9.
|
|
.It Cm mvrg_next
|
|
Move current window to workspace in next region.
|
|
.It Cm mvrg_prev
|
|
Move current window to workspace in previous region.
|
|
.It Cm ws_empty
|
|
Switch to the first empty workspace.
|
|
.It Cm ws_empty_move
|
|
Switch to the first empty workspace and move current window.
|
|
.It Cm ws_next
|
|
Switch to next workspace with a window in it.
|
|
.It Cm ws_prev
|
|
Switch to previous workspace with a window in it.
|
|
.It Cm ws_next_all
|
|
Switch to next workspace.
|
|
.It Cm ws_prev_all
|
|
Switch to previous workspace.
|
|
.It Cm ws_next_move
|
|
Switch to next workspace with the current window.
|
|
.It Cm ws_prev_move
|
|
Switch to previous workspace with the current window.
|
|
.It Cm ws_prior
|
|
Switch to last visited workspace.
|
|
.It Cm rg_next
|
|
Switch to next region.
|
|
.It Cm rg_prev
|
|
Switch to previous region.
|
|
.It Cm rg_move_next
|
|
Switch region to next screen.
|
|
.It Cm rg_move_prev
|
|
Switch region to previous screen.
|
|
.It Cm screenshot_all
|
|
Take screenshot of entire screen (if enabled) (see
|
|
.Sx PROGRAMS
|
|
above).
|
|
.It Cm screenshot_wind
|
|
Take screenshot of selected window (if enabled) (see
|
|
.Sx PROGRAMS
|
|
above).
|
|
.It Cm version
|
|
Toggle version in status bar.
|
|
.It Cm float_toggle
|
|
Toggle focused window between tiled and floating.
|
|
.It Cm lock
|
|
Lock screen (see
|
|
.Sx PROGRAMS
|
|
above).
|
|
.It Cm initscr
|
|
Reinitialize physical screens (see
|
|
.Sx PROGRAMS
|
|
above).
|
|
.It Cm iconify
|
|
Minimize (unmap) currently focused window.
|
|
.It Cm uniconify
|
|
Restore (map) window returned by
|
|
.Xr dmenu 1
|
|
selection.
|
|
.It Cm maximize_toggle
|
|
Toggle maximization of focused window.
|
|
.It Cm fullscreen_toggle
|
|
Toggle fullscreen state of focused window.
|
|
.It Cm raise
|
|
Raise the current window.
|
|
.It Cm always_raise
|
|
When set tiled windows are allowed to obscure floating windows.
|
|
.It Cm button2
|
|
Fake a middle mouse button click (Button2).
|
|
.It Cm width_shrink
|
|
Shrink the width of a floating window.
|
|
.It Cm width_grow
|
|
Grow the width of a floating window.
|
|
.It Cm height_shrink
|
|
Shrink the height of a floating window.
|
|
.It Cm height_grow
|
|
Grow the height of a floating window.
|
|
.It Cm move_left
|
|
Move a floating window a step to the left.
|
|
.It Cm move_right
|
|
Move a floating window a step to the right.
|
|
.It Cm move_up
|
|
Move a floating window a step upwards.
|
|
.It Cm move_down
|
|
Move a floating window a step downwards.
|
|
.It Cm ws_release
|
|
Unpin a workspace from a region.
|
|
.It Cm name_workspace
|
|
Name the current workspace.
|
|
.It Cm search_workspace
|
|
Search for a workspace.
|
|
.It Cm search_win
|
|
Search the windows in the current workspace.
|
|
.El
|
|
.Pp
|
|
Custom bindings in the configuration file are specified as follows:
|
|
.Pp
|
|
.Dl bind Ns Bo Ar action Bc = Ar combo
|
|
.Pp
|
|
.Ar action
|
|
is one of the actions listed above (or empty to unbind) and
|
|
.Ar combo
|
|
is in the form of zero or more modifier keys and/or special arguments
|
|
(Mod1, Shift, MOD, etc.) and a normal key (b, Space, etc)
|
|
or a button (Button1 .. Button255), separated by
|
|
.Ql + .
|
|
Multiple key/button combinations may be bound to the same action.
|
|
.Pp
|
|
Special arguments:
|
|
.Bl -tag -width "anymodxxxx" -offset indent -compact
|
|
.It Cm MOD
|
|
Substituted for the currently defined
|
|
.Ic modkey .
|
|
.It Cm ANYMOD
|
|
Select all modifier combinations not handled by another binding.
|
|
.It Cm REPLAY
|
|
Reprocess binding press/release events for other programs to handle.
|
|
Unavailable for
|
|
.Ic move ,
|
|
.Ic resize
|
|
and
|
|
.Ic resize_centered .
|
|
.El
|
|
.Pp
|
|
.Cm MOD
|
|
example:
|
|
.Bd -literal -offset indent
|
|
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.
|
|
.Ed
|
|
.Pp
|
|
.Cm ANYMOD
|
|
example:
|
|
.Bd -literal -offset indent
|
|
bind[focus] = ANYMOD+Button3
|
|
bind[move] = MOD+Button3
|
|
.Ed
|
|
.Pp
|
|
In the above example,
|
|
.Cm M- Ns Aq Cm Button3
|
|
initiates
|
|
.Ic move
|
|
and
|
|
.Aq Cm Button3
|
|
pressed with any other combination of modifiers sets focus to the window/region
|
|
under the pointer.
|
|
.Pp
|
|
.Cm REPLAY
|
|
example:
|
|
.Bd -literal -offset indent
|
|
bind[focus] = REPLAY+Button3
|
|
.Ed
|
|
.Pp
|
|
In the above example, when
|
|
.Aq Cm 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.
|
|
.Pp
|
|
To bind non-latin characters such as \[oa] or \[*p] you must enter the xkb
|
|
character name instead of the character itself.
|
|
Run
|
|
.Xr xev 1 ,
|
|
focus the window and press the specific key and in the terminal output read
|
|
the symbol name.
|
|
In the following example for \[oa]:
|
|
.Bd -literal -offset indent
|
|
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) "\[oa]"
|
|
XmbLookupString gives 2 bytes: (c3 a5) "\[oa]"
|
|
XFilterEvent returns: False
|
|
.Ed
|
|
.Pp
|
|
The xkb name is aring.
|
|
In other words, in
|
|
.Pa spectrwm.conf
|
|
add:
|
|
.Bd -literal -offset indent
|
|
bind[program] = MOD+aring
|
|
.Ed
|
|
.Pp
|
|
To clear all default keyboard bindings and specify your own, see the
|
|
.Ic keyboard_mapping
|
|
option.
|
|
.Sh KEYBOARD MAPPING FILES
|
|
Keyboard mapping files for several keyboard layouts are listed below.
|
|
These files can be used with the
|
|
.Ic keyboard_mapping
|
|
setting to load pre-defined key bindings for the specified keyboard layout.
|
|
.Pp
|
|
.Bl -tag -width "spectrwm_XX.confXXX" -offset indent -compact
|
|
.It Cm spectrwm_cz.conf
|
|
Czech Republic keyboard layout
|
|
.It Cm spectrwm_es.conf
|
|
Spanish keyboard layout
|
|
.It Cm spectrwm_fr.conf
|
|
French keyboard layout
|
|
.It Cm spectrwm_fr_ch.conf
|
|
Swiss French keyboard layout
|
|
.It Cm spectrwm_se.conf
|
|
Swedish keyboard layout
|
|
.It Cm spectrwm_us.conf
|
|
United States keyboard layout
|
|
.El
|
|
.Sh QUIRKS
|
|
.Nm
|
|
provides "quirks" which handle windows that must be treated specially in a
|
|
tiling window manager, such as some dialogs and fullscreen apps.
|
|
.Pp
|
|
The default quirks are described below:
|
|
.Pp
|
|
.Bl -tag -width "OpenOffice.org N.M:VCLSalFrame<TAB>XXX" -offset indent \
|
|
-compact
|
|
.It Firefox\-bin:firefox\-bin
|
|
TRANSSZ
|
|
.It Firefox:Dialog
|
|
FLOAT
|
|
.It Gimp:gimp
|
|
FLOAT + ANYWHERE
|
|
.It MPlayer:xv
|
|
FLOAT + FULLSCREEN + FOCUSPREV
|
|
.It OpenOffice.org 2.4:VCLSalFrame
|
|
FLOAT
|
|
.It OpenOffice.org 3.1:VCLSalFrame
|
|
FLOAT
|
|
.It pcb:pcb
|
|
FLOAT
|
|
.It xine:Xine Window
|
|
FLOAT + ANYWHERE
|
|
.It xine:xine Panel
|
|
FLOAT + ANYWHERE
|
|
.It xine:xine Video Fullscreen Window
|
|
FULLSCREEN + FLOAT
|
|
.It Xitk:Xitk Combo
|
|
FLOAT + ANYWHERE
|
|
.It Xitk:Xine Window
|
|
FLOAT + ANYWHERE
|
|
.It XTerm:xterm
|
|
XTERM_FONTADJ
|
|
.El
|
|
.Pp
|
|
The quirks themselves are described below:
|
|
.Pp
|
|
.Bl -tag -width "XTERM_FONTADJ<TAB>XXX" -offset indent -compact
|
|
.It ANYWHERE
|
|
Allow window to position itself, uncentered.
|
|
.It FLOAT
|
|
This window should not be tiled, but allowed to float freely.
|
|
.It 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
|
|
.Ic focus_mode
|
|
is set to
|
|
.Ar follow .
|
|
.It FOCUSPREV
|
|
On exit force focus on previously focused application not previous application
|
|
in the stack.
|
|
.It FULLSCREEN
|
|
Remove border to allow window to use full region size.
|
|
.It IGNOREPID
|
|
Ignore the PID when determining the initial workspace for a new window.
|
|
Especially useful for terminal windows that share a process.
|
|
.It IGNORESPAWNWS
|
|
Ignore the spawn workspace when determining the initial workspace for a new
|
|
window.
|
|
.It MINIMALBORDER
|
|
Remove border when window is unfocused and floating.
|
|
.It NOFOCUSCYCLE
|
|
Remove from normal focus cycle (focus_prev or focus_next). The window can still
|
|
be focused using search_win.
|
|
.It NOFOCUSONMAP
|
|
Don't change focus to the window when it first appears on the screen.
|
|
Has no effect when
|
|
.Ic focus_mode
|
|
is set to
|
|
.Ar follow .
|
|
.It OBEYAPPFOCUSREQ
|
|
When an application requests focus on the window via a _NET_ACTIVE_WINDOW
|
|
client message (source indication of 1), comply with the request.
|
|
Note that a source indication of 0 (unspecified) or 2 (pager) are always
|
|
obeyed.
|
|
.It TRANSSZ
|
|
Adjusts size on transient windows that are too small using
|
|
.Ic dialog_ratio
|
|
(see
|
|
.Sx CONFIGURATION FILES ) .
|
|
.It WS Ns Bq Ar n
|
|
Force a new window to appear on workspace
|
|
.Ar n .
|
|
.It XTERM_FONTADJ
|
|
Adjust
|
|
.Xr xterm 1
|
|
fonts when resizing.
|
|
.El
|
|
.Pp
|
|
Custom quirks in the configuration file are specified as follows:
|
|
.Pp
|
|
.Dl quirk Ns Bo Ar class Ns Bo : Ns Ar instance Ns Bo : Ns Ar name Bc Bc Bc \
|
|
= Ar quirk Op + Ar quirk ...
|
|
.Pp
|
|
.Ar class ,
|
|
.Ar instance
|
|
(optional) and
|
|
.Ar name
|
|
(optional) are patterns used to determine which window(s) the quirk(s) apply
|
|
to and
|
|
.Ar quirk
|
|
is one of the quirks from the list above.
|
|
.Pp
|
|
Note that patterns are interpreted as POSIX Extended Regular Expressions.
|
|
Any ':', '[' or ']' must be escaped with '\\'.
|
|
See
|
|
.Xr regex 7
|
|
for more information on POSIX Extended Regular Expressions.
|
|
.Pp
|
|
For example:
|
|
.Bd -literal -offset indent
|
|
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 existing quirk
|
|
.Ed
|
|
.Pp
|
|
You can obtain
|
|
.Ar class ,
|
|
.Ar instance
|
|
and
|
|
.Ar name
|
|
by running
|
|
.Xr xprop 1
|
|
and then clicking on the desired window.
|
|
In the following example the main window of Firefox was clicked:
|
|
.Bd -literal -offset indent
|
|
$ 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"
|
|
.Ed
|
|
.Pp
|
|
Note that
|
|
.Xr xprop 1
|
|
displays WM_CLASS as:
|
|
.Bd -literal -offset indent
|
|
WM_CLASS(STRING) = "<instance>", "<class>"
|
|
.Ed
|
|
.Pp
|
|
In the example above the quirk entry would be:
|
|
.Bd -literal -offset indent
|
|
quirk[Firefox:Navigator] = FLOAT
|
|
.Ed
|
|
.Pp
|
|
.Nm
|
|
also automatically assigns quirks to windows based on the value of the window's
|
|
_NET_WM_WINDOW_TYPE property as follows:
|
|
.Pp
|
|
.Bl -tag -width "_NET_WM_WINDOW_TYPE_TOOLBAR<TAB>XXX" -offset indent -compact
|
|
.It _NET_WM_WINDOW_TYPE_DOCK
|
|
FLOAT + ANYWHERE
|
|
.It _NET_WM_WINDOW_TYPE_TOOLBAR
|
|
FLOAT + ANYWHERE
|
|
.It _NET_WM_WINDOW_TYPE_UTILITY
|
|
FLOAT + ANYWHERE
|
|
.It _NET_WM_WINDOW_TYPE_SPLASH
|
|
FLOAT
|
|
.It _NET_WM_WINDOW_TYPE_DIALOG
|
|
FLOAT
|
|
.El
|
|
.Pp
|
|
In all other cases, no automatic quirks are assigned to the window.
|
|
Quirks specified in the configuration file override the automatic quirks.
|
|
.Sh EWMH
|
|
.Nm
|
|
partially implements the Extended Window Manager Hints (EWMH) specification.
|
|
This enables controlling windows as well as
|
|
.Nm
|
|
itself from external scripts and programs.
|
|
This is achieved by
|
|
.Nm
|
|
responding to certain ClientMessage events.
|
|
From the terminal these events can be conveniently sent using tools such as
|
|
.Xr wmctrl 1
|
|
and
|
|
.Xr xdotool 1 .
|
|
For the actual format of these ClientMessage events, see the EWMH
|
|
specification.
|
|
.Pp
|
|
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
|
|
.Xr xprop 1
|
|
and
|
|
.Xr grep 1 :
|
|
.Bd -literal -offset indent
|
|
$ WINDOWID=`xprop \-root _NET_ACTIVE_WINDOW | grep \-o "0x.*"`
|
|
$ xprop \-id $WINDOWID _NET_WM_NAME | grep \-o "\\".*\\""
|
|
.Ed
|
|
.Pp
|
|
A window can be focused by sending a _NET_ACTIVE_WINDOW client message to the
|
|
root window.
|
|
For example, using
|
|
.Xr wmctrl 1
|
|
to send the message
|
|
(assuming 0x4a0000b is the id of the window to be focused):
|
|
.Bd -literal -offset indent
|
|
$ wmctrl \-i \-a 0x4a0000b
|
|
.Ed
|
|
.Pp
|
|
Windows can be closed by sending a _NET_CLOSE_WINDOW client message to the root
|
|
window.
|
|
For example, using
|
|
.Xr wmctrl 1
|
|
to send the message
|
|
(assuming 0x4a0000b is the id of the window to be closed):
|
|
.Bd -literal -offset indent
|
|
$ wmctrl \-i \-c 0x4a0000b
|
|
.Ed
|
|
.Pp
|
|
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
|
|
.Xr wmctrl 1
|
|
to send the message (assuming 0x4a0000b is the id of the window to be floated
|
|
or un-floated):
|
|
.Bd -literal -offset indent
|
|
$ wmctrl \-i \-r 0x4a0000b \-b toggle,_NET_WM_STATE_ABOVE
|
|
.Ed
|
|
.Pp
|
|
Windows can also be iconified and un-iconified by substituting
|
|
_NET_WM_STATE_HIDDEN for _NET_WM_STATE_ABOVE in the previous example:
|
|
.Bd -literal -offset indent
|
|
$ wmctrl \-i \-r 0x4a0000b \-b toggle,_NET_WM_STATE_HIDDEN
|
|
.Ed
|
|
.Pp
|
|
Floating windows can also be resized and moved by sending a
|
|
_NET_MOVERESIZE_WINDOW client message to the root window.
|
|
For example, using
|
|
.Xr wmctrl 1
|
|
to send the message (assuming 0x4a0000b is the id of the window to be
|
|
resize/moved):
|
|
.Bd -literal -offset indent
|
|
$ wmctrl \-i \-r 0x4a0000b \-e 0,100,50,640,480
|
|
.Ed
|
|
.Pp
|
|
This moves the window to (100,50) and resizes it to 640x480.
|
|
.Pp
|
|
Any _NET_MOVERESIZE_WINDOW events received for stacked windows are ignored.
|
|
.Sh SIGNALS
|
|
Sending
|
|
.Nm
|
|
a HUP signal will restart it.
|
|
.Sh FILES
|
|
.Bl -tag -width "/etc/spectrwm.confXXX" -compact
|
|
.It Pa ~/.spectrwm.conf
|
|
.Nm
|
|
user specific settings.
|
|
.It Pa /etc/spectrwm.conf
|
|
.Nm
|
|
global settings.
|
|
.El
|
|
.Sh HISTORY
|
|
.Nm
|
|
was inspired by xmonad & dwm.
|
|
.Sh AUTHORS
|
|
.An -nosplit
|
|
.Nm
|
|
was written by:
|
|
.Pp
|
|
.Bl -tag -width "Ryan Thomas McBride Aq mcbride@countersiege.com " -offset \
|
|
indent -compact
|
|
.It An Marco Peereboom Aq Mt marco@peereboom.us
|
|
.It An Ryan Thomas McBride Aq Mt mcbride@countersiege.com
|
|
.It An Darrin Chandler Aq Mt dwchandler@stilyagin.com
|
|
.It An Pierre-Yves Ritschard Aq Mt pyr@spootnik.org
|
|
.It An Tuukka Kataja Aq Mt stuge@xor.fi
|
|
.It An Jason L. Wright Aq Mt jason@thought.net
|
|
.It An Reginald Kennedy Aq Mt rk@rejii.com
|
|
.It An Lawrence Teo Aq Mt lteo@lteo.net
|
|
.It An Tiago Cunha Aq Mt tcunha@gmx.com
|
|
.It An David Hill Aq Mt dhill@mindcry.org
|
|
.El
|