Skip to content
Alex edited this page Mar 10, 2022 · 58 revisions

Mode

The mode module displays the current binding mode of sway.

Config

Addressed by sway/mode

option typeof default description
format string {} The format, how information should be displayed. On {} data gets inserted.
rotate integer Positive value to rotate the text label.
max-length integer The maximum length in character the module should display.
on-click string Command to execute when clicked on the module.
on-click-middle string Command to execute when you middle clicked on the module using mousewheel.
on-click-right string Command to execute when you right clicked on the module.
on-scroll-up string Command to execute when scrolling up on the module.
on-scroll-down string Command to execute when scrolling down on the module.
smooth-scrolling-threshold double Threshold to be used when scrolling.
tooltip bool true Option to enable tooltip on hover.

Example:

"sway/mode": {
    "format": " {}",
    "max-length": 50
}

Style

  • #mode

Window

The window module displays the title of the currently focused window in sway.

Config

Addressed by sway/window

option typeof default description
format string {} The format, how information should be displayed. On {} data gets inserted.
rotate integer Positive value to rotate the text label.
max-length integer The maximum length in character the module should display.
on-click string Command to execute when clicked on the module.
on-click-right string Command to execute when you right clicked on the module.
on-scroll-up string Command to execute when scrolling up on the module.
on-scroll-down string Command to execute when scrolling down on the module.
smooth-scrolling-threshold double Threshold to be used when scrolling.
tooltip bool true Option to disable tooltip on hover.
rewrite object {} Rules to rewrite window title. See rewrite rules.
all-outputs bool false If set to false, displays only title of the window on the same output as bar
icon bool false Option to disable application icon.

Rewrite Rules:

rewrite is an object where keys are regular expressions and values are rewrite rules if the expression matches. Rules may contain references to captures of the expression.

Regular expression and replacement follow ECMAScript rules (formal definition).

An expression must match fully to trigger the replacement; if no expression matches, the title is left unchanged.

Invalid expressions (e.g., mismatched parentheses) are ignored.

Example:

"sway/window": {
    "format": "{}",
    "max-length": 50,
    "rewrite": {
       "(.*) - Mozilla Firefox": "🌎 $1",
       "(.*) - vim": " $1",
       "(.*) - zsh": " [$1]"
    }
}

Style

  • #window
  • window#waybar.empty When no windows is in the workspace
  • window#waybar.solo When one window is in the workspace
  • window#waybar.<app_id> Where app_id is the app_id or instance name like (chromium) of the only window in the workspace

Workspaces

The workspaces module displays the currently used workspaces in sway.

Config

Addressed by sway/workspaces

option typeof default description
all-outputs bool false If set to false, workspaces will only be shown on the output they are on.
If set to true all workspaces will be shown on every output.
format string {name} The format, how information should be displayed.
format-icons array Based on the workspace name and state, the corresponding icon gets selected.
See Icons
disable-scroll bool false If set to false, you can scroll to cycle through workspaces.
If set to true this behaviour is disabled.
disable-click bool false If set to false, you can click to change workspace.
If set to true this behaviour is disabled.
smooth-scrolling-threshold double Threshold to be used when scrolling.
disable-scroll-wraparound bool false If set to false, scrolling on the workspace indicator will wrap around to the first workspace when reading the end, and vice versa.
If set to true this behavior is disabled.
enable-bar-scroll bool false If set to false, you can't scroll to cycle throughout workspaces from the entire bar.
If set to true this behaviour is enabled.
disable-markup bool false If set to true, button label will escape pango markup.
current-only bool false If set to true. Only focused workspaces will be shown.
persistent_workspaces json (see below) empty Lists workspaces that should always be shown, even when non existant
numeric-first bool false If set to true, workspaces with a name that starts with a number are displayed in front of workspaces that do not start with a number.
disable-auto-back-and-forth bool false Whether to disable workspace_auto_back_and_forth when clicking on workspaces. If this is set to true, clicking on a workspace you are already on won't do anything, even if workspace_auto_back_and_forth is enabled in the Sway configuration.

Format replacements:

string replacement
{value} Name of the workspace, as defined by sway
{name} Number stripped from workspace value at colon e.g. "13:NAME"
{icon} Icon, as defined in format-icons.
{index} Index of the workspace

Icons:

Additional to workspace name matching, the following format-icons can be set.

port name note
default Will be shown, when no string matches is found.
urgent Will be shown, when workspace is flagged as urgent
focused Will be shown, when workspace is focused
persistent Will be shown, when workspace is persistent one.

Persistent workspaces:

each entry of persistent_workspace names a workspace that should always be shown. Associated with that value is a list of outputs indicating where the workspace should be shown, an empty list denoting all outputs

"sway/workspaces": {
    "persistent_workspaces": {
        "3": [], // Always show a workspace with name '3', on all outputs if it does not exists
        "4": ["eDP-1"], // Always show a workspace with name '4', on output 'eDP-1' if it does not exists
        "5": ["eDP-1", "DP-2"] // Always show a workspace with name '5', on outputs 'eDP-1' and 'DP-2' if it does not exists
    }
}

n.b.: the list of outputs can be obtained from command line using swaymsg -t get_outputs

Example:

"sway/workspaces": {
    "disable-scroll": true,
    "all-outputs": true,
    "format": "{name}: {icon}",
    "format-icons": {
        "1": "",
        "2": "",
        "3": "",
        "4": "",
        "5": "",
        "urgent": "",
        "focused": "",
        "default": ""
    }
}

Style

  • #workspaces button
  • #workspaces button.visible
  • #workspaces button.focused
  • #workspaces button.urgent
  • #workspaces button.persistent
  • #workspaces button.current_output
  • #workspaces button#sway-workspace-${name}

Language

sway/language

Clone this wiki locally