sgm1018/BetterWinTab

The missing hierarchical window manager for Windows. Stop searching, start navigating.

C#

3

17 commits

updated Oct 7, 2026

See the code

README

BetterWinTab

image

https://github.com/user-attachments/assets/43d3c613-c7c2-45a5-be38-eede70fd772a

The tool that should have shipped with your OS.

BetterWinTab is a native Windows window navigator for people who keep many apps, browsers, terminals, editors, and work contexts open at the same time. Press Ctrl + Tab, search or browse your windows, and focus the one you need without touching the mouse.

Free. Open source. Native Windows. MIT licensed.

Download Free for Windows 10/11 · View Source on GitHub


What Is BetterWinTab?

BetterWinTab, or BWT, is a keyboard-first replacement for the classic SO switching experience.

Instead of showing one flat, recency-ordered list like Alt + Tab, it gives you one compact surface for every open window, grouped by context, searchable in real time, and designed to disappear the moment you select what you need.

image

The Problem

Modern desktops are not small anymore.

Developers, designers, students, and power users often run multiple VS Code windows, browser profiles, terminals, file explorers, notes, dashboards, and communication apps at the same time. All the SOs still treats them mostly as a flat list ordered by whatever you touched last.

That creates three problems:

ProblemWhat Happens
No contextcode.exe, chrome.exe, terminals, and explorers sit side by side with no meaning.
Volatile orderEvery click reshuffles the switcher, so spatial memory breaks.
Slow discoveryFinding one window among dozens becomes scanning, guessing, and repeating.

BetterWinTab solves this by making window navigation context-aware, searchable, and keyboard-driven.


What Is It For?

Use BetterWinTab when you want to:

  • Jump to any open window by typing part of its title, app, or process name.
  • Group windows automatically into Smart Folders.
  • Keep manual folders for personal workflows.
  • Launch an app when the window you searched for is not open yet.
  • Open a focused clipboard history faster than Win + V.
  • Access common system actions like Recycle Bin without minimizing everything.
  • Customize the look of your switcher with themes and custom colors.
Captura de pantalla 2026-04-29 025517

Features

Smart Folders

Smart Folders fill themselves automatically based on process names, window classes, or custom rules. Open a new VS Code, Chrome, Terminal, Explorer, Vivaldi, Brave, or Edge window and it appears in the right context immediately.

You can also create manual folders and drag windows into them when you want full control.

Captura de pantalla 2026-04-29 025547 Captura de pantalla 2026-04-29 030010

Search is always ready. Type part of a title, app name, subtitle, or process name and BetterWinTab filters every open window instantly.

The matcher is typo-tolerant and built for fast, imperfect typing under pressure.

When the local semantic model is available, BetterWinTab also performs an asynchronous hybrid rerank using intfloat/multilingual-e5-small. Lexical results appear first, so the model never blocks typing. The ONNX model and SentencePiece tokenizer are downloaded on demand from Hugging Face and cached under %LocalAppData%\BetterWinTab\Models. Window, tab, and clipboard content embeddings remain in memory for the current process.

App Launcher

If no open window matches your search, BetterWinTab becomes an application launcher. Find installed programs and open them with one keystroke.

Captura de pantalla 2026-04-29 025718

Keyboard-First Navigation

BetterWinTab is designed for flow:

ShortcutAction
Ctrl + TabShow or hide the overlay
Tab / Shift + TabMove between folders
Arrow keysMove through windows
EnterFocus the selected window or launch the selected app
EscClear search or close the overlay
F5Refresh windows
DeleteClose the selected window
0-9, a-z, A-ZStart typing instantly to search across all open windows — no need to click the search box
Tab (while searching)Toggle search mode between All windows and Apps (app launcher)

The activation hotkey can be changed from Settings -> General.

Browser Tabs

Enable Browser tabs in Settings -> General to include tabs from Chrome, Edge, and Brave in the same search as windows. The integration has two parts: the unpacked Chromium extension and a small Native Messaging host that connects the extension to BetterWinTab. It does not require remote debugging.

Build And Install The Chromium Integration

Run these commands from the repository root (BetterWinTab):

# Build the Native Messaging host
dotnet build BrowserExtension\NativeHost\BetterWinTab.NativeHost.csproj -c Release

Then load the extension in every Chromium browser you want to use:

  1. Open chrome://extensions, edge://extensions, or brave://extensions.
  2. Enable Developer mode.
  3. Click Load unpacked.
  4. Select the repository's BrowserExtension folder.
  5. Copy the extension ID shown for each browser. Chrome, Edge, and Brave may assign different IDs.

Register the Native Messaging host from the repository root. Replace the example values with the IDs copied in the previous step:

Set-ExecutionPolicy -Scope Process Bypass
.\BrowserExtension\install-native-host.ps1 `
  -ExtensionId "CHROME_EXTENSION_ID","EDGE_EXTENSION_ID","BRAVE_EXTENSION_ID"

You can also complete this step from the BetterWinTab UI. Open Settings -> General -> Browser tabs, paste each browser's extension ID into the matching field, and click Register browser integration. BetterWinTab will copy the Native Messaging host to %LocalAppData%, register it for the current Windows user, and show the result in the settings panel. Administrator permissions are not required.

You can pass only the browsers you use. For example, Chrome only:

.\BrowserExtension\install-native-host.ps1 -ExtensionId "CHROME_EXTENSION_ID"

Finally, reload the extension in each browser, restart BetterWinTab, and enable Settings -> General -> Browser tabs. The browser tab title and URL will then appear in the normal BetterWinTab search, and pressing Enter will activate the tab in its browser window.

After changing background.js or manifest.json, click Reload on the extension card. After rebuilding the Native Messaging host, restart the browser and BetterWinTab so the new host executable is used.

Each tab card shows the browser icon and the tab's favicon when the site provides one. Chromium's normal extension API does not provide screenshots of all background tabs; a live tab image is only available for the currently visible tab with additional capture permissions.

Settings also reports the Native Messaging bridge state for Chrome, Edge, and Brave, including whether each browser is connected and how many tabs were last received. Cards label native windows as WINDOW, browser tabs as TAB, and launchable apps as APP.

Firefox is detected in Settings, but its extension bridge is not included yet.

Clipboard History

BetterWinTab includes a focused clipboard panel for recent text and image items. Entries, pins, and image bytes are session-only and are cleared when BetterWinTab restarts. Selecting an entry copies it back to the system clipboard, including captured images.

Captura de pantalla 2026-04-29 025645

Notes

The rich-text Notes editor converts Markdown copied as plain text into formatted notes, including headings, lists, blockquotes, code blocks, tables, and links. It also supports pasting images from the clipboard and dropping image files. Images are embedded in their notes and remain available after BetterWinTab restarts.

Recycle Bin Shortcut

Open the Recycle Bin directly from the overlay without minimizing windows or hunting through the desktop.

Themes And Customization

Use built-in theme presets or create your own. BetterWinTab exposes semantic color tokens for accent, background, surfaces, cards, borders, text hierarchy, and danger states.

Captura de pantalla 2026-04-29 030156

Native Windows Runtime

BetterWinTab is not an Electron app. It is built with C#, .NET 8, and WinUI 3, with Win32 interop for window enumeration, global hotkeys, live thumbnails, and native shell integration.


Download

The easiest way to install BetterWinTab is to download the latest .exe from GitHub Releases:

Download: https://github.com/sgm1018/BetterWinTab/releases

Releases may include:

  • A Windows installer built with Inno Setup.
  • A portable x64 build.

BetterWinTab supports Windows 10/11.


Requirements For Development

ToolVersion
WindowsWindows 10 19041+ or Windows 11
.NET SDK8.0.x
Visual Studio CodeAny recent version
Inno Setup6.x, only needed to build the installer

Check your SDK:

dotnet --version

Build

BetterWinTab must be built for x64. Building without the platform flag can cause native WinUI dependencies to fail at startup.

dotnet build BetterWinTab.csproj -p:Platform=x64

Build output:

bin\x64\Debug\net8.0-windows10.0.19041.0\

From VS Code, you can also run the predefined task:

Ctrl + Shift + B -> build-x64

Run In Debug

Recommended VS Code task:

Ctrl + Shift + P -> Tasks: Run Task -> run-x64

Manual run:

Stop-Process -Name BetterWinTab -Force -ErrorAction SilentlyContinue
dotnet build BetterWinTab.csproj -p:Platform=x64
Start-Process "bin\x64\Debug\net8.0-windows10.0.19041.0\win-x64\BetterWinTab.exe"

Hot reload:

dotnet watch run --project BetterWinTab.csproj -p:Platform=x64 --runtime win-x64

Once the app starts, press Ctrl + Tab to show the overlay.


Debug With VS Code

Create .vscode/launch.json if needed:

{
  "version": "0.2.0",
  "configurations": [
    {
      "name": "Debug BetterWinTab",
      "type": "coreclr",
      "request": "launch",
      "preLaunchTask": "build-x64",
      "program": "${workspaceFolder}/bin/x64/Debug/net8.0-windows10.0.19041.0/win-x64/BetterWinTab.exe",
      "cwd": "${workspaceFolder}",
      "stopAtEntry": false,
      "console": "internalConsole"
    }
  ]
}

Then press F5 and use breakpoints in the C# files.


Publish

Create a self-contained release build:

dotnet publish BetterWinTab.csproj -p:Platform=x64 -c Release

Publish output:

bin\Release\net8.0-windows10.0.19041.0\win-x64\publish\

Publish profiles are available under Properties/PublishProfiles/ for win-x64, win-x86, and win-arm64.


Deploy / Build The Installer

Publish first:

dotnet publish BetterWinTab.csproj -p:Platform=x64 -c Release

Then compile the installer with Inno Setup:

& "C:\Program Files (x86)\Inno Setup 6\iscc.exe" installer.iss

Installer output:

installer-output\BetterWinTab-Setup-1.0.0-x64.exe

License

BetterWinTab is released under the MIT License.

Built by sgm108.

Star History

Star History Chart

sgm1018/BetterWinTab

The missing hierarchical window manager for Windows. Stop searching, start navigating.

C#

3

17 commits

updated Oct 7, 2026

See the code

README

BetterWinTab

image

https://github.com/user-attachments/assets/43d3c613-c7c2-45a5-be38-eede70fd772a

The tool that should have shipped with your OS.

BetterWinTab is a native Windows window navigator for people who keep many apps, browsers, terminals, editors, and work contexts open at the same time. Press Ctrl + Tab, search or browse your windows, and focus the one you need without touching the mouse.

Free. Open source. Native Windows. MIT licensed.

Download Free for Windows 10/11 · View Source on GitHub


What Is BetterWinTab?

BetterWinTab, or BWT, is a keyboard-first replacement for the classic SO switching experience.

Instead of showing one flat, recency-ordered list like Alt + Tab, it gives you one compact surface for every open window, grouped by context, searchable in real time, and designed to disappear the moment you select what you need.

image

The Problem

Modern desktops are not small anymore.

Developers, designers, students, and power users often run multiple VS Code windows, browser profiles, terminals, file explorers, notes, dashboards, and communication apps at the same time. All the SOs still treats them mostly as a flat list ordered by whatever you touched last.

That creates three problems:

ProblemWhat Happens
No contextcode.exe, chrome.exe, terminals, and explorers sit side by side with no meaning.
Volatile orderEvery click reshuffles the switcher, so spatial memory breaks.
Slow discoveryFinding one window among dozens becomes scanning, guessing, and repeating.

BetterWinTab solves this by making window navigation context-aware, searchable, and keyboard-driven.


What Is It For?

Use BetterWinTab when you want to:

  • Jump to any open window by typing part of its title, app, or process name.
  • Group windows automatically into Smart Folders.
  • Keep manual folders for personal workflows.
  • Launch an app when the window you searched for is not open yet.
  • Open a focused clipboard history faster than Win + V.
  • Access common system actions like Recycle Bin without minimizing everything.
  • Customize the look of your switcher with themes and custom colors.
Captura de pantalla 2026-04-29 025517

Features

Smart Folders

Smart Folders fill themselves automatically based on process names, window classes, or custom rules. Open a new VS Code, Chrome, Terminal, Explorer, Vivaldi, Brave, or Edge window and it appears in the right context immediately.

You can also create manual folders and drag windows into them when you want full control.

Captura de pantalla 2026-04-29 025547 Captura de pantalla 2026-04-29 030010

Search is always ready. Type part of a title, app name, subtitle, or process name and BetterWinTab filters every open window instantly.

The matcher is typo-tolerant and built for fast, imperfect typing under pressure.

When the local semantic model is available, BetterWinTab also performs an asynchronous hybrid rerank using intfloat/multilingual-e5-small. Lexical results appear first, so the model never blocks typing. The ONNX model and SentencePiece tokenizer are downloaded on demand from Hugging Face and cached under %LocalAppData%\BetterWinTab\Models. Window, tab, and clipboard content embeddings remain in memory for the current process.

App Launcher

If no open window matches your search, BetterWinTab becomes an application launcher. Find installed programs and open them with one keystroke.

Captura de pantalla 2026-04-29 025718

Keyboard-First Navigation

BetterWinTab is designed for flow:

ShortcutAction
Ctrl + TabShow or hide the overlay
Tab / Shift + TabMove between folders
Arrow keysMove through windows
EnterFocus the selected window or launch the selected app
EscClear search or close the overlay
F5Refresh windows
DeleteClose the selected window
0-9, a-z, A-ZStart typing instantly to search across all open windows — no need to click the search box
Tab (while searching)Toggle search mode between All windows and Apps (app launcher)

The activation hotkey can be changed from Settings -> General.

Browser Tabs

Enable Browser tabs in Settings -> General to include tabs from Chrome, Edge, and Brave in the same search as windows. The integration has two parts: the unpacked Chromium extension and a small Native Messaging host that connects the extension to BetterWinTab. It does not require remote debugging.

Build And Install The Chromium Integration

Run these commands from the repository root (BetterWinTab):

# Build the Native Messaging host
dotnet build BrowserExtension\NativeHost\BetterWinTab.NativeHost.csproj -c Release

Then load the extension in every Chromium browser you want to use:

  1. Open chrome://extensions, edge://extensions, or brave://extensions.
  2. Enable Developer mode.
  3. Click Load unpacked.
  4. Select the repository's BrowserExtension folder.
  5. Copy the extension ID shown for each browser. Chrome, Edge, and Brave may assign different IDs.

Register the Native Messaging host from the repository root. Replace the example values with the IDs copied in the previous step:

Set-ExecutionPolicy -Scope Process Bypass
.\BrowserExtension\install-native-host.ps1 `
  -ExtensionId "CHROME_EXTENSION_ID","EDGE_EXTENSION_ID","BRAVE_EXTENSION_ID"

You can also complete this step from the BetterWinTab UI. Open Settings -> General -> Browser tabs, paste each browser's extension ID into the matching field, and click Register browser integration. BetterWinTab will copy the Native Messaging host to %LocalAppData%, register it for the current Windows user, and show the result in the settings panel. Administrator permissions are not required.

You can pass only the browsers you use. For example, Chrome only:

.\BrowserExtension\install-native-host.ps1 -ExtensionId "CHROME_EXTENSION_ID"

Finally, reload the extension in each browser, restart BetterWinTab, and enable Settings -> General -> Browser tabs. The browser tab title and URL will then appear in the normal BetterWinTab search, and pressing Enter will activate the tab in its browser window.

After changing background.js or manifest.json, click Reload on the extension card. After rebuilding the Native Messaging host, restart the browser and BetterWinTab so the new host executable is used.

Each tab card shows the browser icon and the tab's favicon when the site provides one. Chromium's normal extension API does not provide screenshots of all background tabs; a live tab image is only available for the currently visible tab with additional capture permissions.

Settings also reports the Native Messaging bridge state for Chrome, Edge, and Brave, including whether each browser is connected and how many tabs were last received. Cards label native windows as WINDOW, browser tabs as TAB, and launchable apps as APP.

Firefox is detected in Settings, but its extension bridge is not included yet.

Clipboard History

BetterWinTab includes a focused clipboard panel for recent text and image items. Entries, pins, and image bytes are session-only and are cleared when BetterWinTab restarts. Selecting an entry copies it back to the system clipboard, including captured images.

Captura de pantalla 2026-04-29 025645

Notes

The rich-text Notes editor converts Markdown copied as plain text into formatted notes, including headings, lists, blockquotes, code blocks, tables, and links. It also supports pasting images from the clipboard and dropping image files. Images are embedded in their notes and remain available after BetterWinTab restarts.

Recycle Bin Shortcut

Open the Recycle Bin directly from the overlay without minimizing windows or hunting through the desktop.

Themes And Customization

Use built-in theme presets or create your own. BetterWinTab exposes semantic color tokens for accent, background, surfaces, cards, borders, text hierarchy, and danger states.

Captura de pantalla 2026-04-29 030156

Native Windows Runtime

BetterWinTab is not an Electron app. It is built with C#, .NET 8, and WinUI 3, with Win32 interop for window enumeration, global hotkeys, live thumbnails, and native shell integration.


Download

The easiest way to install BetterWinTab is to download the latest .exe from GitHub Releases:

Download: https://github.com/sgm1018/BetterWinTab/releases

Releases may include:

  • A Windows installer built with Inno Setup.
  • A portable x64 build.

BetterWinTab supports Windows 10/11.


Requirements For Development

ToolVersion
WindowsWindows 10 19041+ or Windows 11
.NET SDK8.0.x
Visual Studio CodeAny recent version
Inno Setup6.x, only needed to build the installer

Check your SDK:

dotnet --version

Build

BetterWinTab must be built for x64. Building without the platform flag can cause native WinUI dependencies to fail at startup.

dotnet build BetterWinTab.csproj -p:Platform=x64

Build output:

bin\x64\Debug\net8.0-windows10.0.19041.0\

From VS Code, you can also run the predefined task:

Ctrl + Shift + B -> build-x64

Run In Debug

Recommended VS Code task:

Ctrl + Shift + P -> Tasks: Run Task -> run-x64

Manual run:

Stop-Process -Name BetterWinTab -Force -ErrorAction SilentlyContinue
dotnet build BetterWinTab.csproj -p:Platform=x64
Start-Process "bin\x64\Debug\net8.0-windows10.0.19041.0\win-x64\BetterWinTab.exe"

Hot reload:

dotnet watch run --project BetterWinTab.csproj -p:Platform=x64 --runtime win-x64

Once the app starts, press Ctrl + Tab to show the overlay.


Debug With VS Code

Create .vscode/launch.json if needed:

{
  "version": "0.2.0",
  "configurations": [
    {
      "name": "Debug BetterWinTab",
      "type": "coreclr",
      "request": "launch",
      "preLaunchTask": "build-x64",
      "program": "${workspaceFolder}/bin/x64/Debug/net8.0-windows10.0.19041.0/win-x64/BetterWinTab.exe",
      "cwd": "${workspaceFolder}",
      "stopAtEntry": false,
      "console": "internalConsole"
    }
  ]
}

Then press F5 and use breakpoints in the C# files.


Publish

Create a self-contained release build:

dotnet publish BetterWinTab.csproj -p:Platform=x64 -c Release

Publish output:

bin\Release\net8.0-windows10.0.19041.0\win-x64\publish\

Publish profiles are available under Properties/PublishProfiles/ for win-x64, win-x86, and win-arm64.


Deploy / Build The Installer

Publish first:

dotnet publish BetterWinTab.csproj -p:Platform=x64 -c Release

Then compile the installer with Inno Setup:

& "C:\Program Files (x86)\Inno Setup 6\iscc.exe" installer.iss

Installer output:

installer-output\BetterWinTab-Setup-1.0.0-x64.exe

License

BetterWinTab is released under the MIT License.

Built by sgm108.

Star History

Star History Chart