Monitor Profile Switcher
Windows 10 / 11 · x64 · portableWindows 10 / 11 · x64 · przenośny

Your monitor layouts, one shortcut away.

Twoje układy monitorów, jeden skrót od siebie.

Save every arrangement your desk goes through — the TV on HDMI for games, three screens when the laptop is docked, one turned to portrait for reading — and switch between them from the tray or with a keyboard shortcut.

Zapisz każdy układ, przez który przechodzi Twoje biurko — telewizor na HDMI do gier, trzy ekrany po zadokowaniu laptopa, jeden obrócony do pionu do czytania — i przełączaj je z zasobnika systemowego albo skrótem klawiszowym.

No installerBez instalatora No administrator rightsBez uprawnień administratora No .NET to installBez instalowania .NET MIT licenceLicencja MIT

The main window draws every profile to scale before you apply it. This preview switches on its own — or pick a profile.

Główne okno rysuje każdy profil w skali, zanim go zastosujesz. Ten podgląd przełącza się sam — albo wybierz profil.

Two windows, one tray icon

Dwa okna, jedna ikona w zasobniku

Most of the time nothing is on screen. The popup lives on the tray icon; the main window manages profiles, scenes and settings.

Przez większość czasu na ekranie nie ma nic. Popup mieszka na ikonie w zasobniku; główne okno zarządza profilami, scenami i ustawieniami.

The main window: a list of profiles on the left, the selected profile's monitor arrangement drawn to scale on the right
The main window, with a profile's arrangement drawn to scale, its shortcut and the Start with Windows switch.
Główne okno z układem profilu narysowanym w skali, jego skrótem i przełącznikiem „Start with Windows”.
The tray popup listing profiles with their shortcuts
The tray popup: profiles with shortcuts, scenes, and Turn off monitors.
Popup w zasobniku: profile ze skrótami, sceny i wyłączanie monitorów.

What it does

Co potrafi

Profiles, drawn to scale

Profile rysowane w skali

Resolution, refresh rate, position, rotation, per-monitor scale, HDR and which display is primary — saved as a named profile and previewed before you apply it.

Rozdzielczość, odświeżanie, położenie, obrót, skala na monitor, HDR i który ekran jest główny — zapisane jako nazwany profil i podglądane przed zastosowaniem.

Tray popup and global shortcuts

Popup w zasobniku i globalne skróty

Apply a profile from the notification area, from the main window, or with a shortcut that works whether or not a window is open.

Zastosuj profil z obszaru powiadomień, z głównego okna albo skrótem, który działa niezależnie od tego, czy jakieś okno jest otwarte.

An editor with a safety net

Edytor z siatką bezpieczeństwa

Drag monitors into place with snapping, set each display's mode without touching the hardware, then apply behind a 15-second keep-or-revert countdown.

Przeciągaj monitory z przyciąganiem, ustaw tryb każdego ekranu bez dotykania sprzętu, a potem zastosuj za 15-sekundowym odliczaniem zachowaj-albo-cofnij.

Scenes: picture settings, too

Sceny: także ustawienia obrazu

Brightness, contrast, colour preset, picture mode and ICC profile per monitor, sent over DDC/CI. A scene can follow the clock — Night 20:00–07:00 — or ride along with a profile.

Jasność, kontrast, preset kolorów, tryb obrazu i profil ICC na monitor, wysyłane przez DDC/CI. Scena może iść za zegarem — Noc 20:00–07:00 — albo jechać razem z profilem.

Switches by itself when you dock

Przełącza się sam po zadokowaniu

Turn auto-switch on and the profile whose displays are exactly the connected set applies on its own. A tie is reported, never guessed at.

Włącz auto-przełączanie, a profil, którego ekrany dokładnie odpowiadają podłączonym, zastosuje się sam. Remis jest zgłaszany, nigdy zgadywany.

A command line for scripts

Wiersz poleceń do skryptów

MonitorSwitcher.exe saves, loads and prints arrangements and applies scenes without a UI — for scheduled tasks and scripts.

MonitorSwitcher.exe zapisuje, wczytuje i wypisuje układy oraz stosuje sceny bez UI — do zadań harmonogramu i skryptów.

Updates with consent

Aktualizacje za zgodą

Checks for a newer release, shows what changed, and replaces the portable file only after you choose Update now — verified against the release checksums first.

Sprawdza, czy jest nowsze wydanie, pokazuje co się zmieniło i podmienia plik dopiero po wybraniu Update now — wcześniej weryfikując go sumami kontrolnymi wydania.

Portable and per-user

Przenośny i per użytkownik

One file. No installer, no runtime to install, no administrator rights, and nothing in the registry until you switch on Start with Windows yourself.

Jeden plik. Bez instalatora, bez instalowania środowiska, bez uprawnień administratora i nic w rejestrze, dopóki sam nie włączysz „Start with Windows”.

Download

Pobierz

Three files, straight from the release build. The version is shown here because the filenames never change.

Trzy pliki, prosto z builda wydania. Wersja jest pokazana tutaj, bo nazwy plików nigdy się nie zmieniają.

v1.3.0 · released 2026-09-02· wydane 2026-09-02 What's new in this versionCo nowego w tej wersji
MonitorSwitcherGUI.exe
The application: tray icon, main window, profile editor, scenes. This is the one to get.
Aplikacja: ikona w zasobniku, główne okno, edytor profili, sceny. Ten plik jest potrzebny.
39.2 MB DownloadPobierz
MonitorSwitcher.exe
Command-line tool. Optional — put it next to the application and it is updated together with it.
Narzędzie wiersza poleceń. Opcjonalne — połóż je obok aplikacji, a będzie aktualizowane razem z nią.
13.0 MB DownloadPobierz
SHA256SUMS.txt
Checksums of both files, produced by the same build that made them. See how to verify below.
Sumy kontrolne obu plików, wyprodukowane przez ten sam build. Jak weryfikować — niżej.
177 B DownloadPobierz

Filenames deliberately carry no version: Start with Windows points at the file by name, and a renamed executable would silently break autostart for anyone upgrading in place. The in-app updater keeps the names too.

Nazwy plików celowo nie niosą wersji: Start with Windows wskazuje plik po nazwie, a zmieniona nazwa po cichu zepsułaby autostart każdemu, kto aktualizuje w miejscu. Wbudowany updater też zachowuje nazwy.

Before you run it

Zanim uruchomisz

SmartScreen will warn you the first time

SmartScreen ostrzeże za pierwszym razem

The executables are not code-signed, so Windows reports an unrecognised publisher. Choose More infoRun anyway. Before you do, you can confirm the file is the one the release build produced — see the checksum step on the right.

Pliki nie są podpisane, więc Windows zgłasza nieznanego wydawcę. Wybierz Więcej informacjiUruchom mimo to. Zanim to zrobisz, możesz potwierdzić, że plik jest tym, który wyprodukował build wydania — patrz krok z sumą kontrolną obok.

Check the download against the release

Sprawdź pobrany plik względem wydania

Every release ships SHA256SUMS.txt. In PowerShell, in the folder you downloaded to:

Każde wydanie zawiera SHA256SUMS.txt. W PowerShellu, w folderze z pobranymi plikami:

Get-FileHash .\MonitorSwitcherGUI.exe -Algorithm SHA256
# compare the hash with the MonitorSwitcherGUI.exe line in SHA256SUMS.txt

A match means the file is byte for byte what the release build produced. The in-app updater performs the same check before it touches anything.

Zgodność oznacza, że plik jest bajt w bajt tym, co wyprodukował build wydania. Wbudowany updater robi tę samą kontrolę, zanim czegokolwiek dotknie.

There is no installationNie ma instalacji
1

Download

Pobierz

Put MonitorSwitcherGUI.exe in any folder you can write to — your user folder is fine.

Umieść MonitorSwitcherGUI.exe w dowolnym folderze z prawem zapisu — folder użytkownika wystarczy.

2

Run it

Uruchom

It appears as an icon in the notification area. Hover it to see the version.

Pojawi się jako ikona w obszarze powiadomień. Najedź, by zobaczyć wersję.

3

Save a profile

Zapisz profil

Open the main window, save the current layout, give it a shortcut. Optionally: Start with Windows.

Otwórz główne okno, zapisz bieżący układ, nadaj mu skrót. Opcjonalnie: Start with Windows.

Requirements and notesWymagania i uwagi
  • Windows 10 or 11, 64-bitWindows 10 lub 11, 64-bit
  • Self-contained — no .NET runtime to installSamowystarczalny — bez instalowania środowiska .NET
  • Settings live in %APPDATA%\MonitorSwitcher; pass -settings:"D:\Folder" to keep them elsewhereUstawienia leżą w %APPDATA%\MonitorSwitcher; parametr -settings:"D:\Folder" trzyma je gdzie indziej
  • Scenes need monitors that speak DDC/CI; one that does not simply says soSceny wymagają monitorów z DDC/CI; monitor bez niego po prostu to zgłasza
  • If every monitor ever ends up disabled, boot into safe mode to recoverJeśli kiedykolwiek wszystkie monitory zostaną wyłączone, uruchom tryb awaryjny, by to naprawić

What's new in 1.3.0

Co nowego w 1.3.0

The release notes, as written for this version.

Notki wydania w brzmieniu spisanym dla tej wersji (po angielsku, jak sama aplikacja).

Show the release notesPokaż notki wydania · 1.3.0 · 2026-09-02

Added

  • The app updates itself — with consent, not silence. Shortly after startup (and on demand from Check for updates in the main window) Monitor Switcher asks the project website, ms.devex.ovh, whether a newer release exists; a settings toggle turns the automatic check off entirely. A newer version shows a notification and a dialog with the release notes and an explicit choice — Update now, Skip this version, or Later. Nothing is ever downloaded unattended. Updating fetches the new executables from the website over HTTPS only, verifies every file against the release's SHA256SUMS.txt before anything on disk is touched, swaps the running MonitorSwitcherGUI.exe in place (a MonitorSwitcher.exe sitting beside it is updated together, or not at all), and restarts — keeping the portable model intact: no installer, no elevation, filenames unchanged so autostart and shortcuts keep working. The replaced version stays beside the app as MonitorSwitcherGUI.exe.old until the new one has started once; renaming it back is the rollback. A folder that refuses writes gets an explanation, never an elevation prompt.
  • Scenes: monitor picture settings, switchable like profiles. A scene is a named set of per-monitor picture settings — brightness, contrast, color preset, and the monitor's own picture mode — sent to the monitors over DDC/CI. Scenes live alongside layout profiles and apply independently of them: from a new APPLY SCENE section in the tray popup, with their own global shortcuts, or from the new scene manager window. A layout profile can also name a default scene, applied together with the profile on every path — shortcut, tray, main window and auto-switch alike. The scene editor shows one card per connected monitor with only the controls that monitor's MCCS capabilities declare, previews every change on the monitor as it is made (Cancel puts the previous values back), and keeps settings for monitors that are not currently attached. Applying is best-effort in the established way: what a monitor will not take becomes a note, never a failed apply. The CLI grows -scene:{name}, and -load applies a profile's linked scene after the arrangement. Scenes are stored as JSON files under %APPDATA%\MonitorSwitcher\Scenes; the profile format is untouched except for the optional link, so existing profiles keep their exact bytes.
  • Scenes follow the clock. A scene can carry time segments — Default plus any number of named windows like Night 20:00–07:00 (windows may pass midnight) — each with its own complete set of picture settings. Applying the scene picks the segment the clock selects; while the scene stays active, the boundaries are watched and the monitors switch segments by themselves, surviving standby and clock changes; starting the application re-applies the active scene's current segment, so an evening boot comes up dimmed. In the editor the segments sit above the monitor cards as chips — clicking one edits it and previews it on the monitors, an All monitors card sets brightness and contrast everywhere at once, and Cancel still restores everything captured when the window opened. Scenes saved without segments keep their exact bytes.
  • Scenes can switch the ICC color profile. Each monitor card in the scene editor gains a Color profile row: a combo of the display-class ICC/ICM profiles installed on the machine. Applying the scene makes the chosen profile that monitor's per-user default — Windows Color System, current-user scope, no elevation — alongside the DDC/CI settings, and each time segment can carry its own (a warmer profile at night, say). Best-effort like everything else: a profile this machine does not have shows by name and becomes a note on apply, never a failed scene.
  • A website. ms.devex.ovh presents the application and always offers the current release for download, with the checksums beside it; every release is published there by the release workflow. The updater reads the site's manifest rather than GitHub's API, which is not reachable from outside this private repository.
  • Profiles travel both ways: Import, and Duplicate. Export gains its inverse: Import profile… sits in the manager's left column — always visible, so it works on a fresh install with nothing saved yet — picks a .json, and checks it actually describes a monitor layout before anything is copied: a broken file and another application's JSON get separate, specific errors instead of a blank entry in the list. The name is asked for (prefilled from the file name); a clash offers Replace or a different name, with Enter taking the safe Cancel. The file is copied byte for byte — its auto-apply flag and scene link ride along — and a profile for hardware that is not attached imports, lists and previews normally, with apply refusing in the established way until the displays are back. Duplicate… copies the selected profile under a new name (<name> copy suggested) so a variant does not need the layout re-captured; the copy keeps the profile's settings but not its keyboard shortcut.