mirror of
https://github.com/swaywm/sway.git
synced 2024-11-26 18:01:29 +00:00
511 lines
20 KiB
Plaintext
511 lines
20 KiB
Plaintext
/////
|
|
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.
|
|
|
|
**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_.
|
|
|
|
**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:
|
|
|
|
**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 app id. Can be a regular expression.
|
|
|
|
**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.
|
|
|
|
**tiling**::
|
|
Matches against tiling windows.
|
|
|
|
**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)
|