docs/wiki/Configuration:-Recent-Windows.md
<sup>Since: 25.11</sup>
In this section you can configure the recent windows switcher (Alt-Tab).
Here is an outline of the available settings and their default values:
recent-windows {
// off
debounce-ms 750
open-delay-ms 150
highlight {
active-color "#999999ff"
urgent-color "#ff9999ff"
padding 30
corner-radius 0
}
previews {
max-height 480
max-scale 0.5
}
binds {
Alt+Tab { next-window; }
Alt+Shift+Tab { previous-window; }
Alt+grave { next-window filter="app-id"; }
Alt+Shift+grave { previous-window filter="app-id"; }
Mod+Tab { next-window; }
Mod+Shift+Tab { previous-window; }
Mod+grave { next-window filter="app-id"; }
Mod+Shift+grave { previous-window filter="app-id"; }
}
}
off disables the recent windows switcher altogether.
debounce-msDelay, in milliseconds, between the window receiving focus and getting "committed" to the recent windows list.
When you want to focus some window, you might end up focusing some unrelated windows on the way:
focus-follows-mouse, the windows you happen to cross with the mouse pointer on the way to the target window.The debounce delay prevents those intermediate windows from polluting the recent windows list.
Note that some actions, like keyboard input into the target window, will skip this delay and commit the window to the list immediately. This way, the recent windows list stays responsive while not getting polluted too much with unintended windows.
If you want windows to appear in recent windows right away, including intermediate windows, you can reduce the delay or set it to zero:
recent-windows {
// Commit windows to the recent windows list as soon as they're focused,
// with no debounce delay.
debounce-ms 0
}
open-delay-msDelay, in milliseconds, between pressing the Alt-Tab bind and the recent windows switcher visually appearing on screen.
The switcher is delayed by default so that quickly tapping Alt-Tab to switch windows wouldn't cause annoying fullscreen visual changes.
recent-windows {
// Make the switcher appear instantly.
open-delay-ms 0
}
highlightControls the highlight behind the focused window preview in the recent windows switcher.
active-color: normal color of the focused window highlight.urgent-color: color of an urgent focused window highlight, also visible in a darker shade on unfocused windows.padding: padding of the highlight around the window preview, in logical pixels.corner-radius: corner radius of the highlight.recent-windows {
// Round the corners on the highlight.
highlight {
corner-radius 14
}
}
previewsControls the window previews in the switcher.
max-scale: maximum scale of the window previews.
Windows cannot be scaled bigger than this value.max-height: maximum height of the window previews.
Further limits the size of the previews in order to occupy less space on large monitors.On smaller monitors, the previews will be primarily limited by max-scale, and on larger monitors they will be primarily limited by max-height.
The max-scale limit is imposed twice: on the final window scale, and on the window height which cannot exceed monitor height × max scale.
recent-windows {
// Make the previews smaller to fit more on screen.
previews {
max-height 320
}
}
recent-windows {
// Make the previews larger to see the window contents.
previews {
max-height 1080
max-scale 0.75
}
}
bindsConfigure binds that open and navigate the recent windows switcher.
The defaults are <kbd>Alt</kbd><kbd>Tab</kbd> / <kbd>Mod</kbd><kbd>Tab</kbd> to switch across all windows, and <kbd>Alt</kbd><kbd>`</kbd> / <kbd>Mod</kbd><kbd>`</kbd> to switch between windows of the current application. Adding <kbd>Shift</kbd> will switch windows backwards.
Adding the recent windows binds {} section to your config removes all default binds.
You can copy the ones you need from the summary at the top of this wiki page.
recent-windows {
// Even an empty binds {} section will remove all default binds.
binds {
}
}
The available actions are next-window and previous-window.
They can optionally have the following properties:
filter="app-id": filters the switcher to the windows of the currently selected application, as determined by the Wayland app ID.scope="all", scope="output", scope="workspace": sets the pre-selected scope when this bind is used to open the recent windows switcher.recent-windows {
// Pre-select the "Output" scope when switching windows.
binds {
Mod+Tab { next-window scope="output"; }
Mod+Shift+Tab { previous-window scope="output"; }
Mod+grave { next-window scope="output" filter="app-id"; }
Mod+Shift+grave { previous-window scope="output" filter="app-id"; }
}
}
The recent windows binds have lower precedence than the normal binds, meaning that if you have <kbd>Alt</kbd><kbd>Tab</kbd> bound to something else in the normal binds, the recent-windows bind won't work.
In this case, you can remove the conflicting normal bind.
All binds in this section must have a modifier key like <kbd>Alt</kbd> or <kbd>Mod</kbd> because the recent windows switcher remains open only while you hold any modifier key.
When the switcher is open, some hardcoded binds are available:
Additionally, certain regular binds will automatically work in the switcher:
The way this works is by finding all regular binds corresponding to these actions and taking just the trigger key without modifiers.
For example, if you have <kbd>Mod</kbd><kbd>Shift</kbd><kbd>C</kbd> bound to close-window, in the window switcher pressing <kbd>C</kbd> on its own will close the window.
This way we don't need to hardcode things like HJKL directional movements. If you have, say, Colemak-DH MNEI binds instead, they will work for you in the window switcher (as long as they don't conflict with the hardcoded ones).