Provided by: sway_1.10.1-2_amd64 bug

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%

       Commands  can  also  be  given  as  a block in the form command { <subcommands...> }. Anything before the
       opening { will be prepended to the lines inside the block. For example:

           output eDP-1 {
                background ~/wallpaper.png fill
                resolution 1920x1080
           }

       is identical to

           output eDP-1 background ~/wallpaper.png fill
           output eDP-1 resolution 1920x1080

       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 ;. Criteria is retained across commands separated by ,, but will be reset  (and
       allow for new criteria, if desired) for commands separated by a ;.

       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

       This section only lists general commands. For input and output commands, refer to sway-input(5) and sway-
       output(5).

   Config only commands
       The following commands may only be used in the configuration file.

       bar [<bar-id>] <bar-subcommands...>
           For details on bar subcommands, see sway-bar(5).

       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.

       swaybg_command <command>
           Executes custom background command. Default is swaybg. Refer to sway-output(5) for more information.

           It can be disabled by setting the command to a single dash: swaybg_command -

       swaynag_command <command>
           Executes  custom command for swaynag. Default is swaynag. Additional arguments may be appended to the
           end. This should only be used to either direct sway to call swaynag from a custom path or to  provide
           additional arguments. This should be placed at the top of the config for the best results.

           It can be disabled by setting the command to a single dash: swaynag_command -

       workspace_layout default|stacking|tabbed
           Specifies the initial layout for new containers in an empty workspace.

       xwayland enable|disable|force
           Enables  or  disables  Xwayland support, which allows X11 applications to be used. enable will lazily
           load Xwayland so Xwayland will not be launched until the first client attempts to  connect.  In  some
           cases,  such  as  slower  machines, it may be desirable to have Xwayland started immediately by using
           force instead of enable.

   Runtime only 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 none|normal|csd|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. The title  bar  always  shows  in  stacking  or  tabbed
           layouts.  csd  is  short  for  client-side-decorations,  which  allows  the  client  to  draw its own
           decorations. Default is normal with border thickness 2.

       border toggle
           Cycles through the available border styles.

       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.

       <criteria> focus
           Moves focus to the container that matches the specified criteria.

       focus up|right|down|left
           Moves focus to the next container in the specified direction.

       focus prev|next [sibling]
           Moves focus to the previous or next container in the current layout.  By  default,  the  last  active
           child of the newly focused container will be focused. The sibling option indicates not to immediately
           focus a child of the container.

       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 tiling
           Sets focus to the last focused tiling container.

       focus floating
           Sets focus to the last focused floating container.

       focus mode_toggle
           Moves focus between the floating and tiled layers.

       fullscreen [enable|disable|toggle] [global]
           Makes  focused  view fullscreen, non-fullscreen, or the opposite of what it is now. If no argument is
           given, it does the same as toggle. If global is specified, the view will  be  fullscreen  across  all
           outputs.

       gaps inner|outer|horizontal|vertical|top|right|bottom|left all|current set|plus|minus|toggle <amount>
           Changes the inner or outer gaps for either all workspaces or the current workspace. outer gaps can be
           altered per side with top, right, bottom, and left or per direction with horizontal and vertical.

       inhibit_idle focus|fullscreen|open|none|visible
           Set/unset  an  idle  inhibitor  for the view. focus will inhibit idle when the view is focused by any
           seat. fullscreen will inhibit idle when the view is fullscreen  (or  a  descendant  of  a  fullscreen
           container)  and  is  visible.  open  will  inhibit idle until the view is closed (or the inhibitor is
           unset/changed). visible will inhibit idle when the view is visible on any output.  none  will  remove
           any existing idle inhibitor for the view.

           This can also be used with criteria to set an idle inhibitor for any existing view or with for_window
           to set idle inhibitors for future views.

       layout default|splith|splitv|stacking|tabbed
           Sets the layout mode of the focused container.

           When  using  the  stacking  layout,  only  the focused window in the container is displayed, with the
           opened windows' list on the top of the container.

           The tabbed layout is similar to stacking, but the windows’ list is vertically split.

       layout toggle [split|all]
           Cycles the layout mode of the focused container though a preset list of layouts. If  no  argument  is
           given,  then it cycles through stacking, tabbed and the last split layout. If split is given, then it
           cycles through splith and splitv. If all is given, then it cycles through every layout.

       layout toggle [split|tabbed|stacking|splitv|splith] [split|tabbed|stacking|splitv|splith]...
           Cycles the layout mode of the focused container through a list of layouts.

       max_render_time off|<msec>
           Controls when the relevant application is told to  render  this  window,  as  a  positive  number  of
           milliseconds  before  the  next  time  sway  composites the output. A smaller number leads to fresher
           rendered frames being composited by sway and lower perceived input latency, but if set too  low,  the
           application may not finish rendering before sway composites the output, leading to delayed frames.

           When  set  to  off,  the relevant application is told to render this window immediately after display
           refresh. How much time is left for rendering before sway composites the output at that point  depends
           on the output max_render_time setting.

           To set this up for optimal latency:
           1.  Set up output max_render_time (see sway-output(5)).
           2.  Put the target application in full-screen and have it continuously render something.
           3.  Start by setting max_render_time 1. If the application drops frames, increment by 1.

           This setting only has an effect if a per-output max_render_time is in effect on the output the window
           is currently on. See sway-output(5) for further details.

       allow_tearing yes|no
           Allows or disallows screen tearing as a result of immediate page flips for a fullscreen application.

           When  this option is not set, the tearing hints provided by the application determine whether tearing
           is allowed. When yes is specified, the application allows tearing regardless of  the  tearing  hints.
           When  no  is  specified,  tearing will never be allowed on the application, regardless of the tearing
           hints.

           This setting only has an  effect  if  tearing  is  allowed  on  the  output  through  the  per-output
           allow_tearing setting. See sway-output(5) for further details.

       move left|right|up|down [<px> px]
           Moves  the  focused container in the direction specified. 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 [absolute] position <pos_x> [px|ppt] <pos_y> [px|ppt]
           Moves the focused container to the specified position in the workspace. The position can be specified
           in  pixels  or  percentage  points,  omitting  the  unit defaults to pixels. If absolute is used, the
           position is relative to all outputs. absolute can not be used with percentage points.

       move [absolute] position center
           Moves the focused container to be centered on the workspace. If absolute is used, it is moved to  the
           center of all outputs.

       move position cursor|mouse|pointer
           Moves the focused container to be centered on the cursor.

       move [container|window] [to] mark <mark>
           Moves the focused container to the specified mark.

       move [--no-auto-back-and-forth] [container|window] [to] workspace [number] <name>
           Moves  the focused container to the specified workspace. The string number is optional and is used to
           match a workspace with the same number, even if it has a different name.

       move [container|window] [to] workspace prev|next|current
           Moves the focused container to the previous, next or current 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] [to] workspace back_and_forth
           Moves the focused container to previously focused workspace.

       move [container|window] [to] output <name-or-id>|current
           Moves the focused container to the specified output.

       move [container|window] [to] output up|right|down|left
           Moves the focused container to next output in the specified direction.

       move [container|window] [to] scratchpad
           Moves the focused container to the scratchpad.

       move workspace [to] output <name-or-id>|current
           Moves the focused workspace to the specified output.

       move workspace to [output] <name-or-id>|current
           Moves the focused workspace to the specified output.

       move workspace [to] output up|right|down|left
           Moves the focused workspace to next output in the specified direction.

       move workspace to [output] up|right|down|left
           Moves the focused workspace to next output in the specified direction.

       nop <comment>
           A no operation command that can be used to override default behaviour. The optional comment  argument
           is ignored, but logged for debugging purposes.

       reload
           Reloads the sway config file and applies any changes. The config file is located at path specified by
           the command line arguments when started, otherwise according to the priority stated in sway(1).

       rename workspace [<old_name>] to <new_name>
           Rename either <old_name> or the focused workspace to the <new_name>

       resize shrink|grow width|height [<amount> [px|ppt]]
           Resizes  the  currently focused container by amount, specified in pixels or percentage points. If the
           units are omitted, floating containers are resized in px and tiled containers  by  ppt.  amount  will
           default to 10 if omitted.

       resize set height <height> [px|ppt]
           Sets  the  height  of the container to height, specified in pixels or percentage points. If the units
           are omitted, floating containers are resized in px and tiled containers by ppt. If height is  0,  the
           container will not be resized.

       resize set [width] <width> [px|ppt]
           Sets  the width of the container to width, specified in pixels or percentage points. If the units are
           omitted, floating containers are resized in px and tiled containers  by  ppt.  If  width  is  0,  the
           container will not be resized.

       resize set [width] <width> [px|ppt] [height] <height> [px|ppt]
           Sets  the  width  and  height of the container to width and height, specified in pixels or percentage
           points. If the units are omitted, floating containers are resized in px and tiled containers by  ppt.
           If width or height is 0, the container will not be resized on that axis.

       scratchpad show
           Shows  a  window from the scratchpad. Repeatedly using this command will cycle through the windows in
           the scratchpad.

       shortcuts_inhibitor enable|disable
           Enables or disables the ability of clients  to  inhibit  keyboard  shortcuts  for  a  view.  This  is
           primarily  useful  for  virtualization  and  remote desktop software. It affects either the currently
           focused view or a set of views selected by criteria. Subcommand disable additionally deactivates  any
           active inhibitors for the given view(s). Criteria are particularly useful with the for_window command
           to  configure  a  class  of  views  differently  from  the  per-seat defaults established by the seat
           subcommand of the same name. See sway-input(5) for more ways to affect inhibitors.

       split vertical|v|horizontal|h|none|n|toggle|t
           Splits the current container, vertically or horizontally. When none is specified,  the  effect  of  a
           previous split is undone if the current container is the only child of a split parent. 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.

       swap container with id|con_id|mark <arg>
           Swaps  the  position,  geometry,  and fullscreen status of two containers. The first container can be
           selected either by criteria or focus. The second container can be selected by id, con_id, or mark. id
           can only be used with xwayland views. If the first container has focus, it will retain  focus  unless
           it is moved to a different workspace or the second container becomes fullscreen on the same workspace
           as the first container. In either of those cases, the second container will gain focus.

       title_format <format>
           Sets the format of window titles. The following placeholders may be used:

               %title - The title supplied by the window
                         %app_id - The wayland app ID (applicable to wayland windows only)
                         %class - The X11 classname (applicable to xwayland windows only)
                         %instance - The X11 instance (applicable to xwayland windows only)
                         %shell - The protocol the window is using (typically xwayland or
                   xdg_shell)

           This command is typically used with for_window criteria. For example:

               for_window [title="."] title_format "<b>%title</b> (%app_id)"

           Note that markup requires pango to be enabled via the font command.

           The default format is "%title".

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

       assign <criteria> [→] [workspace] [number] <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>

       assign <criteria> [→] output left|right|up|down|<name>
           Assigns views matching criteria (see CRITERIA for details) to the specified output. The → (U+2192) is
           optional and cosmetic. This command is equivalent to:

               for_window <criteria> move container to output <output>

       bindsym [--whole-window] [--border] [--exclude-titlebar]  [--release]  [--locked]  [--to-code]  [--input-
       device=<device>] [--no-warn] [--no-repeat] [--inhibited] [Group<1-4>+]<key combo> <command>
           Binds  key  combo  to  execute  the sway command command when pressed. You may use XKB key names here
           (wev(1) is a good tool for discovering these). With the flag --release, the command is executed  when
           the key combo is released. If input-device is given, the binding will only be executed for that input
           device  and will be executed instead of any binding that is generic to all devices. If a group number
           is given, then the binding will only be available for that group. By  default,  if  you  overwrite  a
           binding, swaynag will give you a warning. To silence this, use the --no-warn flag.

           For  specifying  modifier  keys,  you  can  use  the  XKB modifier names Shift, Lock (for Caps Lock),
           Control, Mod1 (for Alt), Mod2 (for Num Lock), Mod3 (for XKB modifier Mod3), Mod4 (for the Logo  key),
           and  Mod5  (for  AltGr). In addition, you can use the aliases  Ctrl (for Control), Alt (for Alt), and
           Super (for the Logo key).

           Unless the flag --locked is set, the command will not be run when a screen locking program is active.
           If there is a matching binding with and without --locked, the one with will be preferred when  locked
           and  the one without will be preferred when unlocked. If there are matching bindings and one has both
           --input-device and --locked and the other has  neither,  the  former  will  be  preferred  even  when
           unlocked.

           Unless  the  flag --inhibited is set, the command will not be run when a keyboard shortcuts inhibitor
           is active for the currently focused window. Such inhibitors are usually requested by  remote  desktop
           and  virtualization  software  to enable the user to send keyboard shortcuts to the remote or virtual
           session. The --inhibited flag allows one to define bindings which will be exempt from pass-through to
           such software. The same preference logic as for --locked applies.

           Unless the flag --no-repeat is set, the command  will  be  run  repeatedly  when  the  key  is  held,
           according to the repeat settings specified in the input configuration.

           Bindings  to keysyms are layout-dependent. This can be changed with the --to-code flag. In this case,
           the keysyms will be translated into the corresponding keycodes in the first configured layout.

           Mouse bindings operate on the container under the cursor instead of the  container  that  has  focus.
           Mouse  buttons can either be specified in the form button[1-9] or by using the name of the event code
           (ex BTN_LEFT or BTN_RIGHT). For the former option, the buttons will be mapped to their values in  X11
           (1=left,  2=middle,  3=right,  4=scroll  up,  5=scroll  down,  6=scroll left, 7=scroll right, 8=back,
           9=forward). For the latter option, you can find the event names using libinput debug-events.

           The priority for matching bindings is as follows: input device, group, and locked state.

           --whole-window, --border, and --exclude-titlebar are mouse-only options which affect  the  region  in
           which  the  mouse bindings can be triggered.  By default, mouse bindings are only triggered when over
           the title bar. With the --border option, the border of the window will be included  in  this  region.
           With the --whole-window option, the cursor can be anywhere over a window including the title, border,
           and  content. --exclude-titlebar can be used in conjunction with any other option to specify that the
           titlebar should be excluded from the region of consideration.

           If --whole-window is given, the command can be triggered when the cursor is over an empty  workspace.
           Using a mouse binding over a layer surface's exclusive region is not currently possible.

           Example:
                     # Execute firefox when alt, shift, and f are pressed together
                     bindsym Mod1+Shift+f exec firefox

           bindcode   [--whole-window]   [--border]   [--exclude-titlebar]   [--release]   [--locked]  [--input-
           device=<device>]  [--no-warn]  [--no-repeat]  [--inhibited]  [Group<1-4>+]<code>  <command>  is  also
           available for binding with key/button codes instead of key/button names.

       bindswitch [--locked] [--no-warn] [--reload] <switch>:<state> <command>
           Binds  <switch>  to  execute  the  sway  command command on state changes. Supported switches are lid
           (laptop lid) and tablet (tablet mode) switches. Valid values for state are on, off and toggle.  These
           switches  are  on  when the device lid is shut and when tablet mode is active respectively. toggle is
           also supported to run a command both when the switch is toggled on or off.

           Unless the flag --locked is set, the command will not be run when a screen locking program is active.
           If there is a matching binding with and without --locked, the one with will be preferred when  locked
           and the one without will be preferred when unlocked.

           If  the --reload flag is given, the binding will also be executed when the config is reloaded. toggle
           bindings will not be executed on reload. The --locked flag will operate as normal so if the config is
           reloaded while locked and --locked is not given, the binding will not be executed.

           By default, if you overwrite a binding, swaynag will give you a warning. To  silence  this,  use  the
           --no-warn flag.

           Example:
                     # Show the virtual keyboard when tablet mode is entered.
                     bindswitch tablet:on busctl call --user sm.puri.OSK0 /sm/puri/OSK0 sm.puri.OSK0 SetVisible b true

                     # Log a message when the laptop lid is opened or closed.
                     bindswitch lid:toggle exec echo "Lid moved"

       bindgesture [--exact] [--input-device=<device>] [--no-warn] <gesture>[:<fingers>][:directions] <command>
           Binds  gesture  to execute the sway command command when detected. Currently supports the hold, pinch
           or swipe gesture. Optionally can be limited to bind to a certain number of fingers or, for a pinch or
           swipe gesture, to certain directions.

       ┌───────┬─────────┬─────────────────────────────────────────────────────────────────────────────────────┐
       │ typefingersdirection                                                                           │
       ├───────┼─────────┼─────────────────────────────────────────────────────────────────────────────────────┤
       │ hold  │  1 - 5  │ none                                                                                │
       ├───────┼─────────┼─────────────────────────────────────────────────────────────────────────────────────┤
       │ swipe │  3 - 5  │ up, down, left, right                                                               │
       ├───────┼─────────┼─────────────────────────────────────────────────────────────────────────────────────┤
       │ pinch │  2 - 5  │ all above + inward, outward, clockwise, counterclockwise                            │
       └───────┴─────────┴─────────────────────────────────────────────────────────────────────────────────────┘

           The fingers can be limited to any sensible number or left empty to accept any  finger  counts.  Valid
           directions  are up, down, left and right, as well as inward, outward, clockwise, counterclockwise for
           the pinch gesture. Multiple directions can be combined by a plus.

           If a input-device is given, the binding will only be executed for  that  input  device  and  will  be
           executed  instead  of  any  binding  that  is  generic to all devices. By default, if you overwrite a
           binding, swaynag will give you a warning. To silence this, use the --no-warn flag.

           The --exact flag can be used to ensure a binding only matches when exactly all  specified  directions
           are matched and nothing more. If there is matching binding with --exact, it will be preferred.

           The  priority  for  matching  bindings  is  as  follows: input device, then exact matches followed by
           matches with the highest number of matching directions.

           Gestures executed while the pointer is above a bar are  not  handled  by  sway.  See  the  respective
           documentation, e.g. bindgesture in sway-bar(5).

           Example:
                     # Allow switching between workspaces with left and right swipes
                     bindgesture swipe:right workspace prev
                     bindgesture swipe:left workspace next

                     # Allow container movements by pinching them
                     bindgesture pinch:inward+up move up
                     bindgesture pinch:inward+down move down
                     bindgesture pinch:inward+left move left
                     bindgesture pinch:inward+right move right

       client.background <color>
           This command is ignored and is only present for i3 compatibility.

       client.<class> <border> <background> <text> [<indicator> [<child_border>]]
           Configures  the  color  of  window  borders and title bars. The first three colors are required. When
           omitted indicator will use a sane default and child_border will use the  color  set  for  background.
           Colors may be specified in hex, either as #RRGGBB or #RRGGBBAA.

           The available classes are:

           client.focused
               The window that has focus.

           client.focused_inactive
               The most recently focused view within a container which is not focused.

           client.focused_tab_title
               A  view that has focused descendant container. Tab or stack container title that is the parent of
               the focused container but is not directly focused. Defaults to focused_inactive if not  specified
               and does not use the indicator and child_border colors.

           client.placeholder
               Ignored (present for i3 compatibility).

           client.unfocused
               A view that does not have focus.

           client.urgent
               A  view  with  an urgency hint. Note: Native Wayland windows do not support urgency. Urgency only
               works for Xwayland windows.

           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:

       ┌───────────────────┬─────────┬────────────┬─────────┬───────────┬──────────────┐
       │       classborderbackgroundtextindicatorchild_border │
       ├───────────────────┼─────────┼────────────┼─────────┼───────────┼──────────────┤
       │ background        │ n/a     │ #ffffff    │ n/a     │ n/a       │ n/a          │
       ├───────────────────┼─────────┼────────────┼─────────┼───────────┼──────────────┤
       │ focused           │ #4c7899 │ #285577    │ #ffffff │ #2e9ef4   │ #285577      │
       ├───────────────────┼─────────┼────────────┼─────────┼───────────┼──────────────┤
       │ focused_inactive  │ #333333 │ #5f676a    │ #ffffff │ #484e50   │ #5f676a      │
       ├───────────────────┼─────────┼────────────┼─────────┼───────────┼──────────────┤
       │ focused_tab_title │ #333333 │ #5f676a    │ #ffffff │ n/a       │ n/a          │
       ├───────────────────┼─────────┼────────────┼─────────┼───────────┼──────────────┤
       │ unfocused         │ #333333 │ #222222    │ #888888 │ #292d2e   │ #222222      │
       ├───────────────────┼─────────┼────────────┼─────────┼───────────┼──────────────┤
       │ urgent            │ #2f343a │ #900000    │ #ffffff │ #900000   │ #900000      │
       ├───────────────────┼─────────┼────────────┼─────────┼───────────┼──────────────┤
       │ placeholder       │ #000000 │ #0c0c0c    │ #ffffff │ #000000   │ #0c0c0c      │
       └───────────────────┴─────────┴────────────┴─────────┴───────────┴──────────────┘

       default_border normal|none|pixel [<n>]
           Set default border style for new tiled windows. Config reload won't  affect  existing  windows,  only
           newly created ones after the reload.

       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. The default is  0  x
           0, which will use the width and height of the entire output layout as the maximums

       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. Setting modifier to none disables this feature. If inverse is specified, left  click  is
           used for resizing and right click for moving.

       focus_follows_mouse yes|no|always
           If  set  to yes, moving your mouse over a window will focus that window. If set to always, the window
           under the cursor will always be focused, even after switching between workspaces.

       focus_on_window_activation smart|urgent|focus|none
           This option determines what to do when a client requests window activation. If  set  to  urgent,  the
           urgent  state will be set for that window. If set to focus, the window will become focused. If set to
           smart, the window will become focused only if it is already visible, otherwise the urgent state  will
           be set. Default is urgent.

       focus_wrapping yes|no|force|workspace
           This  option  determines  what to do when attempting to focus over the edge of a container. If set to
           no, the focused container will retain focus, if there are no other containers in  the  direction.  If
           set  to  yes,  focus  will  be  wrapped  to the opposite edge of the container, if there are no other
           containers in the direction. If set to force, focus will be wrapped  to  the  opposite  edge  of  the
           container,  even if there are other containers in the direction. If set to workspace, focus will wrap
           like in the yes case and additionally wrap when moving outside of workspaces boundaries.  Default  is
           yes.

       font [pango:]<font>
           Sets  font  to use for the title bars. To enable support for pango markup, preface the font name with
           pango:. For example, monospace  10  is  the  default  font.  To  enable  support  for  pango  markup,
           pango:monospace 10 should be used instead. Regardless of whether pango markup is enabled, font should
           be  specified  as  a  pango  font  description.  For more information on pango font descriptions, see
           https://docs.gtk.org/Pango/type_func.FontDescription.from_string.html#description

       force_display_urgency_hint <timeout> [ms]
           If an application on another workspace sets an urgency hint, switching to this workspace may lead  to
           immediate focus of the application, which also means the window decoration color would be immediately
           reset  to  client.focused. This may make it unnecessarily hard to tell which window originally raised
           the event. This option allows one to set a timeout in ms to delay the urgency hint reset.

       titlebar_border_thickness <thickness>
           Thickness of the titlebar border in pixels

       titlebar_padding <horizontal> [<vertical>]
           Padding of the text in the titlebar. horizontal value affects horizontal padding of  the  text  while
           vertical  value  affects  vertical  padding  (space  above and below text). Padding includes titlebar
           borders so their value should be greater than titlebar_border_thickness. If  vertical  value  is  not
           specified it is set to the horizontal value.

       for_window <criteria> <command>
           Whenever a window that matches criteria appears, run list of commands. See CRITERIA for more details.

       gaps inner|outer|horizontal|vertical|top|right|bottom|left <amount>
           Sets  default  amount  pixels of inner or outer gap, where the inner affects spacing around each view
           and outer affects the spacing around each workspace. Outer gaps are in addition  to  inner  gaps.  To
           reduce  or  remove  outer  gaps,  outer  gaps  can be set to a negative value. outer gaps can also be
           specified per side with top, right, bottom, and left or per direction with horizontal and vertical.

           This affects new workspaces only, and is used when the workspace doesn't have its own  gaps  settings
           (see: workspace <ws> gaps ...).

       hide_edge_borders [--i3] none|vertical|horizontal|both|smart|smart_no_gaps
           Hides  window  borders  adjacent  to  the  screen  edges.  Default  is  none. The --i3 option enables
           i3-compatible behavior to hide the title bar on tabbed and stacked containers  with  one  child.  The
           smart|smart_no_gaps   options   are   equivalent   to   setting   smart_borders   smart|no_gaps   and
           hide_edge_borders none.

       input <input_device> <input-subcommands...>
           For details on input subcommands, see sway-input(5).

           * 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> <seat-subcommands...>
           For details on seat subcommands, see sway-input(5).

       kill
           Kills (closes) the currently focused container and all of its children.

       smart_borders on|no_gaps|off
           If  smart_borders  are  on,  borders  will only be enabled if the workspace has more than one visible
           child. If smart_borders is set to no_gaps, borders will only be enabled if  the  workspace  has  more
           than one visible child and gaps equal to zero.

       smart_gaps on|off|toggle|inverse_outer
           If  smart_gaps are on gaps will only be enabled if a workspace has more than one child. If smart_gaps
           are inverse_outer outer gaps will only be enabled if a workspace has exactly 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.  Each identifier can only be set on a single window at a time since they act as a unique
           identifier. By default, mark sets identifier as the only mark on a window.  --add  will  instead  add
           identifier  to  the  list of current marks for that window. If --toggle is specified mark will remove
           identifier if it is already marked.

       mode <mode>
           Switches to the specified mode. The default mode is default.

       mode [--pango_markup] <mode> <mode-subcommands...>
           The only valid mode-subcommands... are bindsym, bindcode, bindswitch, and set. If  --pango_markup  is
           given, then mode will be interpreted as pango markup.

       mouse_warping output|container|none
           If  output  is  specified,  the mouse will be moved to new outputs as you move focus between them. If
           container is specified, the mouse will be moved to the middle of the container on switch. Default  is
           output.

       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 <output_name> <output-subcommands...>
           For details on output subcommands, see sway-output(5).

           * may be used in lieu of a specific output name to configure all outputs. A list of output names  may
           be obtained via swaymsg -t get_outputs.

       popup_during_fullscreen smart|ignore|leave_fullscreen
           Determines  what to do when a fullscreen view opens a dialog. If smart (the default), the dialog will
           be displayed. If ignore, the dialog will not be rendered. If leave_fullscreen,  the  view  will  exit
           fullscreen mode and the dialog will be rendered.

       primary_selection enabled|disabled
           Enable  or  disable  the  primary  selection  clipboard. May only be configured at launch. Default is
           enabled.

       set $<name> <value>
           Sets variable $name to value. You can use the new variable in the arguments of future commands.  When
           the  variable  is  used,  it  can be escaped with an additional $ (ie $$name) to have the replacement
           happen at run time instead of when reading the config. However, it does not always make sense for the
           variable to be replaced at run time since some arguments do need to be known at config time.

       show_marks yes|no
           If show_marks is yes, marks will be displayed in the window borders. Any mark  that  starts  with  an
           underscore will not be drawn even if show_marks is yes. The default is yes.

       opacity [set|plus|minus] <value>
           Adjusts  the  opacity  of the window between 0 (completely transparent) and 1 (completely opaque). If
           the operation is omitted, set will be used.

       tiling_drag  enable|disable|toggle
           Sets whether or not tiling containers can be dragged  with  the  mouse.  If  enabled  (default),  the
           floating_mod can be used to drag tiling, as well as floating, containers. Using the left mouse button
           on title bars without the floating_mod will also allow the container to be dragged. toggle should not
           be used in the config file.

       tiling_drag_threshold <threshold>
           Sets  the  threshold that must be exceeded for a container to be dragged by its titlebar. This has no
           effect if floating_mod is used or if tiling_drag is set to disable.   Once  the  threshold  has  been
           exceeded once, the drag starts and the cursor can come back inside the threshold without stopping the
           drag.  threshold is multiplied by the scale of the output that the cursor on.  The default is 9.

       title_align left|center|right
           Sets  the title alignment. If right is selected and show_marks is set to yes, the marks will be shown
           on the left side instead of the right side.

       unbindswitch <switch>:<state>
           Removes a binding for when <switch> changes to <state>.

       unbindgesture [--exact] [--input-device=<device>] <gesture>[:<fingers>][:directions]
           Removes a binding for the specified gesture, fingers and directions combination.

       unbindsym [--whole-window] [--border] [--exclude-titlebar] [--release] [--locked]  [--to-code]  [--input-
       device=<device>] <key combo>
           Removes the binding for key combo that was previously bound with the given flags.  If input-device is
           given, only the binding for that input device will be unbound.

           unbindcode   [--whole-window]   [--border]   [--exclude-titlebar]  [--release]  [--locked]  [--input-
           device=<device>] <code> is also available for unbinding with key/button codes instead  of  key/button
           names.

       unmark [<identifier>]
           unmark  will  remove identifier from the list of current marks on a window. If identifier is omitted,
           all marks are removed.

       urgent enable|disable|allow|deny
           Using enable or disable manually sets or unsets the  window's  urgent  state.  Using  allow  or  deny
           controls  the  window's ability to set itself as urgent. By default, windows are allowed to set their
           own urgency.

       workspace [--no-auto-back-and-forth] [number] <[num:]name>
           Switches to the specified workspace. The num: portion of the name is optional and will  be  used  for
           ordering. If num: is not given and name is a number, then it will be also be used for ordering.

           If  the  no-auto-back-and-forth  option is given, then this command will not perform a back-and-forth
           operation when the workspace is already focused and workspace_auto_back_and_forth is enabled.

           If the number keyword is specified and a workspace with the number already exists, then the workspace
           with the number will be used. If a workspace with the number does not exist, a new workspace will  be
           created with the name name.

       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 back_and_forth
           Switches to the previously focused workspace.

       workspace <name> gaps inner|outer|horizontal|vertical|top|right|bottom|left <amount>
           Specifies that workspace name should have the given gaps settings when it is created.

           This command does not affect existing workspaces. To alter the gaps of an existing workspace, use the
           gaps command.

       workspace <name> output <outputs...>
           Specifies that workspace name should be shown on the  specified  outputs.  Multiple  outputs  can  be
           listed  and  the first available will be used. If the workspace gets placed on an output further down
           the list and an output that is higher on the list becomes available, the workspace will be  moved  to
           the higher priority output.

           This command does not affect existing workspaces. To move an existing workspace, use the move command
           in  combination  with  the  workspace  criteria  (non-empty workspaces only) or workspace command (to
           switch to the workspace before moving).

       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.

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 is retained across commands separated by a ,, but will be reset (and allow for new criteria,  if
       desired) for commands separated by a ;.

       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

       You  may  like to use swaymsg -t get_tree for finding the values of these properties in practice for your
       applications.

       The following attributes may be matched with:

       all
           Matches all windows.

       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. app_id are specific to Wayland
           applications.

       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. class are specific to X11
           applications and require XWayland.

       con_id
           Compare against the internal container ID, which you can find via IPC. If value is __focused__,  then
           the id must be the same as that of the currently focused window.

       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. id is specific to X11 applications and
           requires XWayland.

       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. instance is specific to
           X11 applications and requires XWayland.

       pid
           Compare value against the window's process ID. Must be numeric.

       shell
           Compare value against the window  shell,  such  as  "xdg_shell"  or  "xwayland".  Can  be  a  regular
           expression. If value is __focused__, then the shell 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 first, last, latest, newest, oldest or recent.

       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_role is specific to X11 applications and requires XWayland.

       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. window_type is specific
           to X11 applications and requires XWayland.

       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-output(5) sway-bar(5) sway-ipc(7)

                                                   2025-02-04                                            sway(5)