Span three different 1440p monitors into a single 7680×1440 @ 144 Hz NVIDIA Surround display, with one‑click shortcuts to flip between Surround and normal extended mode — using the free, open‑source DisplayMagician.
It also documents the fix for the very common "Surround only offers 60 Hz" problem you hit when your three panels aren't identical, and a couple of non‑obvious gotchas that cost me an evening.
Works for any 3‑monitor NVIDIA Surround setup — just substitute your own resolutions/refresh.
| Role | Monitor | Native max |
|---|---|---|
| Left | LG 27GL850 | 2560×1440 @ 144 Hz |
| Middle (primary) | Dell S2721DGF | 2560×1440 @ 165 Hz |
| Right | Acer VG270U P | 2560×1440 @ 144 Hz |
GPU: NVIDIA RTX 5080 (driver 610.47), Windows 11. All three on DisplayPort.
Goal — two shortcuts:
- Surround → one 7680×1440 @ 144 Hz display
- Default → three independent displays at native refresh (Dell 165 Hz, LG/Acer 144 Hz)
NVIDIA provides no command line or shortcut to toggle Surround. Tools that can (DisplayMagician, Helios) wrap NVIDIA's NVAPI "Mosaic" interface: you build Surround once in the NVIDIA Control Panel, the tool snapshots that state into a named profile, and a shortcut replays it. The tool doesn't compute the layout — it restores a saved one.
Grab the latest installer from the
releases page. It runs in the
system tray. (No winget package as of writing.)
If your three panels aren't identical, the Surround wizard will likely only offer 60 Hz.
Why: Surround fuses the panels into one logical display, which requires all three to use an identical display timing — not just the same resolution and refresh number, but the same blanking, sync widths, and sync polarities. Each panel's native (Automatic) timing is different, so NVIDIA falls back to the one mode they all implement the same: generic 60 Hz.
Here are my three panels' native timings (see monitor_default_settings/ for the screenshots):
| Panel | Shown | H total | V total | V‑sync polarity | Pixel clock |
|---|---|---|---|---|---|
| LG 27GL850 | 144 Hz | 2640 | 1496 | Negative | 568.72 MHz |
| Dell S2721DGF | 165 Hz | 2640 | 1480 | Negative | 644.67 MHz |
| Acer VG270U P | 144 Hz | 2720 | 1500 | Positive | 587.52 MHz |
Different totals, different sync widths, opposite V‑sync polarity on the Acer → no common 144 Hz timing.
The fix — give all three the same formula‑based timing:
For each monitor:
- NVIDIA Control Panel → Display → Change resolution.
- Select the monitor → Customize… → ☑ Enable resolutions not exposed by the display → Create Custom Resolution.
- Set 2560×1440, 144 Hz, Progressive, 32‑bit.
- Timing → Standard: change
Automatic→CVT reduced blank. ← the key step. It computes timing purely from resolution + refresh, so all three panels get identical timing. - Test → keep it.
- Repeat on the other two, then set each monitor to the new custom 144 Hz mode.
After this, the Surround wizard will offer 144 Hz. (If a panel rejects CVT‑RB, use Manual and copy one panel's exact timing onto all three.)
- In DisplayMagician → Display Profiles, save your current 3‑monitor layout as
Default→ Save to Desktop. - NVIDIA Control Panel → Configure Surround, PhysX → ☑ Span displays with Surround → Configure. Arrange the panels left→right, pick 7680×1440 @ 144 Hz, bezel correction off, Apply.
- Alt‑Tab to DisplayMagician → save the spanned layout as
Surround→ Save to Desktop.
You now have two desktop shortcuts, each of which just runs:
DisplayMagician.exe ChangeProfile "<PROFILE-UUID>"
This one silently wasted an hour. Symptom: double‑clicking a shortcut does nothing — no error, no change.
Cause: DisplayMagician's exe is asInvoker (no admin needed). But if an instance is already
running elevated (e.g. the installer auto‑launched it under the elevated installer), your
normally‑launched shortcut starts a non‑elevated instance, which tries to hand the job to the
elevated one — and Windows UIPI blocks a normal‑privilege process from driving an elevated
one. The switch no‑ops.
Fix / avoid:
- Make sure DisplayMagician is not running as administrator (Task Manager → Details → check, or just exit it from the tray and relaunch normally).
- Don't tick Run as administrator on the exe or the shortcuts.
- If you enable "start with Windows," make sure it isn't an elevated scheduled task.
With everything at the same (normal) privilege level, the shortcuts toggle correctly.
DisplayMagician 2.7.2.1 occasionally leaves an unresponsive window after a successful profile switch (issue #351) — you have to close it via Task Manager. The display change itself applies fine; only the window hangs.
Workaround: tools/surround-switch.ps1 launches the switch, waits
for it to actually apply, then closes any lingering DisplayMagician window. Point each shortcut
at it instead of calling DisplayMagician.exe directly:
powershell -NoProfile -WindowStyle Hidden -ExecutionPolicy Bypass \
-File surround-switch.ps1 -Uuid <PROFILE-UUID> -ExpectedWidth <width>
(<width> is the GPU's horizontal resolution once the profile is applied — e.g. 7680 for the
spanned display, 2560 for the 3-monitor layout. Find your profile UUIDs in
%LOCALAPPDATA%\DisplayMagician\Profiles\DisplayProfiles.json.)
Important: the script waits ~20 s before force-closing. DisplayMagician saves its
Settings.json during shutdown, and killing it too early corrupts that file ("Error loading
the Program Settings" on next launch) — the delay guarantees the save finishes first. Setting
ShowSplashScreen: false and MinimiseOnStart: true in DisplayMagician's settings makes the
brief window unobtrusive.
High‑refresh Surround sometimes drops back to 60 Hz after a reboot because the custom timing doesn't persist (the profile replays the mode, not the timing). The timings live in the registry, so you can back them up and restore + reboot if it ever happens:
- Custom‑resolution timings:
CustomDisplay(binary) underHKLM\SYSTEM\CurrentControlSet\Control\Video\{ADAPTER-GUID}\0000..\0003 - Surround config: the
MosaicRegistryData/MosaicConfig/MosaicResolutionPruningvalues in the same keys - Persisted applied modes:
ModePersistence,NV_Modes
Back them up with:
reg export "HKLM\SYSTEM\CurrentControlSet\Control\Video\{ADAPTER-GUID}" backup.reg /y
(The actual dumps are machine‑specific — they encode your hardware/EDID — so they are not included in this repo.) Note the adapter GUID changes after a clean driver reinstall (DDU), in which case you just recreate the custom resolutions.
- Each toggle takes ~10–25 seconds with several black‑screen flashes — that's normal for enabling/disabling Surround, not a failure.
- Surround forces a common refresh, so the 165 Hz Dell runs at 144 Hz only while Surround is active; it returns to 165 Hz in Default mode.
- DisplayMagician's log may show
screen width is 0/Mosaic … NOT VALIDlines — these are harmless; the apply still reports success.
-
monitor_default_settings/— the per‑monitor custom‑resolution timing screenshots I used. -
DisplayMagician_Profiles/— notes on the two shortcuts (the actual.lnkfiles are kept local; they embed machine‑specific tracking data). -
tools/surround-switch.ps1- shortcut wrapper that auto-closes the hung DisplayMagician window after a switch (issue #351 workaround). The per-profile.lnkfiles are kept local.
DisplayMagician by Terry MacDonald, derived from Helios Display Management by Soroush Falahati.