Back to Portfolio

Monitor Master

Windows system-tray utility that saves named monitor configurations — resolution, rotation, and position — and switches between them with one click

Available for Windows 10 / 11 — per-user install, no admin rights required
Monitor Master feature graphic — Windows tray icon, scenario menu, and quick actions

Overview

Monitor Master is a Windows system-tray utility that saves named monitor configurations — “scenarios” — and switches between them with one click. Turn off secondary monitors before a remote-desktop session, put every screen to sleep on demand, and restore the full layout — resolution, rotation, and position — exactly as it was, from the tray.

It came out of a concrete annoyance: dropping to a single screen before remote-controlling a PC from away, then putting the multi-monitor setup back without hand-fixing every display. There is no account, no telemetry, and no network access; it installs per-user with no administrator rights and removes cleanly from Settings › Apps.

Win 10/11
Platform
Per-user
No admin install
Zero
Telemetry & network
PowerShell
Native Win32 stack

Built by Howarth Tech Solutions. Monitor Master bundles MultiMonitorTool (© Nir Sofer, NirSoft), redistributed unmodified under its freeware licence — not affiliated with or endorsed by NirSoft. “TeamViewer” is a trademark of its owner; no affiliation.

Monitor Master system-tray menu showing saved scenarios and quick actions
Tray menu — saved scenarios and one-click quick actions
Monitor Master About dialog showing version, diagnostics copy button, and built-in help
About dialog — version, one-click diagnostics, built-in help

Tech Stack

A native Windows desktop app built entirely in PowerShell 5.1, using Win32 interop via embedded C# types to drive display topology and the Windows Forms tray UI.

PowerShell 5.1
Application scripting layer and installer/uninstaller
Windows Forms + System.Drawing
Tray icon, context menu, About dialog, drawn app icon
Win32 P/Invoke (user32)
EnumDisplayDevices, EnumDisplaySettings, ChangeDisplaySettingsEx, SC_MONITORPOWER — via embedded C# Add-Type
NirSoft MultiMonitorTool
Bundled (freeware, redistributed unmodified) for reliable monitor enable/disable where the native Win32 path fails
Windows 10 / 11
Per-user HKCU install — Settings › Apps entry, no HKLM writes, no admin rights
tools/verify.ps1
Automated verification gate: parses scripts, checks tray↔engine action contract, static form-control overflow check, smoke-runs display enumeration against real hardware
Architecture note

All Win32 display enumeration runs inside an embedded C# type rather than directly in PowerShell 5.1 — because PowerShell mis-marshals DISPLAY_DEVICE when passed by [ref]. Monitors are tracked by Short Monitor ID, not \\.\DISPLAYn, which Windows reassigns across a disable/enable cycle. The uninstaller self-relocates to %TEMP% so it can delete its own directory.

Key Features

Everything you need to manage a multi-monitor Windows setup without touching Display Settings.

🖥

Monitor Scenarios

  • Save which monitors are on, which is primary, and every screen’s resolution, orientation, and position
  • Switch between saved setups from the tray menu with one click
  • Exact restore — a rotated portrait panel comes back rotated and in place, not at a default mode
  • Scenarios are named and persist across reboots

One-Click Quick Actions

  • All monitors on — enable every connected display immediately
  • Primary monitor only — drop to a single screen for remote-desktop sessions
  • Put monitors to sleep — blank all displays without locking the PC
  • Accessible directly from the tray; left- or right-click opens the menu
🔴

State-Aware Tray Icon

  • Crowned monitor icon whose screen is lit when all displays are on and dark when some are disabled
  • Always-visible status at a glance without opening the menu
  • App icon drawn entirely in code and written to a hand-assembled multi-size .ico (classic DIB ICONDIR)
📋

Built-In Diagnostics

  • One click copies Windows build, GPU and driver, DPI, every monitor and its current mode, and the recent log to the clipboard
  • Self-contained bug-report path with nothing transmitted
  • No external service or account required to file a report
🔒

Clean Install / Uninstall

  • Per-user install into %LOCALAPPDATA% with no administrator rights
  • Real Settings › Apps entry — removes cleanly like any packaged app
  • Start-with-Windows toggle with no registry hacks; no background services
  • No account, no telemetry, no network access of any kind

Automated Verification Gate

  • tools/verify.ps1 parses every script and asserts the tray↔engine action contract
  • Statically checks that no dialog control overflows its form
  • Smoke-runs a read-only display enumeration against real hardware
  • Runs before every commit — no change ships without passing the gate

Technical Highlights

The engineering that turns a scripting stack into a polished, installable Windows product.

🖥

Win32 Display Control via P/Invoke from PowerShell

Monitor enumeration and display-mode changes run through an embedded C# type (Add-Type) rather than directly in PowerShell, because PowerShell 5.1 mis-marshals DISPLAY_DEVICE by [ref]. Enable/disable is delegated to NirSoft MultiMonitorTool for a documented reason: the native ChangeDisplaySettingsEx path can disable a monitor but cannot reliably re-enable it, and the modern SetDisplayConfig topology path fails the same way.

🔌

Stable Hardware Identity Across Disable/Enable Cycles

Monitors are tracked by Short Monitor ID rather than \\.\DISPLAYn, which Windows reassigns when a monitor is disabled and re-enabled. A disabled monitor reports a blank ID, so the engine enables by index and disables by ID — then reapplies the saved layout. A multi-pass enable loop verifies each panel actually returned, and a never-leave-zero-displays safety net turns everything back on rather than blanking the machine.

🖼

Drawn App Icon in Code (Classic DIB ICONDIR)

The app icon is drawn procedurally in System.Drawing at multiple sizes and written to a hand-assembled multi-size .ico using the classic DIB ICONDIR binary format — because GDI+ cannot decode PNG-in-ICO at runtime. This avoids a dependency on external icon editors or design tooling.

📦

Per-User Installer with Real Settings › Apps Entry

The installer copies files to %LOCALAPPDATA%, writes an HKCU Settings › Apps registration, and requires no administrator rights. The uninstaller self-relocates to %TEMP% so it can delete its own directory without locking itself. A bundled third-party dependency (MultiMonitorTool) is included strictly to the letter of its freeware licence.

Automated Verification Gate Before Every Commit

tools/verify.ps1 parses every script, asserts the tray↔engine action contract, statically checks that no dialog control overflows its form, and smoke-runs a read-only display enumeration against real hardware. Nothing ships without passing the gate. This is the same practice applied to client deliverables — the verification step is first-class, not an afterthought.

What This Project Demonstrates

Native Windows desktop engineering delivered in a scripting stack — Win32 interop, display-topology control, and a polished WinForms tray UX — taken all the way to a real, installable product: a drawn app icon, a Settings › Apps entry, a bundled dependency handled correctly under its licence, a built-in diagnostics path, and an automated check that gates every change. It shows the ability to carry a small personal utility through to a distributable, support-ready release rather than leaving it as a script.

🖥
Win32 Interop from a Scripting Stack
Display-topology control via P/Invoke from PowerShell through embedded C# — with documented reasons for every platform-quirk workaround
📦
Real Packaging Without an Installer Framework
Per-user install, Settings › Apps registration, Start-with-Windows toggle, and a self-relocating uninstaller — no NSIS, no WiX, no admin
Automated Verification as a First-Class Gate
Static contract checks, form-control overflow detection, and real-hardware smoke tests run before every commit

Need a custom Windows desktop utility?

Monitor Master shows what a small Windows tool looks like when it’s built as a proper product — Win32 interop, real packaging, a clean install/uninstall path, and an automated verification gate. If you need a custom desktop utility, internal tool, or Windows automation built to the same standard, let’s talk.

Get In Touch See More Work

Frequently asked questions

What is Monitor Master?

Monitor Master is a Windows 10/11 system-tray utility that saves named monitor configurations — resolution, rotation, and position — and switches between them with one click. It installs per-user with no administrator rights and has no telemetry or network access.

Is Monitor Master affiliated with NirSoft or MultiMonitorTool?

No. Monitor Master bundles MultiMonitorTool (© Nir Sofer, NirSoft), redistributed unmodified under its freeware licence, but is not affiliated with or endorsed by NirSoft.

Can you build a custom Windows desktop utility or automation tool?

Yes — native Windows desktop apps, Win32 interop, and PowerShell-based tooling are within scope. See our software development service to discuss your needs.

Related services & work

Want something like this built?

Tell us what you have in mind and we'll come back with an approach and a flat quote — no obligation.

Get a free quote See more work