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.

These commands can be executed in your config file, via sway-msg(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.

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. See sway-input(5) for details.

set <name> <value>
    Creates a substitution for value that can be used with $name in other commands.

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 just the border without title bar. 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.

new_window <normal|none|pixel> [<n>]
    Set default border style for new windows.

new_float <normal|none|pixel> [<n>]
    Set default border style for new floating windows. This does only apply to windows that are spawned in floating mode.

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, or parent. The directional focus commands will move the focus in that direction. 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.

hide_edge_borders <none|vertical|horizontal|both>
    Hide window borders adjacent to the screen edges. Default is none.

layout <mode>
    Sets the layout mode of the focused container. mode can be one of splith, splitv, or toggle split.

move <left|right|up|down>
    Moves the focused container left, right, up, or down.

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.

reload
    Reloads the sway config file without restarting sway.

resize <shrink|grow> <width|height> <amount>
    Resizes the currently focused container or view by amount. amount can be specified as "n px" or "n ppt" or "n px or n ppt".

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>
    If enabled and the windows is floating it will always be present on the active workspace on that output.

The following commands may be used either in the configuration file or triggered at runtime.

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.

debuglog <on|off|toggle>
    Enables, disables or toggles logging for debug. The toggle argument cannot be used in the configuration file.

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_modifier <modifier> [normal|inverse]
    When the modifier key is held down, you may use left click to drag 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 paramenter is optional and defaults to normal if it isn’t defined.

focus_follows_mouse <yes|no>
    If set to yes, the currently focused view will change as you move your mouse around the screen to the view that ends up underneath your mouse.

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 no, 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.

smart_gaps <on|off>
    If smart_gaps are on then gaps will only be enabled if a workspace has more than one child container.

mode <mode_name>
    Switches to the given mode_name. the default mode is simply default. To create a new mode in config append { to this command, the following lines will be keybinds 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.

output <name> <resolution|res> <WIDTHxHEIGHT>
    Configures the specified output to use the given resolution.

output <name> <position|pos> <X,Y>
    Configures the specified output to be arranged at the given position.

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> disable
    Disables the specified output.

NOTES FOR THE OUTPUT COMMAND
    You may combine output commands into one, like so: output HDMI-A-1 res 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.

workspace <name>
    Switches to the specified workspace.

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_layout <default|stacking|tabbed>
    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 and they are used by some commands filter which views to execute actions on. All attributes must match for the criteria string to match.

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.

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.

workspace
    Compare against the workspace name for this view. Can be a regular expression. If value is focused then all the views on the currently focused workspace matches.

SEE ALSO

sway(1) sway-input(5) sway-bar(5)