Appearance and themes

Everything on this page is on the Appearance and Fonts and Colors pages of the Settings dialog, and every one of them can be watched live with Show the real switcher while I change these settings.

Size and position

The Appearance page

Setting
Width (%)The switcher's width, as a percentage of its monitor's width.
Height (%)The most of the monitor's height it may use. It is only ever as tall as the rows it actually has, so this is a ceiling rather than a size. Once the rows would overflow it, a scrollbar appears instead.
Show it onWhich monitor: Cursor (wherever the pointer is), Active window (the monitor holding the window you are in), or Primary.
Transparency0-255. 255 is opaque; the default 222 is very slightly see-through.
Rounded cornersRadius 8, matching Windows 11.
Switcher viewReport, one row per window, or Icons, a grid of large icons with one caption. See the icons view.
Icons view width (%)The width of the Icons view, as its own number — a row per window needs room for long titles and a grid of small cells does not, so one percentage could not be right for both.
Show a live preview of the selected windowA live picture of the selected window. See the live preview.
Where the preview goes[General] WindowPreviewPlacement. Auto is beside the list in the report view and above the grid in the icons view, which is what AltTab has always done. Beside is a column to the right; Above and Below are a band across the full width, which leaves the titles their room.
How much room it takes[General] WindowPreviewPercentage -- the width when the preview sits beside the list, the height when it is a band.
List only the windows on that monitorNarrows the list to the monitor the switcher opened on, which is what Show it on decides. See only the windows on one monitor.

Two of these interact in a way worth knowing. Below 255, the switcher is a layered window, and a layered window's corners have to be rounded by clipping — which works, but the corners are hard-edged. At exactly 255 the desktop compositor does the rounding, which is smooth and comes with the system's drop shadow. If the corners look aliased and you want them smooth, set transparency to 255.

Show it on: Cursor is the one setting the live preview cannot demonstrate: the pointer is on the dialog you are using, so the preview would follow the dialog around. The preview pins itself to the dialog's monitor while it is up, and a real Alt+Tab goes where the setting says.

Fonts and colours

The Fonts and Colors page

The page is grouped by what is being styled rather than by whether a setting is a font or a colour:

Group
Search box font & colorsThe font, and the text and background colours, of the box across the top.
Window list font & colorsThe same for the list of windows, plus Selected row, the two outline colours, and the colour a window that is not responding gets.
Matched text colorsThe two colours used for the letters your filter matched, and whether they are drawn in bold as well.

Selected row is [ListView] SelectedBackgroundColor. It used to be the Windows accent colour, which meant the selection stayed the same blue whatever else you changed — including under a dark theme. Now it is yours to set, and a theme picks its own (see below).

The text on the selected row is not a setting: it is chosen for you, black or white, whichever the colour you picked can carry. One colour plus that rule cannot produce unreadable text, where two colour settings can.

Each colour has a swatch you can click to pick from, and a hex box showing 0xRRGGBB — the same form the INI uses, so what you see here is what the file will say. Fonts are a name, a size in points, and a style (normal, italic, bold, bold italic).

A new installation wears the Dark palette, which is what the screenshots and the animations here show — so what you see in this help is what you get before changing anything.

The colour boxes always show what the switcher is actually painting with. Picking a theme loads its colours into them, so there is no mode to be in and nothing to tick: what is in the boxes is what is on screen, and editing one changes the switcher. What that costs is that a theme and your own colours are not two sets of settings you switch between — they are the same eight settings — which is why editing a colour leads to Save or Save as... below. Your palette lives as a theme with a name, rather than as loose keys that the next theme you try would overwrite.

The fonts are not a theme's business at all: Lucida Handwriting at 11 point is the default whichever palette is on. It is unusual, and deliberately part of the application's character; the point of this page is that none of it is imposed on you.

Upgrading from a version before this changes nothing on screen. A settings file that names no theme keeps the palette matching the colours it was written with, whether those are your own or the shipped ones -- so the switcher you had is the switcher you get, and Dark is one dropdown away when you want it.

Themes

[General] Theme names the palette whose colours are loaded — one of the thirty-one built-in ones, or one of your own.

DarkDark
NordNord
Gruvbox DarkGruvbox Dark
Solarized LightSolarized Light
Ayu DarkAyu Dark
Grayscale DarkGrayscale Dark

Turn the mouse wheel over the theme box to step through them, which with Show the real switcher ticked is the quickest way to see what each one looks like. It is the only control in the dialog the wheel changes — everywhere else a wheel turn scrolls the page, so that scrolling past a combo cannot quietly alter a setting. A theme is the exception because you cannot miss it changing.

There are thirty-one: Default (AltTab's own colours), Light, Dark, and twenty-eight taken from familiar palettes — Midnight, Sepia, Solarized Dark and Light, Monokai, Nord, Dracula, Gruvbox Dark and Light, Zenburn, Catppuccin Mocha and Latte, Tokyo Night, One Dark, Rose Pine, Everforest Dark, Kanagawa, GitHub Light and Dark, Ayu Dark and Mirage, Material Darker, Oceanic Next, Tomorrow Night, Horizon Dark, Selenized Dark and White, and Grayscale Dark. The values are copied exactly, so a palette you know from elsewhere looks the way you expect.

The selected row is outlined in the theme's accent — the same colour the matched letters are picked out in, at full strength. Its fill is that accent pulled most of the way back into the background, so the row reads as the theme's colour without being a slab of it. Where the accent is too close to the fill to be seen as an outline — which happens only with AltTab's own colours, whose accent is red on a blue selection — the frame falls back to a lighter or darker shade of the fill.

Both outlines are settings of their own, [ListView] SelectedOutlineColor and HoverOutlineColor, with a swatch and a hex box each. What is written above is what a theme resolves to rather than a rule you cannot reach: selecting Dark puts its accent in the first box, and you can then change it. Keep the pointer's outline the weaker of the two. The selected row and the row under the pointer are usually next to each other, and two identical frames make the eye pick the wrong one, so the default is the selection's own colour at half strength — which reads as "not this one yet".

[ListView] BoldMatchedText draws the matched letters bold as well as coloured, and is on. It is the one cue that does not depend on the palette: on twenty of the thirty-one themes the matched colour is within a whisker of the title text in brightness, and on Zenburn the two are the same brightness exactly, so colour alone is doing very little. Weight is orthogonal to every colour in a palette, which is what a cue for this has to be.

Grayscale Dark is black and white on purpose. A window list is not code, so no meaning is carried by colour here beyond the letters your search matched — which is why a monochrome switcher works at all. It tells the matched letters and the selected row apart by brightness rather than hue.

Following Windows

[General] FollowSystemTheme, the Follow Windows check box under the theme, off by default. On, the switcher is light or dark as Windows' app mode says, and changes the moment Windows does. With High Contrast on, it uses High Contrast's own colours exactly as you chose them, whatever theme is selected. The theme you picked is kept for when this is off; nothing is written over your colours.

Making one of your own

The palettes above come from the tinted-theming gallery, which shows several hundred base16 schemes side by side. It is the easiest way to find colours you like and the way new AltTab themes are added, so a scheme picked there comes out looking the same here as it does everywhere else you have seen it.

Picking a theme loads its colours into the boxes below. So what those boxes show is always what the switcher is painting with, and changing one of them changes the switcher. There is no mode to be in and nothing to tick.

Once you have changed a colour, the line under the theme name says so, and two buttons decide what happens to it:

Delete removes one of yours. The colours stay in the boxes, so nothing is lost until you pick another theme — and if you change the selection with unsaved colours, AltTab asks before loading over them.

Your themes are stored in AltTabSettings.ini as a section each, so Export carries them along with everything else, and one can be written by hand:

[Theme.My Nord]
ListBackground=0x2E3440
ListText=0xD8DEE9
SearchBackground=0x3B4252
SearchText=0xD8DEE9
MatchBackground=0x434C5E
MatchText=0x88C0D0

Those six are required — a section missing any of them is ignored rather than half-applied, and AltTab's log says which one it skipped and why. Four more are optional: Selected, SelectedOutline, HoverOutline and NotResponding. Leave one out and it is derived from the six the way every built-in palette's is; write it and yours is used exactly as typed. A theme cannot take the name of a built-in one, since that would make the built-in unreachable.

To use a scheme that is not built in, put its colours into the settings above and press Save as..., so you can switch back to it afterwards. Five of the scheme's slots are all you need:

base16 slotAltTab setting
base00[ListView] BackgroundColor — the window list
base05[ListView] FontColor and [SearchString] FontColor
base01[SearchString] BackgroundColor — the search box
base02[ListView] HighlightBackgroundColor — behind matched letters
base0D[ListView] HighlightTextColor — the matched letters themselves

A light scheme wants one change to that: its base02 is a mid grey, so put a pale tint behind the matched letters instead, or they stop standing out.

Your colours are never loaded over without being asked. Change the theme while the colours no longer match it and AltTab offers to keep them first — Save into the theme they belong to, Save as a new one, or discard them. Nothing else touches those settings: a theme named in the file does not reach into them on its own, only a selection you make in the dialog does.

Themes decide colours only. The fonts stay yours.

Upgrading. A settings file with no Theme key is one written before themes existed, and it is left looking exactly as it did: if its colours are your own they keep showing, and if they are the shipped ones the theme is pinned to Default, which is those same colours. So the change of default palette to Dark reaches new installations only, and never repaints a switcher behind its owner's back. [General] UseThemeColors survives as a one-shot instruction rather than a setting to leave on. Set it to 1 and the theme named above is loaded into the colour settings the next time AltTab reads the file, and the key clears itself. That is how a file written by a build that had the old two-model arrangement comes across, and it is also the way to ask for a palette back by hand after editing colours in the file.

What "not responding" looks like

A row whose window has stopped answering gets [ListView] NotRespondingBackgroundColor, which is a colour row on Fonts and Colors under Window list. When a theme is in charge the colour is derived from that theme's own background rather than being a fixed red, so it stays in the palette's family — and it is checked against the row's own text colour, so the title stays readable on it in every one of the thirty-one themes.

Every colour the switcher works out for itself has a measured floor. The themed selection, the hover outline, this row, the matched letters and the search box's placeholder are all blends of palette values, and a blend that reads well on a dark palette can vanish on a light one — several did. Scripts/check_theme_contrast.py measures all thirty-one palettes against WCAG contrast ratios and the application enforces the floors in code, so a theme cannot leave text you cannot read.