# window-switcher adds Alt+` so you can cycle the windows of one app

> window-switcher is a small Rust program for Windows that groups windows the way applications are grouped, so Alt+` cycles between the windows of the same program and Alt+Tab, disabled by default, cycles between programs. It runs as a standalone executable with no installer, and its behaviour is set by an ini file that sits next to it.

**sigoden/window-switcher** — Easily switch between windows of the same app with Alt+` (Backtick), also switch between apps with Alt+Tab.

- Repository: https://github.com/sigoden/window-switcher
- Stars: 1,235 · Forks: 81
- Language: Rust
- License: MIT
- Published: 2026-10-19 · Updated: 2026-10-19 · Language: en
- Canonical page: https://hysenlabs.com/projects/sigoden-window-switcher

## Two different switchers, one for windows and one for apps

Window-Switcher offers customizable hotkeys for quickly switching windows on Windows, and the two features it provides are separated by the level they operate at.

The first is Alt+` (Backtick), which switches between windows of the same app. The second is Alt+Tab, which switches between apps, and it is disabled by default. The project enables the second one only if you ask for it, and the config file makes that explicit with an enable setting.

The interaction is the part that is worth understanding before you use it. You hold down the Alt key and tap the ` or Tab key to cycle through the windows or apps, and pressing Alt plus ` or Tab and then releasing both keys switches to the last active window or app. So the same two keys do two different things depending on whether you release Alt while they are held, or release everything at once.

That is a design decision rather than an implementation detail, and it has a cost. Alt+Tab is the system shortcut on Windows, so a program that takes Alt+Tab over has to give it back exactly right, and the project ships that feature switched off for that reason. The Alt+` binding, by contrast, is not a system shortcut, and it is the one the tool is built around.

The repository is MIT licensed, the copyright line runs from 2023 to 2026 for the window-switcher developers, and the last push was on 2026-08-02 with the newest release being v1.19.0 from 2026-07-24.

## Installation is a zip file, a Scoop bucket, or one PowerShell line

The install path is unusual in a good way, because there is no installer to run and nothing to register.

The manual route is three steps. Visit the GitHub Release page and download the windows-switcher.zip file, unzip it and extract the window-switcher.exe to your preferred location, and then launch it. The executable is standalone and no installation is required, so you can double-click the file to run it.

For the tech-savvy, the README offers a one-liner to automate the installation.

```powershell
iwr -useb https://raw.githubusercontent.com/sigoden/window-switcher/main/install.ps1 | iex
```

And there is a Scoop route, through the extras bucket.

```powershell
scoop bucket add extras
scoop install extras/window-switcher
```

The Scoop route is the one worth preferring if you use Scoop for anything else, because the package manager then owns the upgrade path, and the standalone zip does not. The PowerShell one-liner pipes a downloaded script straight into the interpreter, which is a pattern that is convenient and that you should read before running, since the same convenience applies to anything else that does it.

Nothing in the README describes a Linux or macOS build, and the source makes that clear too, because the whole implementation is against the Windows API.

## The ini file next to the executable decides everything

The configuration is a file called window-switcher.ini that has to be placed in the same directory as the window-switcher.exe file, and after you make changes you have to restart Window-Switcher so the new settings take effect. Restart rather than reload is the model, which is consistent with a small resident program.

The default file is short and is worth reading in full, because every setting maps to a decision you might want to make differently.

```ini
# Whether to show trayicon, yes/no
trayicon = yes 

[switch-windows]

# Hotkey to switch windows
hotkey = alt+`

# List of hotkey conflict apps
# e.g. game1.exe,game2.exe
blacklist =

# Ignore minimal windows
ignore_minimal = no

# Only switch within the current virtual desktops: yes/no/auto
only_current_desktop = auto
```

The same shape repeats for the apps section, with enable = no, hotkey = alt+tab, ignore_minimal = no and only_current_desktop = auto.

Three of those settings carry real decisions. The blacklist is a list of hotkey conflict apps, given as executable names such as game1.exe and game2.exe, which is the escape hatch for the programs that already use Alt+` and would otherwise never see their own shortcut again. ignore_minimal decides whether the tiny helper windows that some applications create are treated as switchable windows. And only_current_desktop takes three values rather than two, with auto meaning the tool decides, and the question behind all three is whether the window you want is on the virtual desktop you are looking at.

## Administrator mode comes with a startup trap

Window-Switcher works in standard user mode by default, and you launch it in administrator mode to also manage applications running in administrator mode. That is the entire point of the elevated mode, because a program running as administrator lives in a different session context from the rest of your desktop, and a standard mode process cannot enumerate it.

The warning below it is the part to read twice. If you enable the startup option while running in standard user mode, Window-Switcher will launch in standard mode upon system reboot. To ensure startup with admin privileges, launch Window-Switcher as administrator first before enabling startup.

In other words, the setting you toggle in the tray icon is not itself what determines the mode at boot, because the mode is decided by how you launched the program when the startup entry was created. A user who enables startup from a normal launch, expecting elevated behaviour at login, gets a normal mode program at login and a window switcher that silently cannot see their elevated windows.

That is a small thing, and it is exactly the kind of thing that costs an afternoon. The fix is to launch as administrator first, then enable startup, and the README is explicit about the order.

## A Rust program built directly against the Win32 API

The Cargo manifest shows how the thing is put together, and the answer is a single native binary with no runtime.

The package is window-switcher at version 1.19.0, on edition 2021. The ordinary dependencies are a short list of Rust crates: anyhow for error handling, indexmap, log, once_cell, parking_lot, rust-ini for reading the configuration file, simple-logging and xml.

The windows crate is the interesting one, at version 0.61.3, and the feature list it enables is the actual architecture of the program. There is Win32_Foundation, Win32_UI_WindowsAndMessaging for enumerating and activating windows, Win32_UI_Input_KeyboardAndMouse for the global hotkey and the tap or hold detection, Win32_UI_Shell for the shell integration, Win32_UI_Accessibility, Win32_UI_HiDpi for per monitor DPI, and the graphics ones, Win32_Graphics_Dwm, Gdi and GdiPlus, which is what drawing the switcher overlay needs. On the system side there is Win32_System_Registry for the startup entry, Win32_System_Threading, Win32_Security and Win32_Security_Authorization for the elevated mode, and Win32_Storage_EnhancedStorage and Win32_Storage_Packaging_Appx for the packaged application support.

The build script is build.rs, and the build dependency is embed-resource, which is how the icon and the version information end up inside the executable. The release profile is tuned for a small binary: lto is on, symbols are stripped, and opt-level is z, which optimises for size. The workspace has one member, tools/inspect-windows, which is a helper for looking at the Windows API.

That combination of features is the reason the program is a single file with no install step. There is no runtime to ship, because the runtime is Windows itself.

## Conclusion

window-switcher fits a Windows user with several windows of the same program open, where the system task switcher treats them as one entry and you still need the second one. It is the wrong tool on anything but Windows, and the wrong tool if the two windows you want are on different virtual desktops and you have set the option to restrict switching. Verify first that your terminal or editor does not already use Alt+`, since the ini file has a blacklist for exactly that case, and read the administrator note before you enable the startup option.

## FAQ

### What hotkey does window-switcher use to cycle windows?

Alt+` (Backtick) switches between windows of the same app, and Alt+Tab switches between apps, with the app switching disabled by default. You hold Alt and tap the key to cycle, and press Alt plus the key and release both to switch to the last active window or app.

### How do I install window-switcher on Windows?

Download windows-switcher.zip from the GitHub releases, extract window-switcher.exe to a location of your choice, and run it, since no installation is required. There is also a PowerShell one-liner using install.ps1, and a Scoop route with scoop bucket add extras followed by scoop install extras/window-switcher.

### Where does window-switcher keep its settings?

In a file called window-switcher.ini placed in the same directory as window-switcher.exe, and you have to restart the program after changing it. The default file enables the tray icon, binds Alt+` for windows, leaves app switching disabled, and sets only_current_desktop to auto in both sections.

### How do I run window-switcher with administrator privileges?

Launch it in administrator mode, which is what lets it manage applications that are themselves running in administrator mode. The README warns that if you enable the startup option while in standard user mode, it will start in standard mode after a reboot, so launch as administrator first before enabling startup.

### What happens if another program already uses Alt+`?

The blacklist setting in the switch-windows section of the ini file lists hotkey conflict applications by executable name, for example game1.exe,game2.exe, so those programs keep their own shortcut.

## Sources

- [Issues](https://github.com/sigoden/window-switcher/issues)
- [License: MIT](https://github.com/sigoden/window-switcher/blob/main/LICENSE)
- [README](https://github.com/sigoden/window-switcher/blob/main/README.md)
- [Releases](https://github.com/sigoden/window-switcher/releases)
- [sigoden/window-switcher on GitHub](https://github.com/sigoden/window-switcher)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/sigoden-window-switcher
