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
(requireschoco
CLI) - The package includes
tools/AppSwitcher.exe
and relies on Chocolatey’s shim to exposeappswitcher
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.