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
| Key | Meaning |
|---|---|
theme | the card's color: "auto" (follow the desktop's dark/light mode), "dark", or "light" |
font | a font family name; absent, the COSMIC interface font |
font_size | card text size, 8–24 logical px, default 12 |
rows | windows the card keeps in view, 3–10, default 8; … rows ride on top |
layout | "vertical" (default) or "horizontal", the band of icon-only tiles |
columns | the band's tiles: "auto" (two-thirds of the output) or 3–12 |
width / min-width | width floor on either card: "auto", "1%"–"100%", or a pixel count |
grouping | true groups the list by app (see Grouping) |
show_workspace | true labels the card with the workspace you pressed on |
[[workspace]] | one name or index plus optional isolated (see below) |
Referencing workspaces
- An entry takes
nameorindex, never both.namematches first;index(1-based, COSMIC's order) is the fallback and covers unnamed workspaces. - A
namerule follows the name, not the workspace: renamecodetodevand the rule stops matching it on the next press. Prefernamefor workspaces you have named;indexre-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).