Windows

Switch to any open window or space, most recently used first

palupdated 2026-10-27ProductivityComes with pal

Open in pal

Comes with pal, so a new install already has it; the button finds it in pal again if you removed it. This page can't see what your pal has installed.

Windows: Every open window in a section per app, the other display and a minimised one marked
Every open window in a section per app, the other display and a minimised one marked
Windows: Focus, close, minimise or hide the app, or minimise and close all of its windows at once
Focus, close, minimise or hide the app, or minimise and close all of its windows at once
Windows: Windows are root results: chrome finds its three windows and the space it is on
Windows are root results: chrome finds its three windows and the space it is on
Windows: Closing every window of an app asks first
Closing every window of an app asks first
Windows: Spaces: each desktop by name with the apps on it, the current and the previous one tagged
Spaces: each desktop by name with the apps on it, the current and the previous one tagged
1 of 5

What it does

Every open window with its app's icon, most recently used first and grouped by app: enter switches to it, and you can close, minimise or hide from the keyboard. Spaces and workspaces are listed too, each with the apps on it.

  • Every window, most recently used first, grouped by app; window titles are found at the root
  • Tags for hidden, minimised and on another space, and the monitor when known
  • cmd+w closes, cmd+m minimises, cmd+h hides the app; Close all and Minimize all act on every window of an app
  • Spaces: a row per Space or workspace with its apps; enter switches, Previous space goes back
  • Named desktops can take global hotkeys
  • macOS, and Hyprland, Sway and X11 on Linux, detected by itself

Palettes 2

  • Windowswindowslive

    What is open right now, most recently used first.

    • ↵Focus the window
    • ⌘WClose it
    • ⌘MMinimize it
    • ⌘HHide the app
    • ⌘⇧HShow a hidden app
    • ⌘⇧MMinimize all of the app's windows
    • ⌘⇧WClose all of the app's windows, after a confirm
  • Spacesspaceslive

    Every Space, workspace or desktop in the desktop's order, with the apps on it; Enter brings it in front. Previous space goes back to the one left most recently; Toggle flips between the two spaces named in the setting.

    • ↵Bring the space in front

Actions

  • FocusHides the panel, then raises the window, restoring it if minimised.↵
  • CloseThe palette stays open and lists again.⌘W
  • MinimizeNot offered on a window that already is.⌘M
  • Hide appmacOS: hides the window's process through System Events; marked windows hide their apps at once. Not offered on a hidden app.⌘H
  • Show appmacOS, on a hidden app's window: the app comes forward with every window it had; the panel hides.⌘⇧H
  • Minimize all of this appOn an app with more than one window.⌘⇧M
  • Close all of this appAsks first.⌘⇧W
  • GoSpaces: hides the panel, then brings the space in front. On the current space with Back and forth on, goes to the previous one.↵

Settings

Extension, [extensions.windows]

include_minimized
On boolean

Focusing a minimised window restores it.

spaces
none list

Names for the desktops by number: the first entry names Desktop 1. A named space's row is titled by it, the windows rows say `space <name>`, and its row id is the name, so `[palettes.windows-spaces.item_hotkeys]` reads `term = "ctrl+alt+shift+a"`.

back_and_forth
Off boolean

Hyprland's workspace_back_and_forth: the same key toggles between a space and where you came from. Enter on the current space's row does the same.

toggle
none list

Two space names (or numbers) the Toggle row flips between: on the first it goes to the second, anywhere else to the first. toggle = "ctrl+f" under item_hotkeys makes it a key.

Defaults shown. Change them in pal's settings window or in the config file.

The README

Everything Windows does, key by key, from the extension's own README.md

Windows

Every open window with its app's icon, most recently used first on macOS and Hyprland (front to back on Sway and X11), never ranked by how often it was picked. A live palette: the list runs on every show, so window titles are root results. Rows are grouped by app, a section per app in the order the most recent window of each gives; the app name is the subtitle and a keyword, the bundle id or window class a keyword too. A hidden app's window carries a hidden tag, a minimised one minimized, one on another workspace or space space 3 or other space, and the monitor when known.

Enter focuses: the panel hides, then the window comes up, restored if it was minimised. The other actions close or minimise, one window or the app's whole set, without leaving the palette, which lists again so the row is seen to go.

Spaces is the same capability one level up: a row per Space (macOS), workspace (Hyprland, Sway) or desktop (X11) in the desktop's order, the apps on it as the subtitle, the icon of the window used there last, a current tag on the one in front and previous on the one left most recently. Enter brings it in front: the panel hides, then on macOS the strip moves by a synthesised Dock swipe too fast to animate (yabai's trick with SIP on; needs Accessibility like paste) and the window used there last (the focus history, else the biggest) is raised; Linux asks the compositor. Previous space goes back to the one left most recently, a swipe counted too; Toggle flips between the two spaces toggle names. spaces = ["web", "term", "misc"] names the desktops by number; a named space's row id is its name, so [palettes.windows-spaces.item_hotkeys] reads term = "ctrl+2", last = "ctrl+f" or toggle = "ctrl+f". With back_and_forth on, a space's key pressed while on it goes back to the previous one.

Keyboard

keys action
enter Focus: hides the panel, then raises the window
cmd+w Close the window; the palette stays open and lists again
cmd+m Minimize; not offered on a window that already is
cmd+h Hide app (macOS): System Events hides the window's process; not offered on a hidden app; over marked windows, each app once
cmd+shift+h Show app (macOS, on a hidden app's window): the app comes forward with every window it had, and the panel hides
cmd+shift+m Minimize all of this app; on an app with more than one window
cmd+shift+w Close all of this app, after a confirm; on an app with more than one window
alt+tab (held), shift+alt+tab The switcher: the manifest's hold chord. Held, the palette shows flat with the cursor on row 2; each press steps down (shift: up); letting go of Alt focuses the row under the cursor. [palettes.windows] hold = "" turns it off, another chord moves it; Linux drives it with pal switch from a keybind (docs/cli.md)

A focus, close or minimise that fails keeps the panel open with a toast carrying the reason ("needs Accessibility permission", "the window is gone").

Setup

Nothing to install on macOS. The list comes from CoreGraphics merged with the Accessibility API for the parts CoreGraphics does not give (another app's window title, whether it is minimised). Without the Accessibility permission the list still works (titles only when Screen Recording allows, else the app name), focusing falls back to activating the app, and close and minimise fail with "needs Accessibility permission"; Focus shows the same one-time prompt and toast as paste when the permission is missing. Hide app goes through System Events, which asks for Automation once.

On Linux the backend is detected, not configured: Hyprland when hyprctl and an instance signature exist (the newest $XDG_RUNTIME_DIR/hypr/* when the variable is missing, so a service-started pal works); Sway on SWAYSOCK; X11 on DISPLAY plus wmctrl. Hyprland has no minimise, so pal parks the window on the special:minimized workspace and Focus brings it back; Sway minimise is move scratchpad; X11 minimise needs xdotool. With none of the three the palette reports "no Hyprland, Sway or X11 (wmctrl) session".

Settings, [extensions.windows]:

key type default what
include_minimized bool true List minimised windows too (focusing one restores it).
spaces list of strings [] Names for the desktops by number: the Spaces row titles, the ws accessory, and the row ids item_hotkeys key on.
back_and_forth bool false A space's hotkey pressed while on it goes to the previous space.
toggle list of two strings [] Two space names (or numbers) the Toggle row flips between: on the first to the second, anywhere else to the first.

Order

Most recently used first, so row 1 is the window you came from and row 2 the one before it. Hyprland keeps that history itself; on macOS pal keeps one, stamped on every app activation (the workspace notification), when the panel shows (the window in front at the hotkey), and by Focus (the window picked is the next "previous"). A focus change inside one app (cmd+` in a browser) is not an activation, so it shows up on the next one. The history lives in the running pal: a fresh start lists front to back until windows get used. Sway and X11 list front to back.

What it does not do

  • No ranking by pick count: the order is the desktop's recency, not how often you chose a window. Type part of its title instead.
  • No moving or resizing: that is Window Management, which has Apply to… for a window picked from this list's rows.
  • No moving a window to another space, and no making or removing spaces: macOS keeps those behind the Dock's private interface (yabai needs its scripting addition and SIP off for them); Mission Control does both.
  • Hide app is macOS only; on Linux the action is not offered.
  • No window previews: the row has the app's icon, not a thumbnail.

Platforms

macOS (CoreGraphics and the Accessibility API) and Linux (Hyprland, Sway, or X11 with wmctrl).