Add sway(5)

This commit is contained in:
Drew DeVault 2018-05-11 20:58:34 -04:00
parent c2a7d367af
commit 432256ad84
5 changed files with 586 additions and 660 deletions

View file

@ -54,6 +54,7 @@ if scdoc.found()
mandir = get_option('mandir')
man_files = [
'sway/sway.1.scd',
'sway/sway.5.scd',
]
foreach filename : man_files
topic = filename.split('.')[-3].split('/')[-1]

View file

@ -46,14 +46,14 @@ You can run sway directly from a tty, or via a Wayland-compatible login manager.
sway searches for a config file in the following locations, in this order:
- ~/.sway/config
- $XDG\_CONFIG\_HOME/sway/config (suggested location)
- ~/.i3/config
- $XDG\_CONFIG\_HOME/i3/config
- /etc/sway/config
- /etc/i3/config
. ~/.sway/config
. $XDG\_CONFIG\_HOME/sway/config (suggested location)
. ~/.i3/config
. $XDG\_CONFIG\_HOME/i3/config
. /etc/sway/config
. /etc/i3/config
If unset, $XDG\_CONFIG\_HOME defalts to *~/.config*.
If unset, $XDG\_CONFIG\_HOME defaults to *~/.config*.
An error is raised when no config file is found. The recommended default
configuration is usually installed to */etc/sway/config*; you are encouraged to

View file

@ -1,109 +0,0 @@
/////
vim:set ft=asciidoc ts=4 sw=4 tw=82 noet:
/////
:quotes.~:
sway (1)
========
Name
----
sway - SirCmpwn's Wayland window manager
Synopsis
--------
'sway' [options] [command]
Options
-------
*-h, --help*::
Show help message and quit.
*-c, \--config* <config>::
Specifies a config file.
*-C, \--validate*::
Check the validity of the config file, then exit.
*-d, --debug*::
Enables full logging, including debug information.
*-v, \--version*::
Show the version number and quit.
*-V, --verbose*::
Enables more verbose logging.
*--get-socketpath*::
Gets the IPC socket path and prints it, then exits.
Description
-----------
sway was created to fill the need of an i3-like window manager for Wayland. The
upstream i3 developers have no intention of porting i3 to Wayland, and projects
proposed by others ended up as vaporware. Many thanks to the i3 folks for
providing such a great piece of software, so good that your users would rather
write an entirely new window manager from scratch that behaved _exactly_ like i3
rather than switch to something else.
Launch sway directly from a tty or via your favorite Wayland-compatible login
manager.
Commands
--------
If sway is currently running, you may run _sway [command]_ to send _command_ to
the running instance of sway. The same commands you would use in the config file
are valid here (see **sway**(5)). For compatibility reasons, you may also issue
commands with **swaymsg**(1) or **i3-msg**(1) (or even with **i3**(1), probably).
Configuration
-------------
The path to a config file can be given via the _-c_ parameter, else
sway searches for it in the following locations:
- ~/.sway/config
- $XDG_CONFIG_HOME/sway/config (suggested location)
- ~/.i3/config
- $XDG_CONFIG_HOME/i3/config (XDG_HOME )
- /etc/sway/config
- /etc/i3/config
In /etc/sway/config the standard config file is installed.
An error is raised when no config file is found.
To write your own configuration, it's suggested that you copy the default config file to
the location of your choosing and start there.
For information on the config file format, see **sway**(5).
Environment
-----------
The following environment variables have an effect on sway:
*SWAY_CURSOR_THEME*::
Specifies the name of the cursor theme to use.
*SWAY_CURSOR_SIZE*::
Specifies the size of the cursor to use.
*SWAYSOCK*::
Specifies the path to the sway IPC socket.
*XKB_DEFAULT_RULES*, *XKB_DEFAULT_MODEL*, *XKB_DEFAULT_LAYOUT*, *XKB_DEFAULT_VARIANT*, *XKB_DEFAULT_OPTIONS*::
Configures the xkb keyboard settings. See xkeyboard-config(7).
Authors
-------
Maintained by Drew DeVault <sir@cmpwn.com>, who is assisted by other open
source contributors. For more information about sway development, see
<https://github.com/swaywm/sway>.
See Also
--------
**sway**(5) **swaymsg**(1) **swaygrab**(1) **sway-input**(5) **sway-bar**(5)

578
sway/sway.5.scd Normal file
View file

@ -0,0 +1,578 @@
sway(5)
# NAME
sway - configuration file and commands
# DESCRIPTION
A sway configuration file is a list of sway commands that are executed by sway
on startup. These commands usually consist of setting your preferences and
setting key bindings. An example config is likely present in /etc/sway/config
for you to check out.
Lines in the configuration file might be extended through multiple lines by
adding a '\\' character at the end of line. e.g.:
```
bindsym Shift+XF86AudioRaiseVolume exec \\
pactl set-sink-volume @DEFAULT_SINK@ -1%
```
These commands can be executed in your config file, via *swaymsg*(1), or via
the bindsym command.
# COMMAND CONVENTIONS
Commands are split into several arguments using spaces. You can enclose
arguments with quotation marks (*"..."* or *'...'*) to add spaces to a single
argument. You may also run several commands in order by separating each with
*,* or *;*.
Throughout the documentation, *|* is used to distinguish between arguments for
which you may only select one. *[...]* is used for optional arguments, and
*<...>* for arguments where you are expected to supply some value.
# COMMANDS
The following commands may only be used in the configuration file.
*bar {* <commands...> *}*
_commands..._ after *{* will be interpreted as bar commands. For
details, see *sway-bar*(5). A newline is required between *{* and the
first command, and *}* must be alone on a line.
*default\_orientation* horizontal|vertical|auto
Sets the default container layout for tiled containers.
*include* <path>
Includes another file from _path_. _path_ can be either a full path or a
path relative to the parent config, and expands shell syntax (see
*wordexp*(3) for details). The same include file can only be included once;
subsequent attempts will be ignored.
*set* <name> <value>
Sets variable $_name_ to _value_. You can use the new variable in the
arguments of future commands.
*swaybg\_command* <command>
Executes custom bg _command_. Default is _swaybg_. Refer to **output**
below for more information.
The following commands cannot be used directly in the configuration file.
They are expected to be used with *bindsym* or at runtime through *swaymsg*(1).
*border* normal|pixel [<n>]
Set border style for focused window. _normal_ includes a border of
thickness _n_ and a title bar. _pixel_ is a border without title bar _n_
pixels thick. Default is _normal_ with border thickness 2.
*border* none|toggle
Set border style for focused window to _none_ or _toggle_ between the
available border styles: _normal_, _pixel_, _none_.
*exit*
Exit sway and end your Wayland session.
*floating* enable|disable|toggle
Make focused view floating, non-floating, or the opposite of what it is now.
*focus* up|right|down|left
Moves focus to the next container in the specified direction.
*focus* child
Moves focus to the last-focused child of the focused container.
*focus* parent
Moves focus to the parent of the focused container.
*focus* output up|right|down|left
Moves focus to the next output in the specified direction.
*focus* output <name>
Moves focus to the named output.
*focus* mode\_toggle
Moves focus between the floating and tiled layers.
*fullscreen*
Toggles fullscreen for the focused view.
*layout* splith|splitv|stacking|tabbed
Sets the layout mode of the focused container.
*layout* toggle split
Switches the focused container between the splitv and splith layouts.
*move* left|right|up|down [<px>]
Moves the focused container in the direction specified. If the container,
the optional _px_ argument specifies how many pixels to move the container.
If unspecified, the default is 10 pixels. Pixels are ignored when moving
tiled containers.
*move* container|window to workspace <name>
Moves the focused container to the specified workspace.
*move* container|window to workspace prev|next
Moves the focused container to the previous or next workspace on this
output, or if no workspaces remain, the previous or next output.
*move* container|window to workspace prev\_on\_output|next\_on\_output
Moves the focused container to the previous or next workspace on this
output, wrapping around if already at the first or last workspace.
*move* container|window|workspace to output <name>
Moves the focused container or workspace to the specified output.
*move* container|window|workspace to output up|right|down|left
Moves the focused container or workspace to next output in the specified
direction.
*move* [to] scratchpad
Moves the focused window to the scratchpad.
*reload*
Reloads the sway config file and applies any changes.
*resize* shrink|grow width|height [<amount>] [px|ppt]
Resizes the currently focused container by _amount_, specified in pixels or
percentage points. If omitted, floating containers are resized in px and
tiled containers by ppt. If omitted, the default _amount_ is 10.
*resize set* <width> [px] <height> [px]
Sets the width and height of the currently focused container to _width_
pixels and _height_ pixels. The [px] parameters are optional and have no
effect. This command only accepts a size in pixels. Width and height may be
specified in either order.
*scratchpad show*
Shows a window from the scratchpad. Repeatedly using this command will
cycle through the windows in the scratchpad.
*split* vertical|v|horizontal|h|toggle|t
Splits the current container, vertically or horizontally. When _toggle_ is
specified, the current container is split opposite to the parent
container's layout.
*splith*
Equivalent to *split horizontal*
*splitv*
Equivalent to *split vertical*
*splitt*
Equivalent to *split toggle*
*sticky* enable|disable|toggle
"Sticks" a floating window to the current output so that it shows up on all
workspaces.
The following commands may be used either in the configuration file or at
runtime.
*assign* <criteria> [→] <workspace>
Assigns views matching _criteria_ (see *CRITERIA* for details) to
_workspace_. The → (U+2192) is optional and cosmetic. This command is
equivalent to:
for\_window <criteria> move container to workspace <workspace>
*bindsym* <key combo> <command>
Binds _key combo_ to execute the sway command _command_ when pressed. You
may use XKB key names here (*xev*(1) is a good tool for discovering these).
Example:
# Execute firefox when alt, shift, and f are pressed together
bindsym Mod1+Shift+f exec firefox
*bindcode* <code> <command> is also available for binding with key codes
instead of key names.
*client.<class>* <border> <background> <text> <indicator> <child\_border>
Configures the color of window borders and title bars. All 5 colors are
required, with the exception of *client.background*, which requires exactly
one. Colors may be specified in hex, either as _#RRGGBB_ or _#RRGGBBAA_.
The available classes are:
*client.background*
Ignored (present for i3 compatability).
*client.focused*
The window that has focus.
*client.focused\_inactive*
The most recently focused view within a container which is not focused.
*client.placeholder*
Ignored (present for i3 compatability).
*client.unfocused*
A view that does not have focus.
*client.urgent*
A view with an urgency hint. *Note*: This is not currently implemented.
The meaning of each color is:
_border_
The border around the title bar.
_background_
The background of the title bar.
_text_
The text color of the title bar.
_indicator_
The color used to indicate where a new view will open. In a tiled
container, this would paint the right border of the current view if a
new view would be opened to the right.
_child\_border_
The border around the view itself.
The default colors are:
[- *class*
:[ _border_
:[ _background_
:[ _text_
:[ _indicator_
:[ _child\_border_
|[ *background*
: n/a
: #ffffff
: n/a
: n/a
: n/a
| *focused*
: #4c7899
: #285577
: #ffffff
: #2e9ef4
: #285577
| *focused\_inactive*
: #333333
: #5f676a
: #ffffff
: #484e50
: #5f676a
| *unfocused*
: #333333
: #222222
: #888888
: #292d2e
: #222222
| *urgent*
: #2f343a
: #900000
: #ffffff
: #900000
: #900000
| *placeholder*
: #000000
: #0c0c0c
: #ffffff
: #000000
: #0c0c0c
*debuglog* on|off|toggle
Enables, disables or toggles debug logging. _toggle_ cannot be used in the
configuration file.
*default\_border* normal|none|pixel [<n>]
Set default border style for new tiled windows.
*default\_floating\_border* normal|none|pixel [<n>]
Set default border style for new floating windows. This only applies to
windows that are spawned in floating mode, not windows that become floating
afterwards.
*exec* <shell command>
Executes _shell command_ with sh.
*exec\_always* <shell command>
Like exec, but the shell command will be executed _again_ after *reload*.
*floating\_maximum\_size* <width> x <height>
Specifies the maximum size of floating windows. -1 x -1 removes the upper
limit.
*floating\_minimum\_size* <width> x <height>
Specifies the minimum size of floating windows. The default is 75 x 50.
*floating\_modifier* <modifier> [normal|inverse]
When the _modifier_ key is held down, you may hold left click to move
windows, and right click to resize them. If _inverse_ is specified, left
click is used for resizing and right click for moving.
*floating\_scroll* up|right|down|left [command]
Sets a command to be executed when the mouse wheel is scrolled in the
specified direction while holding the floating modifier. Resets the
command, when given no arguments.
*focus\_follows\_mouse* yes|no
If set to _yes_, moving your mouse over a window will focus that window.
*font* <font>
Sets font for use in title bars in Pango format.
*for\_window* <criteria> <command>
Whenever a window that matches _criteria_ appears, run list of commands.
See *CRITERIA* for more details.
*gaps* edge\_gaps on|off|toggle
When _on_, gaps will be added between windows and workspace edges if the
inner gap is nonzero. When _off_, gaps will only be added between views.
_toggle_ cannot be used in the configuration file.
*gaps* <amount>
Sets _amount_ pixels of gap between windows and around each workspace.
*gaps* inner|outer <amount>
Sets default _amount_ pixels of _inner_ or _outer_ gap, where the former
affects spacing between views and the latter affects the space around each
workspace.
*gaps* inner|outer all|workspace|current set|plus|minus <amount>
Changes the gaps for the _inner_ or _outer_ gap. _all_ changes the gaps for
all views or workspace, _workspace_ changes gaps for all views in current
workspace (or current workspace), and _current_ changes gaps for the current
view or workspace.
*hide\_edge\_borders* none|vertical|horizontal|both|smart
Hides window borders adjacent to the screen edges. Default is _none_.
*input* <input\_device> *{* <commands...> *}*
_commands..._ after *{* will be interpreted as input commands applying to
the specified input device. For details, see *sway-input*(5). A newline is
required between *{* and the first command, and *}* must be alone on a
line.
\* may be used in lieu of a specific device name to configure all input
devices. A list of input device names may be obtained via *swaymsg -t
get\_inputs*.
*seat* <seat> *{* <commands...> *}*
_commands..._ after *{* will be interpreted as seat commands applying to
the specified seat. For details, see *sway-input*(5). A newline is required
between *{* and the first command, and *}* must be alone on a line.
*seat* <seat> cursor move|set <x> <y>
Move specified seat's cursor relative to current position or wrap to
absolute coordinates (with respect to the global coordinate space).
Specifying either value as 0 will not update that coordinate.
*seat* <seat> cursor press|release left|right|1|2|3...
Simulate pressing (or releasing) the specified mouse button on the
specified seat.
*kill*
Kills (closes) the currently focused container and all of its children.
*smart\_gaps* on|off
If smart\_gaps are _on_ gaps will only be enabled if a workspace has more
than one child.
*mark* --add|--replace [--toggle] <identifier>
Marks are arbitrary labels that can be used to identify certain windows and
then jump to them at a later time. By default, *mark* sets _identifier_ as
the only mark on a window. _--add_ will instead add _identifier_ to the
list of current marks. If _--toggle_ is specified mark will remove
_identifier_ if it is already marked.
*mode* <mode>
Switches to the specified mode. The default mode _default_.
*mode* <mode> *{* <commands...> *}*
_commands..._ after *{* will be added to the specified mode. A newline is
required between *{* and the first command, and *}* must be alone on a
line. Only *bindsym* and *bindcode* commands are permitted in mode blocks.
*mouse\_warping* output|none
If _output_ is specified, the mouse will be moved to new outputs as you
move focus between them.
*no\_focus* <criteria>
Prevents windows matching <criteria> from being focused automatically when
they're created. This has no effect on the first window in a workspace.
*output* <name> mode|resolution|res <WIDTHxHEIGHT>[@<RATE>[Hz]]
Configures the specified output to use the given mode. Modes are a
combination of width and height (in pixels) and a refresh rate that your
display can be configured to use. For a list of available modes for each
output, use *swaymsg -t get\_outputs*.
Examples:
output HDMI-A-1 mode 1920x1080
output HDMI-A-1 mode 1920x1080@60Hz
*output* <name> position|pos <X,Y>
Places the specified output at the specific position in the global
coordinate space.
*output* <name> scale <factor>
Scales the specified output by the specified scale _factor_. An integer is
recommended, but fractional values are also supported. If a fractional
value are specified, be warned that it is not possible to faithfully
represent the contents of your windows - they will be rendered at the next
highest integral scale factor and downscaled. You may be better served by
setting an integral scale factor and adjusting the font size of your
applications to taste.
*output* <name> background|bg <file> <mode>
Sets the wallpaper for the given output to the specified file, using the
given scaling mode (one of "stretch", "fill", "fit", "center", "tile").
**output** <name> background|bg <color> solid\_color
Sets the background of the given output to the specified color. _color_
should be specified as _#RRGGBB_. Alpha is not supported.
**output** <name> transform <transform>
Sets the background transform to the given value. Can be one of "90", "180",
"270" for rotation; or "flipped", "flipped-90", "flipped-180", "flipped-270"
to apply a rotation and flip, or "normal" to apply no transform.
*output* <name> disable|enable
Enables or disables the specified output (all outputs are enabled by
default).
*NOTES FOR THE OUTPUT COMMANDS*
You may combine output commands into one, like so:
output HDMI-A-1 mode 1920x1080 pos 1920,0 bg ~/wallpaper.png stretch
You can get a list of output names with *swaymsg -t get\_outputs*. You may also
match any output by using the output name "\*". Be sure to add this output
config after the others, or it will be matched instead of the others.
*show\_marks* on|off
If *show\_marks* is on, marks will be displayed in the window borders.
Any mark that starts with an underscore will not be drawn even if the
option is on. The default is _on_.
*opacity* <value>
Set the opacity of the window between 0 (completely transparent) and 1
(completely opaque).
*unmark* [<identifier>]
*unmark* will remove _identifier_ from the list of current marks on a
window. If _identifier_ is omitted, all marks are removed.
*workspace* [number] <name>
Switches to the specified workspace. The string "number" is optional and is
used to sort workspaces.
*workspace* prev|next
Switches to the next workspace on the current output or on the next output
if currently on the last workspace.
*workspace* prev\_on\_output|next\_on\_output
Switches to the next workspace on the current output.
*workspace* <name> output <output>
Specifies that workspace _name_ should be shown on the specified _output_.
*workspace\_auto\_back\_and\_forth* yes|no
When _yes_, repeating a workspace switch command will switch back to the
prior workspace. For example, if you are currently on workspace 1,
switch to workspace 2, then invoke the "workspace 2" command again, you
will be returned to workspace 1. Default is _no_.
*workspace\_layout* default|stacking|tabbed
Specifies the initial layout for new workspaces.
# CRITERIA
A criteria is a string in the form of, for example:
```
[class="[Rr]egex.*" title="some title"]
```
The string contains one or more (space separated) attribute/value pairs. They
are used by some commands to choose which views to execute actions on. All
attributes must match for the criteria to match.
Criteria may be used with either the *for\_window* or *assign* commands to
specify operations to perform on new views. A criteria may also be used to
perform specific commands (ones that normally act upon one window) on all views
that match that criteria. For example:
Focus on a window with the mark "IRC":
```
[con_mark="IRC"] focus
```
Kill all windows with the title "Emacs":
```
[class="Emacs"] kill
```
Mark all Firefox windows with "Browser":
```
[class="Firefox"] mark Browser
```
The following attributes may be matched with:
*app\_id*
Compare value against the app id. Can be a regular expression. If value is
\_\_focused\_\_, then the app id must be the same as that of the currently
focused window.
*class*
Compare value against the window class. Can be a regular expression. If
value is \_\_focused\_\_, then the window class must be the same as that of
the currently focused window.
*con\_id*
Compare against the internal container ID, which you can find via IPC.
*con\_mark*
Compare against the window marks. Can be a regular expression.
*floating*
Matches floating windows.
*id*
Compare value against the X11 window ID. Must be numeric.
*instance*
Compare value against the window instance. Can be a regular expression. If
value is \_\_focused\_\_, then the window instance must be the same as that
of the currently focused window.
*tiling*
Matches tiling windows.
*title*
Compare against the window title. Can be a regular expression. If value is
\_\_focused\_\_, then the window title must be the same as that of the
currently focused window.
*urgent*
Compares the urgent state of the window. Can be "latest" or "oldest".
*window\_role*
Compare against the window role (WM\_WINDOW\_ROLE). Can be a regular
expression. If value is \_\_focused\_\_, then the window role must be the
same as that of the currently focused window.
*window\_type*
Compare against the window type (\_NET\_WM\_WINDOW\_TYPE). Possible values
are normal, dialog, utility, toolbar, splash, menu, dropdown\_menu,
popup\_menu, tooltip and notification.
*workspace*
Compare against the workspace name for this view. Can be a regular
expression. If the value is \_\_focused\_\_, then all the views on the
currently focused workspace matches.

View file

@ -1,544 +0,0 @@
/////
vim:set ts=4 sw=4 tw=82 noet:
/////
sway (5)
========
Name
----
sway - configuration file and commands
Description
-----------
A sway configuration file is a list of sway commands that are executed by sway
on startup. These commands usually consist of setting your preferences and
setting key bindings. An example config is likely present in /etc/sway/config
for you to check out.
Lines in the configuration file might be extended through multiple lines by
adding a '\' character at the end of line. e.g.:
bindsym Shift+XF86AudioRaiseVolume exec pactl set-sink-volume \
$(pactl list sinks | grep -B 1 RUNNING | sed '1q;d' | sed 's/[^0-9]\+//g') +5%
These commands can be executed in your config file, via **swaymsg**(1), or via
the bindsym command.
Commands
--------
The following commands may only be used in the configuration file.
**bar** <block of commands>::
Append _{_ to this command, the following lines will be commands that
configure **swaybar**, and _}_ on its own line to close the block.
+
See **sway-bar**(5) for details.
**default_orientation** <horizontal|vertical|auto>::
Sets the default container layout for tiled containers.
**set** <name> <value>::
Sets variable $name to _value_. You can use the new variable in the arguments
of future commands.
**swaybg_command** <command>::
Executes custom bg command, default is _swaybg_.
The following commands cannot be used directly in the configuration file.
They are expected to be used with **bindsym** or at runtime through **swaymsg**(1).
**border** <normal|pixel> [<n>]::
Set border style for focused window. _normal_ includes a border of thickness
_n_ and a title bar. _pixel_ is a border without title bar _n_ pixels thick.
Default is _normal_ with border thickness 2.
**border** <none|toggle>::
Set border style for focused window to _none_ or _toggle_ between the
available border styles: _normal_, _pixel_, _none_.
**exit**::
Exit sway and end your Wayland session.
**floating** <enable|disable|toggle>::
Make focused view floating, non-floating, or the opposite of what it is now.
**focus** <direction>::
Direction may be one of _up_, _down_, _left_, _right_, _next_, _prev_,
_parent_, or _child_. The directional focus commands will move the focus
in that direction. The _next_ and _prev_ directions will focus the next,
respectively previous, element in the current container. The parent
focus command will change the focus to the parent of the currently
focused container, which is useful, for example, to open a sibling of
the parent container, or to move the entire container around.
**focus** output <direction|name>::
Direction may be one of _up_, _down_, _left_, _right_. The directional focus
commands will move the focus to the output in that direction. When name is
given, the focus is changed to the output with that name.
**focus** mode_toggle::
Toggles focus between floating view and tiled view.
**fullscreen**::
Toggles fullscreen status for the focused view.
**layout** <mode>::
Sets the layout mode of the focused container. _mode_ can be one of _splith_,
_splitv_, _toggle split_, _stacking_, _tabbed_.
**layout** auto <mode>::
Sets layout to one of the auto modes, i.e. one of _left_, _right_, _top_,
or _bottom_.
**layout** auto <next|prev>::
Cycles between available auto layouts.
**layout** auto [master|ncol] [inc|set] <n>::
Modify the number of master elements, respectively slave columns, in the
focused container. <n> can be a positive or negative integer. These commands
only have an effect if the focused container uses one of the "auto" layouts.
**layout** toggle split::
Cycles between available split layouts.
**move** <left|right|up|down> <[px]>::
Moves the focused container _left_, _right_, _up_, or _down_. If the window
is floating it moves it _px_ in that direction, defaulting to 10. Tiled
containers are moved the same regardless of the _px_ argument.
**move** <next|prev|first>::
Moving to _prev_ or _next_ swaps the container with its sibling in the same
container. Move _first_ exchanges the focused element in an auto layout with
the first element, i.e. promotes the focused element to master position.
**move** <container|window> to workspace <name>::
Moves the focused container to the workspace identified by _name_.
_name_ may be a special workspace name. See **workspace**.
**move** <container|window|workspace> to output <name|direction>::
Moves the focused container or workspace to the output identified by _name_ or
_direction_. _direction_ may be one of _up_, _down_, _left_, _right_.
**move** [to] scratchpad::
Moves the focused window to the scratchpad.
**reload**::
Reloads the sway config file without restarting sway.
**resize** <shrink|grow> <width|height> [<amount>] [px|ppt]::
Resizes the currently focused container or view by _amount_. _amount_ is
optional: the default value is 10 (either px or ppt depending on the view type).
The [px|ppt] parameter is optional. _px_ specifies that _amount_ refers to pixels;
_ppt_ specifies that _amount_ refers to percentage points of the current
size. Floating views use px by default (but can use ppt if specified); tiled
views use ppt by default (but can use px if specified).
**resize set** <width> [px] <height> [px]::
Sets the width and height of the currently focused container to _width_ pixels
and _height_ pixels. The [px] parameters are optional and have no effect. This
command only accepts a size in pixels.
**resize set** <width|height> <amount> [px] [<width|height> <amount> [px]]::
Sets the _width_ and/or _height_ of the currently focused container to
_amount_. The [px] parameters are optional and have no effect. This command
only accepts a size in pixels.
**scratchpad show**::
Shows a window from the scratchpad. Repeatedly using this command will cycle
through the windows in the scratchpad.
**split** <vertical|v|horizontal|h|toggle|t>::
Splits the current container, vertically or horizontally. If toggled, then the
current container is split opposite to the parent container.
**splith**::
Equivalent to **split horizontal**.
**splitv**::
Equivalent to **split vertical**.
**splitt**::
Equivalent to **split toggle**.
**sticky** <enable|disable|toggle>::
"Sticks" a floating window to the current output so that it shows up on all
workspaces.
The following commands may be used either in the configuration file
or triggered at runtime.
**assign** <criteria> [→] <workspace>::
Assigns views matching _criteria_ (see **Criteria** section below) to
_workspace_. The → (U+2192) is optional and purely for aesthetics. This
command is exactly equivalent to "for_window <criteria> move container to
workspace <workspace>".
**bindsym** <key combo> <command>::
Binds _key combo_ to execute _command_ when pressed. You may use XKB key
names here (**xev**(1) is a good tool for discovering them). An example
bindsym command would be **bindsym Mod1+Shift+f exec firefox**, which would
execute Firefox if the alt, shift, and F keys are pressed together. Any
valid sway command is eligible to be bound to a key combo.
+
**bindcode** <code> <command> is also available for binding with key codes
instead of key names.
**client**.<color_class> <border> <background> <text> <indicator> <child_border>::
The client commands control the colors of the view borders and title bars. All
client commands _require_ five color values. (The one exception is
**client.background** which _requires_ one color value.) If you only want to
specify a subset, supply default colors for all the others. Colors must be
defined in hex. i.e. _#rrggbb_ or _#rrggbbaa_, when including the alpha
channel.
+
The command tokens are:
**color_class**::: Specifies the view to which the colors apply.
**client.background**:::: The color a view will be painted, underneath the
client itself. This will only be visible if a client does not fully
cover its allocated view space. This command only requires one color. _Note_:
This is not currently implemented.
**client.focused**:::: The view that has focus.
**client.focused_inactive**:::: A view that has focus within its
container, but the container is not focused.
**client.placeholder**:::: Used when drawing placeholder view contents.
Only background and text colors are used. _Note_: This is not
currently implemented.
**client.unfocused**:::: A view that does not have focus.
**client.urgent**:::: A view with an urgency hint. _Note_: This is not
currently implemented.
**border**::: The border around the title bar.
**background**::: The background of the title bar.
**text**::: The text color of the title bar.
**indicator**::: The color used to indicate where a new view will open. In a
tiled container, this would paint the right border of the current view if
a new view would be opened to the right.
**child_border**::: The border around the view itself.
+
The default colors are:
+
--
[options="header"]
|===========================================================================
|color_class |border |background |text |indicator |child_border
|background |n/a |#ffffff |n/a |n/a |n/a
|focused |#4c7899 |#285577 |#ffffff |#2e9ef4 |#285577
|focused_inactive |#333333 |#5f676a |#ffffff |#484e50 |#5f676a
|unfocused |#333333 |#222222 |#888888 |#292d2e |#222222
|urgent |#2f343a |#900000 |#ffffff |#900000 |#900000
|placeholder |#000000 |#0c0c0c |#ffffff |#000000 |#0c0c0c
|===========================================================================
--
**debuglog** <on|off|toggle>::
Enables, disables or toggles debug logging. The toggle argument cannot be used
in the configuration file.
**default_border** <normal|none|pixel> [<n>]::
Set default border style for new windows. This command was previously called
**new_window**. While **new_window** still works, it is considered deprecated
and support for it will be removed in the future.
**default_floating_border** <normal|none|pixel> [<n>]::
Set default border style for new floating windows. This only applies to
windows that are spawned in floating mode, not windows that become floating
after the fact. This command was previously called **new_float**. While
**new_float** still works, it is considered deprecated and support for it will
be removed in the future.
**exec** <shell command>::
Executes _shell command_ with sh.
**exec_always** <shell command>::
Like exec, but the shell command will be executed _again_ after *reload* or
*restart* is executed.
**floating_maximum_size** <width> x <height>::
Specifies the maximum size of floating windows.
Uses the container size as default.
-1 x -1 will remove any restriction on size.
0 x 0 has the same behavior as not setting any value.
If in conflict, this option has precedence over floating_minimum_size.
**floating_minimum_size** <width> x <height>::
Specifies the minimum size of floating windows.
Default parameters are 75 x 50.
-1 and 0 are invalid parameters, default will be used instead.
**floating_modifier** <modifier> [normal|inverse]::
When the _modifier_ key is held down, you may hold left click to move floating
windows, and right click to resize them. Unlike i3, this modifier may also be
used to resize and move windows that are tiled. With the _inverse_ mode
enabled, left click is used for resizing and right click for dragging. The
mode parameter is optional and defaults to _normal_ if it isn't defined.
**floating_scroll** <up|down|left|right> [command]::
Sets a command to be executed when the mouse wheel is scrolled in the
specified direction while holding the floating modifier. Resets the command,
when given no arguments.
**focus_follows_mouse** <yes|no>::
If set to _yes_, moving your mouse over a window will focus that window.
**font** <font>::
Sets font for use in title bars. Generally the format is something like "Name
Style Size" e.g. "Deja Vu Sans Book 12". You can also use Pango font
descriptions with "pango:font".
**for_window** <criteria> <command>::
Whenever a window that matches _criteria_ appears, run list of commands. See
**Criteria** section below.
**gaps** edge_gaps <on|off|toggle>::
Whether or not to add gaps between views and workspace edges if amount of
inner gap is not zero. When _off_, no gap is added where the view is aligned to
the workspace edge, effectively creating gaps only between views. The toggle
argument cannot be used in the configuration file.
**gaps** <amount>::
Sets default _amount_ pixels as the gap between each view, and around each
workspace.
**gaps** <inner|outer> <amount>::
Sets default _amount_ pixels as the _inner_ or _outer_ gap, where the former
affects spacing between views and the latter affects the space around each
workspace.
**gaps** <inner|outer> <all|workspace|current> <set|plus|minus> <amount>::
Changes the gaps for the _inner_ or _outer_ gap. _all_ changes the gaps for
all views or workspace, _workspace_ changes gaps for all views in current
workspace (or current workspace), and _current_ changes gaps for the current
view or workspace.
**hide_edge_borders** <none|vertical|horizontal|both|smart>::
Hide window borders adjacent to the screen edges. Default is _none_.
**input** <input_device> <block of commands>::
Append _{_ to this command, the following lines will be commands to configure
the named input device, and _}_ on its own line will close the block.
+
**input * <block of commands>** may be used to match all input devices.
+
See **sway-input**(5) for details.
**seat** <seat_name> <block of commands>::
Append _{_ to this command, the following lines will be commands to configure
the named seat, and _}_ on its own line will close the block.
See **sway-input**(5) for details.
**seat** <seat_name> cursor <move|set> <x> <y>::
Move cursor relatively to current position or set to absolute screen position.
A value of 0 causes the axis to be ignored in both commands.
**seat** <seat_name> cursor <press|release> <left|right|1|2|3...>::
Simulate press of mouse button specified by left, right, or numerical code.
**kill**::
Kills (force-closes) the currently-focused container and all of its children.
**smart_gaps** <on|off>::
If smart_gaps are _on_ then gaps will only be enabled if a workspace has more
than one child container.
**mark** \<--add|--replace> \<--toggle> <identifier>::
Marks are arbitrary labels that can be used to identify certain windows and
then jump to them at a later time. By default, the **mark** command sets
_identifier_ as the only mark on a window. By specifying _--add_, mark will
add _identifier_ to the list of current marks. If _--toggle_ is specified mark
will remove _identifier_ if it is already a label. Marks may be found by using
a criteria. See the **Criteria** section below.
**mode** <mode_name>::
Switches to the given mode_name. The default mode is simply _default_. To
create a new mode append _{_ to this command, the following lines
will be keybindings for that mode, and _}_ on its own line to close the block.
**mouse_warping** <output|none>::
When _output_: place mouse at center of newly focused window when changing
output. When _none_: don't move mouse.
**no_focus** <criteria>::
Prevents windows matching <criteria> from being focused automatically when
they're created. This does not apply to the first window in a workspace.
**output** <name> mode|resolution|res <WIDTHxHEIGHT>[@<RATE>[Hz]]::
Configures the specified output to use the given mode. Modes are a combination
of width and height (in pixels) and a refresh rate that your display can be
configured to use. For a list of available modes, use swaymsg -t get_outputs.
+
Examples:
+
output HDMI-A-1 mode 1920x1080
+
output HDMI-A-1 mode 1920x1080@60Hz
**output** <name> position|pos <X,Y>::
Configures the specified output to be arranged at the given position.
**output** <name> scale <I>::
Configures the specified output to be scaled up by the specified integer
scaling factor (usually 2 for HiDPI screens). Fractional scaling is supported.
**output** <name> background|bg <file> <mode>::
Sets the wallpaper for the given output to the specified file, using the given
scaling mode (one of "stretch", "fill", "fit", "center", "tile").
**output** <name> background|bg <color> solid_color::
Sets the background of the given output to the specified color. _color_ should
be specified as an _#rrggbb_ (no alpha) color.
**output** <name> transform <transform>::
Sets the background transform to the given value. Can be one of "90", "180",
"270" for rotation; or "flipped", "flipped-90", "flipped-180", "flipped-270"
to apply a rotation and flip, or "normal" to apply no transform.
**output** <name> disable::
Disables the specified output.
**NOTES FOR THE OUTPUT COMMAND**::
You may combine output commands into one, like so:
+
output HDMI-A-1 mode 1920x1080 pos 1920,0 bg ~/wallpaper.png stretch
+
You can get a list of output names like so:
+
swaymsg -t get_outputs
+
You may also match any output by using the output name "*". Be sure to add
this output config after the others, or it will be matched instead of the
others.
**seamless_mouse** <on|off>::
Change output seamlessly when pointer touches edge of output. Outputs need to
be configured with perfectly aligned adjacent positions for this option to
have any effect.
**show_marks** <on|off>::
If **show_marks** is on then marks will be showed in the window decoration.
However, any mark that starts with an underscore will not be drawn even if the
option is on. The default option is _on_.
**opacity** <value>::
Set the opacity of the window between 0 (completely transparent) and 1
(completely opaque).
**unmark** <identifier>::
**Unmark** will remove _identifier_ from the list of current marks on a window. If
no _identifier_ is specified, then **unmark** will remove all marks.
**workspace** [number] <name>::
Switches to the specified workspace. The string "number" is optional. The
workspace _name_, if unquoted, may not contain the string "output", as sway
will assume that the command is moving a workspace to an output, as described
below.
**workspace** <prev|next>::
Switches to the next workspace on the current output or on the next output
if currently on the last workspace.
**workspace** <prev_on_output|next_on_output>::
Switches to the next workspace on the current output.
**workspace** <name> output <output>::
Specifies that the workspace named _name_ should appear on the specified
_output_.
**workspace_auto_back_and_forth** <yes|no>::
When _yes_, repeating a workspace switch command will switch back to the
prior workspace. For example, if you are currently on workspace 1,
switch to workspace 2, then invoke the "workspace 2" command again, you
will be returned to workspace 1. Defaults to _no_.
**workspace_layout** <default|stacking|tabbed|auto|auto left|auto right|auto
top|auto bottom>:: Specifies the start layout for new workspaces.
**include** <path>::
Includes a sub config file by _path_. _path_ can be either a full path or a
path relative to the parent config.
Criteria
--------
A criteria is a string in the form of e.g.:
[class="[Rr]egex.*" title="some title"]
The string contains one or more (space separated) attribute/value pairs. They
are used by some commands to choose which views to execute actions on. All attributes
must match for the criteria to match.
Criteria may be used with either the **for_window** or **assign** commands to
specify operations to perform on new views. A criteria may also be used to
perform specific commands (ones that normally act upon one window) on all views
that match that criteria. For example:
Focus on a window with the mark "IRC":
[con_mark="IRC"] focus
Kill all windows with the title "Emacs":
[class="Emacs"] kill
Mark all Firefox windows with "Browser":
[class="Firefox"] mark Browser
Currently supported attributes:
**app_id**::
Compare value against the app id. Can be a regular expression. If value is
__focused__, then the app id must be the same as that of the currently
focused window.
**class**::
Compare value against the window class. Can be a regular expression. If
value is __focused__, then the window class must be the same as that of the
currently focused window.
**con_id**::
Compare against the internal container ID, which you can find via IPC.
**con_mark**::
Compare against the window marks. Can be a regular expression.
**floating**::
Matches against floating windows.
**id**::
Compare value against the X11 window id. Must be numeric.
**instance**::
Compare value against the window instance. Can be a regular expression. If
value is __focused__, then the window instance must be the same as that of
the currently focused window.
**tiling**::
Matches against tiling windows.
**title**::
Compare against the window title. Can be a regular expression. If value is
__focused__, then the window title must be the same as that of the currently
focused window.
**urgent**::
Compares the urgent state of the window. Can be "latest" or "oldest".
**window_role**::
Compare against the window role (WM_WINDOW_ROLE). Can be a regular
expression. If value is __focused__, then the window role must be the same
as that of the currently focused window.
**window_type**::
Compare against the window type (_NET_WM_WINDOW_TYPE). Possible values are
normal, dialog, utility, toolbar, splash, menu, dropdown_menu, popup_menu,
tooltip and notification.
**workspace**::
Compare against the workspace name for this view. Can be a regular
expression. If the value is __focused__, then all the views on the currently
focused workspace matches.
See Also
--------
**sway**(1) **sway-input**(5) **sway-bar**(5)