Skip to content

Advanced

Multi‑instance targeting

When multiple instances/windows exist for the same app, AppSwitcher aims to bring back the specific one originally assigned by:

  • Saving the window handle for the current session (if valid)
  • Matching by last known window title (exact, then contains)
  • Falling back to a best match by window bounds
  • As a last resort, the process’s main window

For browsers (Chrome), the app attempts to read the active tab’s URL and fetch a favicon for the slot.

If the original window no longer exists or the title changes significantly, reassign the slot from the running window list or re‑click an empty slot to auto‑assign from the current foreground.

Persistence

Configuration is saved to:

%APPDATA%\AppSwitcher\config.json

What’s stored:

  • Toolbar position, size, always‑on‑top, layout (rows/columns)
  • Per‑slot: target path, arguments, working directory, AppUserModelID (if any), process ID, window title, window handle (session), last bounds, custom label, custom icon path, background color, website URL

Downloaded/temporary icons (e.g., favicons, clipboard captures saved as files) are stored alongside the config in %APPDATA%\AppSwitcher\ and referenced by path.

Resetting configuration: exit the app, then delete %APPDATA%\AppSwitcher\config.json to start fresh.

Packaging

Inno Setup installer

  • Script: installer/appswitcher.iss
  • Build: package.bat from repo root (requires Inno Setup 6; ISCC.exe must be installed)
  • Output: installer/Output/AppSwitcher-<version>-Setup.exe

Chocolatey package (local)

  • Spec: packaging/appswitcher.nuspec
  • Build: packaging/package.bat (requires choco CLI)
  • The package includes tools/AppSwitcher.exe and relies on Chocolatey’s shim to expose appswitcher on PATH.

Notes and limits

  • Visible slots are capped at 64. Hotkeys are available for the first 9 slots.
  • Window handles are valid only for the current Windows session.
  • Always‑on‑top can also be enforced at the OS level by other apps; AppSwitcher provides a toggle within the app menu.