Skip to content

Releases: ryekee/Napoleon

Release list

Napoleon 0.1.0

Choose a tag to compare

@ryekee ryekee released this 25 Jul 13:33
v0.1.0
47ae7d1

The first public build of Napoleon — a keyboard window switcher for macOS that shows you a
live thumbnail of every window instead of an application icon.

macOS's ⌘Tab switches applications. Napoleon switches windows, and shows you what
each one actually looks like.

What's in it

  • Thumbnail previews of every window, captured with ScreenCaptureKit
  • Two rebindable hotkeys — ⌘Tab for all windows, ⌘` for the current app's windows
  • Quick-switch stays quick — tap and release faster than the display delay and it jumps
    straight to your previous window, no overlay
  • Search by app name or window title; Chinese titles match by Pinyin (gouwu → 购物清单)
  • Full-screen aware — full-screen apps are listed, and while you're inside one your
    desktop windows stay reachable so you can get back out
  • Keyboard, mouse, or both — Tab/⇧Tab, arrow keys, hover, click, Esc
  • Four languages — English, 简体中文, 繁體中文, 日本語
  • Settings for card size, window titles, light/dark, display delay, scope, thumbnail cache
    budget, and launch at login

Requirements

macOS 14 (Sonoma) or later.

  • Accessibility — required. Without it Napoleon can't intercept the hotkey or focus
    windows.
  • Screen Recording — optional. Without it the switcher still works, but cards fall back
    to app icons instead of thumbnails.

Installing

This build is signed but not notarized, so Gatekeeper will refuse it on first launch.

  1. Unzip and move Napoleon.app to /Applications
  2. Try to open it — macOS will say it can't verify the developer
  3. Go to System Settings → Privacy & Security, scroll down, and click Open Anyway
  4. Grant Accessibility when prompted, then relaunch Napoleon (the event tap can only
    be installed at startup)
  5. Optionally grant Screen Recording for thumbnails

If you'd rather not run an unnotarized binary, build from source — it's four commands, see
the README.

Known rough edges

  • Windows on another Space that Accessibility can't reach are focused at app level, so a
    multi-window app may not land on the exact window you picked
  • With a second display parked in a full-screen space for a long time, the "escape" list can
    go stale until you visit a desktop again
  • Unusual toolkits (Java/Swing, SDL games) expose windows inconsistently through
    Accessibility

Licensed under the GNU AGPL v3.0.