Airlock

Settings

By default, Alt+Tab reaches only the current workspace's windows. A config file can opt individual workspaces out: there the switcher lists every non-minimized window across all workspaces, most-recently-used first. Airlock reads the file; you write it — it never creates, renames, or rearranges workspaces.

The full-fidelity reference lives in docs/settings.md.

The config file

~/.config/airlock/config.toml

Under an absolute $XDG_CONFIG_HOME when one is set, else under $HOME/.config. No file, or an empty one, means every workspace isolated. The daemon re-reads the file on each gesture: an edit applies on the next Alt+Tab, with no restart or re-login.

A full config file

# ~/.config/airlock/config.toml: Airlock reads, you edit.
# Workspaces without an entry keep the default: isolated.

theme = "auto"         # match the desktop's dark/light mode (the default)
# font = "Fira Sans"   # absent (the default): the COSMIC interface font
# font_size = 12       # card text size, logical px: 8–24 (the default: 12)
rows = 8               # windows the card keeps in view (the default)
layout = "vertical"    # the tall card; "horizontal" lays it out as tiles
# columns = "auto"     # the band's tile budget; or a whole number 3–12
# width = "auto"       # the card's width floor; "100%" fills the screen, or a pixel count
# min-width = "auto"   # the card's never-below width; same values as width
grouping = false       # the flat list (the default); true groups it by app
# show_workspace = false # label the card with the workspace you pressed on (the default: false)

[[workspace]]
name = "code"          # matches a workspace COSMIC reports as named "code"
isolated = true        # the default; shown for completeness

[[workspace]]
index = 2              # the 2nd workspace in COSMIC's order, named or not
isolated = false       # Alt+Tab here cycles all windows, MRU

Keys

KeyMeaning
themethe card's color: "auto" (follow the desktop's dark/light mode), "dark", or "light"
fonta font family name; absent, the COSMIC interface font
font_sizecard text size, 8–24 logical px, default 12
rowswindows the card keeps in view, 3–10, default 8; … rows ride on top
layout"vertical" (default) or "horizontal", the band of icon-only tiles
columnsthe band's tiles: "auto" (two-thirds of the output) or 3–12
width / min-widthwidth floor on either card: "auto", "1%"–"100%", or a pixel count
groupingtrue groups the list by app (see Grouping)
show_workspacetrue labels the card with the workspace you pressed on
[[workspace]]one name or index plus optional isolated (see below)

Referencing workspaces

  • An entry takes name or index, never both. name matches first; index (1-based, COSMIC's order) is the fallback and covers unnamed workspaces.
  • A name rule follows the name, not the workspace: rename code to dev and the rule stops matching it on the next press. Prefer name for workspaces you have named; index re-points when the grid changes.
  • Duplicates are allowed; the last entry in file order wins. No match at all: the workspace stays isolated — an entry can only opt out, never opt others in.

Grouping

grouping = true re-partitions the same window list into a per-app tree: one entry per application, its windows nested beneath. Groups start collapsed; expanding one with → is remembered for as long as the daemon runs. Committing an entry activates that app's most recently used window.

  • Tab, the arrows, and the wheel walk visible rows, wrapping; a collapsed group contributes only its entry.
  • → expands and enters; ← returns to the entry, or collapses an expanded one.
  • Ctrl+N activates the Nth app entry's window. ` (the key above Tab) toggles the selected app's group from its entry and cycles its windows from inside it.

Errors and limits

A bad config never breaks switching:

  • A bad value is named in a diagnostic (line/column, or the 1-based entry number) and the last-good settings apply; fixing the file re-applies it.
  • Unknown keys are ignored.
  • Files over 1 MiB are ignored entirely (defaults apply).