Automatically apply different color themes for local and Remote-SSH windows, so you
can tell your environments apart at a glance and avoid editing in the wrong one.
Out of the box it uses a light theme locally and a dark theme on remote, but both are
fully customizable — pick any installed theme for either context.
Features
Applies your chosen theme based on whether the window is local or connected via Remote-SSH.
Works on every transition: opening an SSH window, reconnecting, and closing the
connection to return local.
Per-window status bar badge: a highlighted SSH: <host> badge in remote windows and
a Local badge in local windows, so you can tell windows apart even side by side.
Theme follows the active window: when a window gains focus, its theme is applied.
Compatible with any color theme (built-in or third-party).
Lightweight: zero runtime dependencies, only the VS Code native API.
How windows are distinguished
workbench.colorTheme is a single global setting — VS Code has no per-window theme,
so two windows cannot literally show two themes at the exact same time. This extension
gives you the distinction in two complementary ways:
Status bar badge (per window). Each window shows its own badge, so both windows
display their correct badge at the same time, even side by side.
Theme follows the active window. The window you are working in is always themed
correctly.
Set remoteThemeSwitcher.reapplyOnFocus to false if you prefer the extension to never
re-apply the theme after startup.
From a .vsix: Extensions view -> ... menu -> Install from VSIX...
Configuration
Setting
Meaning
Default
remoteThemeSwitcher.localTheme
Theme applied in local windows
"Light Modern"
remoteThemeSwitcher.remoteTheme
Theme applied in Remote-SSH windows
"Dark Modern"
remoteThemeSwitcher.statusBarIndicator
Show the Local / SSH: host status bar badge
true
remoteThemeSwitcher.reapplyOnFocus
Re-apply the theme when a window gains focus
true
To pick a theme:
Settings dropdown — a few built-in themes that ship with VS Code.
Command palette — Remote Theme Switcher: Select Local Theme / Select Remote
Theme lists every installed theme (including third-party) and writes your pick to the
setting.
settings.json — set an exact theme name, or "" for automatic (an installed light
theme locally, a dark theme remotely):
{
"remoteThemeSwitcher.localTheme": "Light Modern",
"remoteThemeSwitcher.remoteTheme": "One Dark Pro"
}
Known limitations
One global theme: two windows cannot display different themes at the same instant
(see above); the status bar badge and focus re-apply are the workaround.
Brief flash: the theme is applied after startup, so the previous theme may flash
momentarily when a window opens.
Remote-SSH only: by default only 'ssh-remote' counts as remote. To also treat WSL
or Dev Containers as remote, edit isRemoteSshContext() in extension.js.