1sway(5) File Formats Manual sway(5)
2
3
4
6 sway - configuration file and commands
7
9 A sway configuration file is a list of sway commands that are executed
10 by sway on startup. These commands usually consist of setting your
11 preferences and setting key bindings. An example config is likely
12 present in /etc/sway/config for you to check out.
13
14 Lines in the configuration file might be extended through multiple
15 lines by adding a '\' character at the end of line. e.g.:
16
17 bindsym Shift+XF86AudioRaiseVolume exec \
18 pactl set-sink-volume @DEFAULT_SINK@ -1%
19
20 Commands can also be given as a block in the form command { <subcom‐
21 mands...> }. Anything before the opening { will be prepended to the
22 lines inside the block. For example:
23
24 output eDP-1 {
25 background ~/wallpaper.png fill
26 resolution 1920x1080
27 }
28
29 is identical to
30
31 output eDP-1 background ~/wallpaper.png fill
32 output eDP-1 resolution 1920x1080
33
34 These commands can be executed in your config file, via swaymsg(1), or
35 via the bindsym command.
36
38 Commands are split into several arguments using spaces. You can enclose
39 arguments with quotation marks ("..." or '...') to add spaces to a sin‐
40 gle argument. You may also run several commands in order by separating
41 each with , or ;. Criteria is retained across commands separated by ,,
42 but will be reset (and allow for new criteria, if desired) for commands
43 separated by a ;.
44
45 Throughout the documentation, | is used to distinguish between argu‐
46 ments for which you may only select one. [...] is used for optional ar‐
47 guments, and <...> for arguments where you are expected to supply some
48 value.
49
51 This section only lists general commands. For input and output com‐
52 mands, refer to sway-input(5) and sway-output(5).
53
54 The following commands may only be used in the configuration file.
55
56 bar [<bar-id>] <bar-subcommands...>
57 For details on bar subcommands, see sway-bar(5).
58
59 default_orientation horizontal|vertical|auto
60 Sets the default container layout for tiled containers.
61
62 include <path>
63 Includes another file from path. path can be either a full path or
64 a path relative to the parent config, and expands shell syntax (see
65 wordexp(3) for details). The same include file can only be included
66 once; subsequent attempts will be ignored.
67
68 swaybg_command <command>
69 Executes custom background command. Default is swaybg. Refer to
70 sway-output(5) for more information.
71
72 It can be disabled by setting the command to a single dash:
73 swaybg_command -
74
75 swaynag_command <command>
76 Executes custom command for swaynag. Default is swaynag. Additional
77 arguments may be appended to the end. This should only be used to
78 either direct sway to call swaynag from a custom path or to provide
79 additional arguments. This should be placed at the top of the con‐
80 fig for the best results.
81
82 It can be disabled by setting the command to a single dash: sway‐
83 nag_command -
84
85 workspace_layout default|stacking|tabbed
86 Specifies the initial layout for new containers in an empty
87 workspace.
88
89 xwayland enable|disable|force
90 Enables or disables Xwayland support, which allows X11 applications
91 to be used. enable will lazily load Xwayland so Xwayland will not
92 be launched until the first client attempts to connect. In some
93 cases, such as slower machines, it may be desirable to have Xway‐
94 land started immediately by using force instead of enable.
95
96 The following commands cannot be used directly in the configuration
97 file. They are expected to be used with bindsym or at runtime through
98 swaymsg(1).
99
100 border none|normal|csd|pixel [<n>]
101 Set border style for focused window. normal includes a border of
102 thickness n and a title bar. pixel is a border without title bar n
103 pixels thick. Default is normal with border thickness 2. csd is
104 short for client-side-decorations, which allows the client to draw
105 its own decorations.
106
107 border toggle
108 Cycles through the available border styles.
109
110 exit
111 Exit sway and end your Wayland session.
112
113 floating enable|disable|toggle
114 Make focused view floating, non-floating, or the opposite of what
115 it is now.
116
117 <criteria> focus
118 Moves focus to the container that matches the specified criteria.
119
120 focus up|right|down|left
121 Moves focus to the next container in the specified direction.
122
123 focus prev|next [sibling]
124 Moves focus to the previous or next container in the current lay‐
125 out. By default, the last active child of the newly focused con‐
126 tainer will be focused. The sibling option indicates not to immedi‐
127 ately focus a child of the container.
128
129 focus child
130 Moves focus to the last-focused child of the focused container.
131
132 focus parent
133 Moves focus to the parent of the focused container.
134
135 focus output up|right|down|left
136 Moves focus to the next output in the specified direction.
137
138 focus output <name>
139 Moves focus to the named output.
140
141 focus tiling
142 Sets focus to the last focused tiling container.
143
144 focus floating
145 Sets focus to the last focused floating container.
146
147 focus mode_toggle
148 Moves focus between the floating and tiled layers.
149
150 fullscreen [enable|disable|toggle] [global]
151 Makes focused view fullscreen, non-fullscreen, or the opposite of
152 what it is now. If no argument is given, it does the same as tog‐
153 gle. If global is specified, the view will be fullscreen across all
154 outputs.
155
156 gaps inner|outer|horizontal|vertical|top|right|bottom|left all|current
157 set|plus|minus|toggle <amount>
158 Changes the inner or outer gaps for either all workspaces or the
159 current workspace. outer gaps can be altered per side with top,
160 right, bottom, and left or per direction with horizontal and verti‐
161 cal.
162
163 inhibit_idle focus|fullscreen|open|none|visible
164 Set/unset an idle inhibitor for the view. focus will inhibit idle
165 when the view is focused by any seat. fullscreen will inhibit idle
166 when the view is fullscreen (or a descendant of a fullscreen con‐
167 tainer) and is visible. open will inhibit idle until the view is
168 closed (or the inhibitor is unset/changed). visible will inhibit
169 idle when the view is visible on any output. none will remove any
170 existing idle inhibitor for the view.
171
172 This can also be used with criteria to set an idle inhibitor for
173 any existing view or with for_window to set idle inhibitors for fu‐
174 ture views.
175
176 layout default|splith|splitv|stacking|tabbed
177 Sets the layout mode of the focused container.
178
179 When using the stacking layout, only the focused window in the con‐
180 tainer is displayed, with the opened windows' list on the top of
181 the container.
182
183 The tabbed layout is similar to stacking, but the windows’ list is
184 vertically split.
185
186 layout toggle [split|all]
187 Cycles the layout mode of the focused container though a preset
188 list of layouts. If no argument is given, then it cycles through
189 stacking, tabbed and the last split layout. If split is given, then
190 it cycles through splith and splitv. If all is given, then it cy‐
191 cles through every layout.
192
193 layout toggle [split|tabbed|stacking|splitv|splith]
194 [split|tabbed|stacking|splitv|splith]...
195 Cycles the layout mode of the focused container through a list of
196 layouts.
197
198 max_render_time off|<msec>
199 Controls when the relevant application is told to render this win‐
200 dow, as a positive number of milliseconds before the next time sway
201 composites the output. A smaller number leads to fresher rendered
202 frames being composited by sway and lower perceived input latency,
203 but if set too low, the application may not finish rendering before
204 sway composites the output, leading to delayed frames.
205
206 When set to off, the relevant application is told to render this
207 window immediately after display refresh. How much time is left for
208 rendering before sway composites the output at that point depends
209 on the output max_render_time setting.
210
211 To set this up for optimal latency:
212 1. Set up output max_render_time (see sway-output(5)).
213 2. Put the target application in full-screen and have it continu‐
214 ously render something.
215 3. Start by setting max_render_time 1. If the application drops
216 frames, increment by 1.
217
218
219 This setting only has an effect if a per-output max_render_time is
220 in effect on the output the window is currently on. See sway-out‐
221 put(5) for further details.
222
223 move left|right|up|down [<px> px]
224 Moves the focused container in the direction specified. The op‐
225 tional px argument specifies how many pixels to move the container.
226 If unspecified, the default is 10 pixels. Pixels are ignored when
227 moving tiled containers.
228
229 move [absolute] position <pos_x> [px|ppt] <pos_y> [px|ppt]
230 Moves the focused container to the specified position in the
231 workspace. The position can be specified in pixels or percentage
232 points, omitting the unit defaults to pixels. If absolute is used,
233 the position is relative to all outputs. absolute can not be used
234 with percentage points.
235
236 move [absolute] position center
237 Moves the focused container to be centered on the workspace. If ab‐
238 solute is used, it is moved to the center of all outputs.
239
240 move position cursor|mouse|pointer
241 Moves the focused container to be centered on the cursor.
242
243 move [container|window] [to] mark <mark>
244 Moves the focused container to the specified mark.
245
246 move [--no-auto-back-and-forth] [container|window] [to] workspace [num‐
247 ber] <name>
248 Moves the focused container to the specified workspace. The string
249 number is optional and is used to match a workspace with the same
250 number, even if it has a different name.
251
252 move [container|window] [to] workspace prev|next|current
253 Moves the focused container to the previous, next or current
254 workspace on this output, or if no workspaces remain, the previous
255 or next output.
256
257 move [container|window] [to] workspace prev_on_output|next_on_output
258 Moves the focused container to the previous or next workspace on
259 this output, wrapping around if already at the first or last
260 workspace.
261
262 move [container|window] [to] workspace back_and_forth
263 Moves the focused container to previously focused workspace.
264
265 move [container|window] [to] output <name-or-id>|current
266 Moves the focused container to the specified output.
267
268 move [container|window] [to] output up|right|down|left
269 Moves the focused container to next output in the specified direc‐
270 tion.
271
272 move [container|window] [to] scratchpad
273 Moves the focused container to the scratchpad.
274
275 move workspace [to] output <name-or-id>|current
276 Moves the focused workspace to the specified output.
277
278 move workspace to [output] <name-or-id>|current
279 Moves the focused workspace to the specified output.
280
281 move workspace [to] output up|right|down|left
282 Moves the focused workspace to next output in the specified direc‐
283 tion.
284
285 move workspace to [output] up|right|down|left
286 Moves the focused workspace to next output in the specified direc‐
287 tion.
288
289 nop <comment>
290 A no operation command that can be used to override default behav‐
291 iour. The optional comment argument is ignored, but logged for de‐
292 bugging purposes.
293
294 reload
295 Reloads the sway config file and applies any changes. The config
296 file is located at path specified by the command line arguments
297 when started, otherwise according to the priority stated in
298 sway(1).
299
300 rename workspace [<old_name>] to <new_name>
301 Rename either <old_name> or the focused workspace to the <new_name>
302
303 resize shrink|grow width|height [<amount> [px|ppt]]
304 Resizes the currently focused container by amount, specified in
305 pixels or percentage points. If the units are omitted, floating
306 containers are resized in px and tiled containers by ppt. amount
307 will default to 10 if omitted.
308
309 resize set height <height> [px|ppt]
310 Sets the height of the container to height, specified in pixels or
311 percentage points. If the units are omitted, floating containers
312 are resized in px and tiled containers by ppt. If height is 0, the
313 container will not be resized.
314
315 resize set [width] <width> [px|ppt]
316 Sets the width of the container to width, specified in pixels or
317 percentage points. If the units are omitted, floating containers
318 are resized in px and tiled containers by ppt. If width is 0, the
319 container will not be resized.
320
321 resize set [width] <width> [px|ppt] [height] <height> [px|ppt]
322 Sets the width and height of the container to width and height,
323 specified in pixels or percentage points. If the units are omitted,
324 floating containers are resized in px and tiled containers by ppt.
325 If width or height is 0, the container will not be resized on that
326 axis.
327
328 scratchpad show
329 Shows a window from the scratchpad. Repeatedly using this command
330 will cycle through the windows in the scratchpad.
331
332 shortcuts_inhibitor enable|disable
333 Enables or disables the ability of clients to inhibit keyboard
334 shortcuts for a view. This is primarily useful for virtualization
335 and remote desktop software. It affects either the currently fo‐
336 cused view or a set of views selected by criteria. Subcommand dis‐
337 able additionally deactivates any active inhibitors for the given
338 view(s). Criteria are particularly useful with the for_window com‐
339 mand to configure a class of views differently from the per-seat
340 defaults established by the seat subcommand of the same name. See
341 sway-input(5) for more ways to affect inhibitors.
342
343 split vertical|v|horizontal|h|none|n|toggle|t
344 Splits the current container, vertically or horizontally. When none
345 is specified, the effect of a previous split is undone if the cur‐
346 rent container is the only child of a split parent. When toggle is
347 specified, the current container is split opposite to the parent
348 container's layout.
349
350 splith
351 Equivalent to split horizontal
352
353 splitv
354 Equivalent to split vertical
355
356 splitt
357 Equivalent to split toggle
358
359 sticky enable|disable|toggle
360 "Sticks" a floating window to the current output so that it shows
361 up on all workspaces.
362
363 swap container with id|con_id|mark <arg>
364 Swaps the position, geometry, and fullscreen status of two contain‐
365 ers. The first container can be selected either by criteria or fo‐
366 cus. The second container can be selected by id, con_id, or mark.
367 id can only be used with xwayland views. If the first container has
368 focus, it will retain focus unless it is moved to a different
369 workspace or the second container becomes fullscreen on the same
370 workspace as the first container. In either of those cases, the
371 second container will gain focus.
372
373 title_format <format>
374 Sets the format of window titles. The following placeholders may be
375 used:
376
377 %title - The title supplied by the window
378 %app_id - The wayland app ID (applicable to wayland
379 windows only)
380 %class - The X11 classname (applicable to xwayland
381 windows only)
382 %instance - The X11 instance (applicable to xwayland
383 windows only)
384 %shell - The protocol the window is using (typically
385 xwayland or
386 xdg_shell)
387
388 This command is typically used with for_window criteria. For exam‐
389 ple:
390
391 for_window [title="."] title_format "<b>%title</b> (%app_id)"
392
393 Note that markup requires pango to be enabled via the font command.
394
395 The default format is "%title".
396
397 The following commands may be used either in the configuration file or
398 at runtime.
399
400 assign <criteria> [→] [workspace] [number] <workspace>
401 Assigns views matching criteria (see CRITERIA for details) to
402 workspace. The → (U+2192) is optional and cosmetic. This command is
403 equivalent to:
404
405 for_window <criteria> move container to workspace <workspace>
406
407 assign <criteria> [→] output left|right|up|down|<name>
408 Assigns views matching criteria (see CRITERIA for details) to the
409 specified output. The → (U+2192) is optional and cosmetic. This
410 command is equivalent to:
411
412 for_window <criteria> move container to output <output>
413
414 bindsym [--whole-window] [--border] [--exclude-titlebar] [--release]
415 [--locked] [--to-code] [--input-device=<device>] [--no-warn] [--no-re‐
416 peat] [Group<1-4>+]<key combo> <command>
417 Binds key combo to execute the sway command command when pressed.
418 You may use XKB key names here (wev(1) is a good tool for discover‐
419 ing these). With the flag --release, the command is executed when
420 the key combo is released. If input-device is given, the binding
421 will only be executed for that input device and will be executed
422 instead of any binding that is generic to all devices. If a group
423 number is given, then the binding will only be available for that
424 group. By default, if you overwrite a binding, swaynag will give
425 you a warning. To silence this, use the --no-warn flag.
426
427 Unless the flag --locked is set, the command will not be run when a
428 screen locking program is active. If there is a matching binding
429 with and without --locked, the one with will be preferred when
430 locked and the one without will be preferred when unlocked. If
431 there are matching bindings and one has both --input-device and
432 --locked and the other has neither, the former will be preferred
433 even when unlocked.
434
435 Unless the flag --inhibited is set, the command will not be run
436 when a keyboard shortcuts inhibitor is active for the currently fo‐
437 cused window. Such inhibitors are usually requested by remote desk‐
438 top and virtualization software to enable the user to send keyboard
439 shortcuts to the remote or virtual session. The --inhibited flag
440 allows one to define bindings which will be exempt from pass-
441 through to such software. The same preference logic as for --locked
442 applies.
443
444 Unless the flag --no-repeat is set, the command will be run repeat‐
445 edly when the key is held, according to the repeat settings speci‐
446 fied in the input configuration.
447
448 Bindings to keysyms are layout-dependent. This can be changed with
449 the --to-code flag. In this case, the keysyms will be translated
450 into the corresponding keycodes in the first configured layout.
451
452 Mouse bindings operate on the container under the cursor instead of
453 the container that has focus. Mouse buttons can either be specified
454 in the form button[1-9] or by using the name of the event code (ex
455 BTN_LEFT or BTN_RIGHT). For the former option, the buttons will be
456 mapped to their values in X11 (1=left, 2=middle, 3=right, 4=scroll
457 up, 5=scroll down, 6=scroll left, 7=scroll right, 8=back, 9=for‐
458 ward). For the latter option, you can find the event names using
459 libinput debug-events.
460
461 The priority for matching bindings is as follows: input device,
462 group, and locked state.
463
464 --whole-window, --border, and --exclude-titlebar are mouse-only op‐
465 tions which affect the region in which the mouse bindings can be
466 triggered. By default, mouse bindings are only triggered when over
467 the title bar. With the --border option, the border of the window
468 will be included in this region. With the --whole-window option,
469 the cursor can be anywhere over a window including the title, bor‐
470 der, and content. --exclude-titlebar can be used in conjunction
471 with any other option to specify that the titlebar should be ex‐
472 cluded from the region of consideration.
473
474 If --whole-window is given, the command can be triggered when the
475 cursor is over an empty workspace. Using a mouse binding over a
476 layer surface's exclusive region is not currently possible.
477
478 Example:
479 # Execute firefox when alt, shift, and f are pressed together
480 bindsym Mod1+Shift+f exec firefox
481
482 bindcode [--whole-window] [--border] [--exclude-titlebar] [--re‐
483 lease] [--locked] [--input-device=<device>] [--no-warn]
484 [Group<1-4>+]<code> <command> is also available for binding with
485 key/button codes instead of key/button names.
486
487 bindswitch [--locked] [--no-warn] [--reload] <switch>:<state> <command>
488 Binds <switch> to execute the sway command command on state
489 changes. Supported switches are lid (laptop lid) and tablet (tablet
490 mode) switches. Valid values for state are on, off and toggle.
491 These switches are on when the device lid is shut and when tablet
492 mode is active respectively. toggle is also supported to run a com‐
493 mand both when the switch is toggled on or off.
494
495 Unless the flag --locked is set, the command will not be run when a
496 screen locking program is active. If there is a matching binding
497 with and without --locked, the one with will be preferred when
498 locked and the one without will be preferred when unlocked.
499
500 If the --reload flag is given, the binding will also be executed
501 when the config is reloaded. toggle bindings will not be executed
502 on reload. The --locked flag will operate as normal so if the con‐
503 fig is reloaded while locked and --locked is not given, the binding
504 will not be executed.
505
506 By default, if you overwrite a binding, swaynag will give you a
507 warning. To silence this, use the --no-warn flag.
508
509 Example:
510 # Show the virtual keyboard when tablet mode is entered.
511 bindswitch tablet:on busctl call --user sm.puri.OSK0 /sm/puri/OSK0 sm.puri.OSK0 SetVisible b true
512
513 # Log a message when the laptop lid is opened or closed.
514 bindswitch lid:toggle exec echo "Lid moved"
515
516 bindgesture [--exact] [--input-device=<device>] [--no-warn] <ges‐
517 ture>[:<fingers>][:directions] <command>
518 Binds gesture to execute the sway command command when detected.
519 Currently supports the hold, pinch or swipe gesture. Optionally can
520 be limited to bind to a certain number of fingers or, for a pinch
521 or swipe gesture, to certain directions.
522
523 ┌──────┬─────────┬─────────────────────────────────────────────────────┐
524 │type │ fingers │ direction │
525 ├──────┼─────────┼─────────────────────────────────────────────────────┤
526 │hold │ 1 - 5 │ none │
527 ├──────┼─────────┼─────────────────────────────────────────────────────┤
528 │swipe │ 3 - 5 │ up, down, left, right │
529 ├──────┼─────────┼─────────────────────────────────────────────────────┤
530 │pinch │ 2 - 5 │ all above + inward, outward, clockwise, counter‐ │
531 │ │ │ clockwise │
532 └──────┴─────────┴─────────────────────────────────────────────────────┘
533 The fingers can be limited to any sensible number or left empty to
534 accept any finger counts. Valid directions are up, down, left and
535 right, as well as inward, outward, clockwise, counterclockwise for
536 the pinch gesture. Multiple directions can be combined by a plus.
537
538 If a input-device is given, the binding will only be executed for
539 that input device and will be executed instead of any binding that
540 is generic to all devices. By default, if you overwrite a binding,
541 swaynag will give you a warning. To silence this, use the --no-warn
542 flag.
543
544 The --exact flag can be used to ensure a binding only matches when
545 exactly all specified directions are matched and nothing more. If
546 there is matching binding with --exact, it will be preferred.
547
548 The priority for matching bindings is as follows: input device,
549 then exact matches followed by matches with the highest number of
550 matching directions.
551
552 Gestures executed while the pointer is above a bar are not handled
553 by sway. See the respective documentation, e.g. bindgesture in
554 sway-bar(5).
555
556 Example:
557 # Allow switching between workspaces with left and right swipes
558 bindgesture swipe:right workspace prev
559 bindgesture swipe:left workspace next
560
561 # Allow container movements by pinching them
562 bindgesture pinch:inward+up move up
563 bindgesture pinch:inward+down move down
564 bindgesture pinch:inward+left move left
565 bindgesture pinch:inward+right move right
566
567
568 client.background <color>
569 This command is ignored and is only present for i3 compatibility.
570
571 client.<class> <border> <background> <text> [<indicator> [<child_bor‐
572 der>]]
573 Configures the color of window borders and title bars. The first
574 three colors are required. When omitted indicator will use a sane
575 default and child_border will use the color set for background.
576 Colors may be specified in hex, either as #RRGGBB or #RRGGBBAA.
577
578 The available classes are:
579
580 client.focused
581 The window that has focus.
582
583 client.focused_inactive
584 The most recently focused view within a container which is not
585 focused.
586
587 client.focused_tab_title
588 A view that has focused descendant container. Tab or stack con‐
589 tainer title that is the parent of the focused container but is
590 not directly focused. Defaults to focused_inactive if not spec‐
591 ified and does not use the indicator and child_border colors.
592
593 client.placeholder
594 Ignored (present for i3 compatibility).
595
596 client.unfocused
597 A view that does not have focus.
598
599 client.urgent
600 A view with an urgency hint. Note: Native Wayland windows do
601 not support urgency. Urgency only works for Xwayland windows.
602
603 The meaning of each color is:
604
605 border
606 The border around the title bar.
607
608 background
609 The background of the title bar.
610
611 text
612 The text color of the title bar.
613
614 indicator
615 The color used to indicate where a new view will open. In a
616 tiled container, this would paint the right border of the cur‐
617 rent view if a new view would be opened to the right.
618
619 child_border
620 The border around the view itself.
621
622 The default colors are:
623
624 ┌──────────────┬─────────┬────────────┬─────────┬───────────┬────────────┐
625 │ class │ border │ background │ text │ indicator │ child_bor‐ │
626 │ │ │ │ │ │ der │
627 ├──────────────┼─────────┼────────────┼─────────┼───────────┼────────────┤
628 │background │ n/a │ #ffffff │ n/a │ n/a │ n/a │
629 ├──────────────┼─────────┼────────────┼─────────┼───────────┼────────────┤
630 │focused │ #4c7899 │ #285577 │ #ffffff │ #2e9ef4 │ #285577 │
631 ├──────────────┼─────────┼────────────┼─────────┼───────────┼────────────┤
632 │focused_in‐ │ #333333 │ #5f676a │ #ffffff │ #484e50 │ #5f676a │
633 │active │ │ │ │ │ │
634 ├──────────────┼─────────┼────────────┼─────────┼───────────┼────────────┤
635 │fo‐ │ #333333 │ #5f676a │ #ffffff │ n/a │ n/a │
636 │cused_tab_ti‐ │ │ │ │ │ │
637 │tle │ │ │ │ │ │
638 ├──────────────┼─────────┼────────────┼─────────┼───────────┼────────────┤
639 │unfocused │ #333333 │ #222222 │ #888888 │ #292d2e │ #222222 │
640 ├──────────────┼─────────┼────────────┼─────────┼───────────┼────────────┤
641 │urgent │ #2f343a │ #900000 │ #ffffff │ #900000 │ #900000 │
642 ├──────────────┼─────────┼────────────┼─────────┼───────────┼────────────┤
643 │placeholder │ #000000 │ #0c0c0c │ #ffffff │ #000000 │ #0c0c0c │
644 └──────────────┴─────────┴────────────┴─────────┴───────────┴────────────┘
645
646 default_border normal|none|pixel [<n>]
647 Set default border style for new tiled windows.
648
649 default_floating_border normal|none|pixel [<n>]
650 Set default border style for new floating windows. This only ap‐
651 plies to windows that are spawned in floating mode, not windows
652 that become floating afterwards.
653
654 exec <shell command>
655 Executes shell command with sh.
656
657 exec_always <shell command>
658 Like exec, but the shell command will be executed again after
659 reload.
660
661 floating_maximum_size <width> x <height>
662 Specifies the maximum size of floating windows. -1 x -1 removes the
663 upper limit. The default is 0 x 0, which will use the width and
664 height of the entire output layout as the maximums
665
666 floating_minimum_size <width> x <height>
667 Specifies the minimum size of floating windows. The default is 75 x
668 50.
669
670 floating_modifier <modifier> [normal|inverse]
671 When the modifier key is held down, you may hold left click to move
672 windows, and right click to resize them. Setting modifier to none
673 disables this feature. If inverse is specified, left click is used
674 for resizing and right click for moving.
675
676 focus_follows_mouse yes|no|always
677 If set to yes, moving your mouse over a window will focus that win‐
678 dow. If set to always, the window under the cursor will always be
679 focused, even after switching between workspaces.
680
681 focus_on_window_activation smart|urgent|focus|none
682 This option determines what to do when a client requests window ac‐
683 tivation. If set to urgent, the urgent state will be set for that
684 window. If set to focus, the window will become focused. If set to
685 smart, the window will become focused only if it is already visi‐
686 ble, otherwise the urgent state will be set. Default is urgent.
687
688 focus_wrapping yes|no|force|workspace
689 This option determines what to do when attempting to focus over the
690 edge of a container. If set to no, the focused container will re‐
691 tain focus, if there are no other containers in the direction. If
692 set to yes, focus will be wrapped to the opposite edge of the con‐
693 tainer, if there are no other containers in the direction. If set
694 to force, focus will be wrapped to the opposite edge of the con‐
695 tainer, even if there are other containers in the direction. If set
696 to workspace, focus will wrap like in the yes case and additionally
697 wrap when moving outside of workspaces boundaries. Default is yes.
698
699 font [pango:]<font>
700 Sets font to use for the title bars. To enable support for pango
701 markup, preface the font name with pango:. For example, monospace
702 10 is the default font. To enable support for pango markup,
703 pango:monospace 10 should be used instead. Regardless of whether
704 pango markup is enabled, font should be specified as a pango font
705 description. For more information on pango font descriptions, see
706 https://docs.gtk.org/Pango/type_func.FontDescrip‐
707 tion.from_string.html#description
708
709 force_display_urgency_hint <timeout> [ms]
710 If an application on another workspace sets an urgency hint,
711 switching to this workspace may lead to immediate focus of the ap‐
712 plication, which also means the window decoration color would be
713 immediately reset to client.focused. This may make it unnecessarily
714 hard to tell which window originally raised the event. This option
715 allows one to set a timeout in ms to delay the urgency hint reset.
716
717 titlebar_border_thickness <thickness>
718 Thickness of the titlebar border in pixels
719
720 titlebar_padding <horizontal> [<vertical>]
721 Padding of the text in the titlebar. horizontal value affects hori‐
722 zontal padding of the text while vertical value affects vertical
723 padding (space above and below text). Padding includes titlebar
724 borders so their value should be greater than titlebar_bor‐
725 der_thickness. If vertical value is not specified it is set to the
726 horizontal value.
727
728 for_window <criteria> <command>
729 Whenever a window that matches criteria appears, run list of com‐
730 mands. See CRITERIA for more details.
731
732 gaps inner|outer|horizontal|vertical|top|right|bottom|left <amount>
733 Sets default amount pixels of inner or outer gap, where the inner
734 affects spacing around each view and outer affects the spacing
735 around each workspace. Outer gaps are in addition to inner gaps. To
736 reduce or remove outer gaps, outer gaps can be set to a negative
737 value. outer gaps can also be specified per side with top, right,
738 bottom, and left or per direction with horizontal and vertical.
739
740 This affects new workspaces only, and is used when the workspace
741 doesn't have its own gaps settings (see: workspace <ws> gaps ...).
742
743 hide_edge_borders [--i3] none|vertical|horizon‐
744 tal|both|smart|smart_no_gaps
745 Hides window borders adjacent to the screen edges. Default is none.
746 The --i3 option enables i3-compatible behavior to hide the title
747 bar on tabbed and stacked containers with one child. The
748 smart|smart_no_gaps options are equivalent to setting smart_borders
749 smart|no_gaps and hide_edge_borders none.
750
751 input <input_device> <input-subcommands...>
752 For details on input subcommands, see sway-input(5).
753
754 * may be used in lieu of a specific device name to configure all
755 input devices. A list of input device names may be obtained via
756 swaymsg -t get_inputs.
757
758 seat <seat> <seat-subcommands...>
759 For details on seat subcommands, see sway-input(5).
760
761 kill
762 Kills (closes) the currently focused container and all of its chil‐
763 dren.
764
765 smart_borders on|no_gaps|off
766 If smart_borders are on, borders will only be enabled if the
767 workspace has more than one visible child. If smart_borders is set
768 to no_gaps, borders will only be enabled if the workspace has more
769 than one visible child and gaps equal to zero.
770
771 smart_gaps on|off|toggle|inverse_outer
772 If smart_gaps are on gaps will only be enabled if a workspace has
773 more than one child. If smart_gaps are inverse_outer outer gaps
774 will only be enabled if a workspace has exactly one child.
775
776 mark --add|--replace [--toggle] <identifier>
777 Marks are arbitrary labels that can be used to identify certain
778 windows and then jump to them at a later time. Each identifier can
779 only be set on a single window at a time since they act as a unique
780 identifier. By default, mark sets identifier as the only mark on a
781 window. --add will instead add identifier to the list of current
782 marks for that window. If --toggle is specified mark will remove
783 identifier if it is already marked.
784
785 mode <mode>
786 Switches to the specified mode. The default mode is default.
787
788 mode [--pango_markup] <mode> <mode-subcommands...>
789 The only valid mode-subcommands... are bindsym, bindcode,
790 bindswitch, and set. If --pango_markup is given, then mode will be
791 interpreted as pango markup.
792
793 mouse_warping output|container|none
794 If output is specified, the mouse will be moved to new outputs as
795 you move focus between them. If container is specified, the mouse
796 will be moved to the middle of the container on switch. Default is
797 output.
798
799 no_focus <criteria>
800 Prevents windows matching <criteria> from being focused automati‐
801 cally when they're created. This has no effect on the first window
802 in a workspace.
803
804 output <output_name> <output-subcommands...>
805 For details on output subcommands, see sway-output(5).
806
807 * may be used in lieu of a specific output name to configure all
808 outputs. A list of output names may be obtained via swaymsg -t
809 get_outputs.
810
811 popup_during_fullscreen smart|ignore|leave_fullscreen
812 Determines what to do when a fullscreen view opens a dialog. If
813 smart (the default), the dialog will be displayed. If ignore, the
814 dialog will not be rendered. If leave_fullscreen, the view will
815 exit fullscreen mode and the dialog will be rendered.
816
817 set $<name> <value>
818 Sets variable $name to value. You can use the new variable in the
819 arguments of future commands. When the variable is used, it can be
820 escaped with an additional $ (ie $$name) to have the replacement
821 happen at run time instead of when reading the config. However, it
822 does not always make sense for the variable to be replaced at run
823 time since some arguments do need to be known at config time.
824
825 show_marks yes|no
826 If show_marks is yes, marks will be displayed in the window bor‐
827 ders. Any mark that starts with an underscore will not be drawn
828 even if show_marks is yes. The default is yes.
829
830 opacity [set|plus|minus] <value>
831 Adjusts the opacity of the window between 0 (completely transpar‐
832 ent) and 1 (completely opaque). If the operation is omitted, set
833 will be used.
834
835 tiling_drag enable|disable|toggle
836 Sets whether or not tiling containers can be dragged with the
837 mouse. If enabled (default), the floating_mod can be used to drag
838 tiling, as well as floating, containers. Using the left mouse but‐
839 ton on title bars without the floating_mod will also allow the con‐
840 tainer to be dragged. toggle should not be used in the config file.
841
842 tiling_drag_threshold <threshold>
843 Sets the threshold that must be exceeded for a container to be
844 dragged by its titlebar. This has no effect if floating_mod is used
845 or if tiling_drag is set to disable. Once the threshold has been
846 exceeded once, the drag starts and the cursor can come back inside
847 the threshold without stopping the drag. threshold is multiplied
848 by the scale of the output that the cursor on. The default is 9.
849
850 title_align left|center|right
851 Sets the title alignment. If right is selected and show_marks is
852 set to yes, the marks will be shown on the left side instead of the
853 right side.
854
855 unbindswitch <switch>:<state>
856 Removes a binding for when <switch> changes to <state>.
857
858 unbindgesture [--exact] [--input-device=<device>] <gesture>[:<fin‐
859 gers>][:directions]
860 Removes a binding for the specified gesture, fingers and directions
861 combination.
862
863 unbindsym [--whole-window] [--border] [--exclude-titlebar] [--release]
864 [--locked] [--to-code] [--input-device=<device>] <key combo>
865 Removes the binding for key combo that was previously bound with
866 the given flags. If input-device is given, only the binding for
867 that input device will be unbound.
868
869 unbindcode [--whole-window] [--border] [--exclude-titlebar] [--re‐
870 lease] [--locked] [--input-device=<device>] <code> is also avail‐
871 able for unbinding with key/button codes instead of key/button
872 names.
873
874 unmark [<identifier>]
875 unmark will remove identifier from the list of current marks on a
876 window. If identifier is omitted, all marks are removed.
877
878 urgent enable|disable|allow|deny
879 Using enable or disable manually sets or unsets the window's urgent
880 state. Using allow or deny controls the window's ability to set it‐
881 self as urgent. By default, windows are allowed to set their own
882 urgency.
883
884 workspace [--no-auto-back-and-forth] [number] <[num:]name>
885 Switches to the specified workspace. The num: portion of the name
886 is optional and will be used for ordering. If num: is not given and
887 name is a number, then it will be also be used for ordering.
888
889 If the no-auto-back-and-forth option is given, then this command
890 will not perform a back-and-forth operation when the workspace is
891 already focused and workspace_auto_back_and_forth is enabled.
892
893 If the number keyword is specified and a workspace with the number
894 already exists, then the workspace with the number will be used. If
895 a workspace with the number does not exist, a new workspace will be
896 created with the name name.
897
898 workspace prev|next
899 Switches to the next workspace on the current output or on the next
900 output if currently on the last workspace.
901
902 workspace prev_on_output|next_on_output
903 Switches to the next workspace on the current output.
904
905 workspace back_and_forth
906 Switches to the previously focused workspace.
907
908 workspace <name> gaps inner|outer|horizontal|vertical|top|right|bot‐
909 tom|left <amount>
910 Specifies that workspace name should have the given gaps settings
911 when it is created.
912
913 This command does not affect existing workspaces. To alter the gaps
914 of an existing workspace, use the gaps command.
915
916 workspace <name> output <outputs...>
917 Specifies that workspace name should be shown on the specified out‐
918 puts. Multiple outputs can be listed and the first available will
919 be used. If the workspace gets placed on an output further down the
920 list and an output that is higher on the list becomes available,
921 the workspace will be moved to the higher priority output.
922
923 This command does not affect existing workspaces. To move an exist‐
924 ing workspace, use the move command in combination with the
925 workspace criteria (non-empty workspaces only) or workspace command
926 (to switch to the workspace before moving).
927
928 workspace_auto_back_and_forth yes|no
929 When yes, repeating a workspace switch command will switch back to
930 the prior workspace. For example, if you are currently on workspace
931 1, switch to workspace 2, then invoke the workspace 2 command
932 again, you will be returned to workspace 1. Default is no.
933
935 A criteria is a string in the form of, for example:
936
937 [class="[Rr]egex.*" title="some title"]
938
939 The string contains one or more (space separated) attribute/value
940 pairs. They are used by some commands to choose which views to execute
941 actions on. All attributes must match for the criteria to match. Crite‐
942 ria is retained across commands separated by a ,, but will be reset
943 (and allow for new criteria, if desired) for commands separated by a ;.
944
945 Criteria may be used with either the for_window or assign commands to
946 specify operations to perform on new views. A criteria may also be used
947 to perform specific commands (ones that normally act upon one window)
948 on all views that match that criteria. For example:
949
950 Focus on a window with the mark "IRC":
951
952 [con_mark="IRC"] focus
953
954 Kill all windows with the title "Emacs":
955
956 [class="Emacs"] kill
957
958 You may like to use swaymsg -t get_tree for finding the values of these
959 properties in practice for your applications.
960
961 The following attributes may be matched with:
962
963 app_id
964 Compare value against the app id. Can be a regular expression. If
965 value is __focused__, then the app id must be the same as that of
966 the currently focused window. app_id are specific to Wayland appli‐
967 cations.
968
969 class
970 Compare value against the window class. Can be a regular expres‐
971 sion. If value is __focused__, then the window class must be the
972 same as that of the currently focused window. class are specific to
973 X11 applications and require XWayland.
974
975 con_id
976 Compare against the internal container ID, which you can find via
977 IPC. If value is __focused__, then the id must be the same as that
978 of the currently focused window.
979
980 con_mark
981 Compare against the window marks. Can be a regular expression.
982
983 floating
984 Matches floating windows.
985
986 id
987 Compare value against the X11 window ID. Must be numeric. id is
988 specific to X11 applications and requires XWayland.
989
990 instance
991 Compare value against the window instance. Can be a regular expres‐
992 sion. If value is __focused__, then the window instance must be the
993 same as that of the currently focused window. instance is specific
994 to X11 applications and requires XWayland.
995
996 pid
997 Compare value against the window's process ID. Must be numeric.
998
999 shell
1000 Compare value against the window shell, such as "xdg_shell" or
1001 "xwayland". Can be a regular expression. If value is __focused__,
1002 then the shell must be the same as that of the currently focused
1003 window.
1004
1005 tiling
1006 Matches tiling windows.
1007
1008 title
1009 Compare against the window title. Can be a regular expression. If
1010 value is __focused__, then the window title must be the same as
1011 that of the currently focused window.
1012
1013 urgent
1014 Compares the urgent state of the window. Can be first, last, lat‐
1015 est, newest, oldest or recent.
1016
1017 window_role
1018 Compare against the window role (WM_WINDOW_ROLE). Can be a regular
1019 expression. If value is __focused__, then the window role must be
1020 the same as that of the currently focused window. window_role is
1021 specific to X11 applications and requires XWayland.
1022
1023 window_type
1024 Compare against the window type (_NET_WM_WINDOW_TYPE). Possible
1025 values are normal, dialog, utility, toolbar, splash, menu, drop‐
1026 down_menu, popup_menu, tooltip and notification. window_type is
1027 specific to X11 applications and requires XWayland.
1028
1029 workspace
1030 Compare against the workspace name for this view. Can be a regular
1031 expression. If the value is __focused__, then all the views on the
1032 currently focused workspace matches.
1033
1035 sway(1) sway-input(5) sway-output(5) sway-bar(5) sway-ipc(7)
1036
1037
1038
1039 2023-09-14 sway(5)