ALTTAB(1)

NAME
alttab - the task switcher

SYNOPSIS
alttab [-w N] [-d N] [-sc N] [-mk str] [-kk str] [-bk str] [-pk str] [-nk str] [-ck str] [-dk str] [-mm N] [-bm N] [-t NxM] [-i NxM] [-vp str] [-p str] [-s N] [-theme name] [-bg color] [-fg color] [-frame color] [-inact color] [-min color] [-bc color] [-bw N] [-font name] [-vertical] [-sortmin] [-e] [-b N] [-ns] [-v|-vv]

DESCRIPTION
The task switcher designed for minimalistic window managers or standalone X11 session.

Unlike task switchers integrated in most simple WMs, alttab features visual interface and convenient tactile behaviour, switching windows on releasing Alt key.

Being lightweight and depending only on core X11 libs, it still features customizable look and behaviour.

OPTIONS
Most command line options have corresponding X resource, see doc/alttab.ad for example.

-w NUMBER
    resource: alttab.windowmanager
    default: autodetect, fallback to 3

    Control how to obtain window list and set focus. NUMBER must be between 0 and 3:

    0: No WM, raw X.

    Set this value manually, as it's not autodetected. Only top-level viewable children of root window are listed. Running -w 0 under WM is discouraged: hidden windows or windows on another desktops will not be listed; instead, some strange windows may be included.

    1: EWMH compatible.

    Compatible WM list is in SEE ALSO below. alttab functions in xmonad (EWMH must be allowed, details in doc/wm-setup.md), i3, evilwm, xfwm4, metacity, jwm, openbox, fluxbox, icewm, enlightenment, blackbox, aewm, fvwm, sawfish, bspwm. The following WMs support EWMH partially but work in -w 1 mode too: dwm (issue #9), matchbox (issue #34), windowmaker (issue #9), xpra (issue #37), cwm (issue #35), ctwm (issue #39), lwm (issue #40), awesome (issue #41).

    2: Ratpoison.

    Alttab uses ratpoison own remote control capability. Also, alttab registers itself in its "unmanaged list" automatically.

    3: Ancient WM.

    Fallback, worse than 0. Search for application windows at random nodes of window tree (WM is probably reparenting) and select only those with a name, including non-viewable (WM is probably iconifying). May cause lag. Tested in twm, flwm, wm2.

-d NUMBER
    resource: alttab.desktops
    default: 0

    Show windows belonging to desktops (workspaces, groups). NUMBER must be between 0 and 4:

    0: Current desktop.

    This is default, although in non EWMH-compatible WM, except ratpoison, it's effectively the same as 1.

    1: All desktops.

    2: All desktops, excluding special (-1) one.

    In various EWMH WM this desktop may be designed hidden or containing sticky windows. In i3, it's "scratchpad".

    3: All desktops, excluding current and special.

    4: Special (-1) desktop only.

-sc NUMBER
    resource: alttab.screens
    default: 1

    Show windows belonging to xrandr/xinerama screens. NUMBER must be 0 or 1:

    0: Current screen.

    As defined according to -vp pointer or -vp focus.

    1: All screens.

    This is default.

-mk str
    resource: alttab.modifier.keysym
    default: Alt_L (i.e. Left Alt)

    Keysym of main modifier. String or number accepted. Suitable examples: Control_L, Super_L.

-kk str
    resource: alttab.key.keysym
    default: Tab

    Keysym of main key. For example, grave (aka tilde), Escape.

-bk str
    resource: alttab.backscroll.keysym
    default: any Shift, according to ShiftMask

    Keysym of backward scroll key.

-pk str
    resource: alttab.prevkey.keysym
    default: no key assigned

    Keysym of auxiliary 'previous' key. For example, Left, H.

-nk str
    resource: alttab.nextkey.keysym
    default: no key assigned

    Keysym of auxiliary 'next' key. For example, Right, L.

-ck str
    resource: alttab.cancelkey.keysym
    default: Escape

    Keysym of auxiliary 'cancel' key.

-dk str
    resource: alttab.killkey.keysym
    default: k

    Keysym of key for killing X client to which currently selected window belongs.

-mm NUM
    resource: alttab.modifier.mask

    OBSOLETED, guessed from -mk instead.

-bm NUM
    resource: alttab.backscroll.mask

    OBSOLETED, guessed from -bk instead.

-t NNxMM
    resource: alttab.tile.geometry
    default: 112x128

    Size of a single tile (mini-window). If switcher doesn't fit the viewport (-vp), tile may be thinner.

-i NNxMM
    resource: alttab.icon.geometry
    default: 32x32

    Size of icons.

-vp str
    resource: alttab.viewport
    default: focus

    Limit viewport for the switcher. The switcher always has variable size and position, but tries to never break out of -vp container, while -p specifies position relative to this container. Together these options allow for WM-independent multi-monitor support. Possible values for -vp:

    focus: in multihead configuration: the monitor which shows largest part of currently focused window. If this part is shared with other monitors, then the smallest of these monitors is chosen. In single head configuration: the geometry of default root window.

    pointer: the monitor which has mouse pointer, otherwise the same as focus.

    The "multihead" above means more than one active XRANDR output. They are detected at runtime, so hopefully monitors may be attached/detached without restarting alttab.

    total: the geometry of default root window.

    If you specify this in tiling multihead configuration, then the switcher will be drawn relative to the entire combined screen, crossing monitors' borders.

    WxH+X+Y: Specific position relative to default root window.

    This allows for static manual bounding if XRANDR detection fails. Suppose X root window spans over two 2560х1440 monitors, resulting in combined screen of 5120x1440 size. Then the switcher may be positioned at the center of the right monitor with -vp 2560x1440+2560+0 -p center.

-p str
    resource: alttab.position
    default: center

    Position of switcher: "center", "none" or specific position relative to upper left corner of viewport, in the form +X+Y.

-s NUMBER
    resource: alttab.icon.source
    default: 2

    Source of icons. NUMBER must be between 0 and 5:

    0: Use icons from X11 window attributes only.

    1: Load icon from file if not found in window attributes.

    Alttab searches for PNG and XPM icons in $XDG_DATA_DIRS and also under:

    /usr/share/icons
    /usr/local/share/icons
    ~/.icons
    ~/.local/share/icons

    Directory structure should obey freedesktop standard, but desktop files are ignored, instead file name is expected to be equal to application class. That is, if alttab doesn't recognize an icon for window of class foo, as obtained by 'xprop WM_CLASS', then just drop a 32x32 icon into /usr/local/share/icons/hicolor/32x32/apps/foo.png.

    Also, alttab scans for icons in legacy directories without freedesktop directory structure:

    /usr/share/pixmaps
    ~/.local/share/pixmaps

    2: Prefer icon from file when it matches requested size better (see -i option).

    3: Use icons from files only.

    4: Don't draw icons.

    5: Prefer icon from X11 window attributes when it matches requested size better.

-theme name
    resource: alttab.theme
    default: hicolor

    Desktop theme for application icons. Used when -s is 1, 2 or 3.

The following six options accept color names or #rrggbb. Special value _rnd_low or _rnd_high produce random color from lower or upper RGB space respectively.

-bg color
    resource: alttab.background
    default: black

    Tile background color.

-fg color
    resource: alttab.foreground
    default: grey

    Foreground color.

-frame color
    resource: alttab.framecolor
    default: #a0abab

    Color of frame around selected tile.

-inact color
    resource: alttab.inactcolor
    default: foreground color

    Color of frame around non-selected tiles.

-min color
    resource: alttab.mincolor
    default: frame color

    In stacking WM, color of frame for minimized windows.

-bc color
    resource: alttab.bordercolor
    default: black

    Color of extra border around the entire switcher. This border may look redundant. Do not confuse with -frame.

-bw N
    resource: alttab.borderwidth
    default: 0 (no extra border)

    Width of extra border above.

-font name
    resource: alttab.font
    default: xft:sans-10

    Label font name in format: xft:fontconfig_pattern, like in emacs and rxvt. See SEE ALSO for fontconfig pattern. It's neither GTK font pattern nor legacy XLFD.

Your Xresources database probably already has *background, *foreground or *font wildcard definitions, which alttab will obey. Precedence order (preferred first):

alttab.font resource,
-font option,
wildcard resource like *font in xfd: format.

-vertical
    resource: alttab.vertical
    default: no

    Vertical layout.

-sortmin
    resource: alttab.sortmin
    default: no

    Sort minimized windows last.

-e  resource: alttab.keep
    default: no

    On release of Alt, don't switch, keep showing the switcher. This allows for external call: xdotool key alt+Tab . See doc/mobile.md for possible usage.

-b NUMBER
    resource: alttab.bottomline
    default: 0

    Content of auxiliary line at the bottom of each tile. NUMBER must be between 0 and 2:

    0: Empty.

    1: Name of desktop to which the window belongs.

    2: User name. Requires _NET_WM_PID freedesktop property and /proc file system.

-ns resource: alttab.noskiptaskbar
    default: no

    Ignore application request of not including a window on a taskbar.

-v, -vv
    resource: no
    default: silent

    Verbosity.

-h  short help

CAVEATS
Run alttab after WM, or autodetection will fail.

AUTHOR
Copyright 2017-2026 Alexander Kulak <sa-dev AT odd POINT systems>.

REPORTING BUGS
Please report issues on github https://github.com/sagb/alttab/issues.

SEE ALSO
EWMH compatible WM list https://en.wikipedia.org/wiki/Extended_Window_Manager_Hints#List_of_window_managers_that_support_Extended_Window_Manager_Hints.

Description of fontconfig pattern https://www.freedesktop.org/software/fontconfig/fontconfig-user.html.