Open Source · GPL-3.0 · macOS 14+

Your displays,
under control.

A lightweight, open-source macOS menu bar app for managing displays and creating virtual monitors.

< 2 MB
Download size
GPL-3.0
License
Universal
Apple Silicon & Intel

Everything you need, nothing you don't

Simple display management that lives in your menu bar and stays out of the way.

Enable / Disable Displays

Toggle monitors on and off without unplugging them. Handles edge cases like disabling the main display safely.

Virtual Displays

Create virtual monitors with custom resolutions and device presets — iPhone, iPad, Mac, TV, and more.

Set Main Display

Change your primary monitor from the menu bar. Menu bar and dock reposition automatically.

HiDPI Support

Create Retina virtual displays. HiDPI and standard modes properly grouped and labeled.

Sleep / Wake Safe

Automatically handles display state across sleep cycles. Your setup is restored without manual intervention.

ColorSync Fix

Prevents the ColorSync deadlock with identical monitors on macOS Sequoia, and gives virtual displays a stable identity so they don't leak ICC profiles or keep colorsyncd busy.

Real monitors, created in software

macOS limits resolution when no physical monitor is connected. SimpleDisplay creates virtual displays that the system treats as real screens — perfect for remote access, testing, and headless setups.

Remote access

Full resolution over VNC, Screen Sharing, Parsec, AnyDesk, or TeamViewer.

Headless Macs

Run Mac minis and Mac Studios with no monitor attached at any resolution.

Responsive testing

Test layouts at specific device resolutions without extra hardware.

Hidden screens

Keep apps running on a virtual display while working on your main screen.

iPhone iPad MacBook 1080p 4K Ultrawide Custom
Created "iPad Pro 11" 2420×1668 @ 60Hz
Reconfigured to 2732×2048 @ 60Hz

Displays:
  ● Mi Monitor    3440×1440  main
  ○ J560T09 (1)  disabled
  ● iPad Pro 11"  2732×2048  virtual

Built on Apple's display APIs

SimpleDisplay uses macOS private frameworks to give you control that the built-in settings don't offer.

Virtual monitors

Uses Apple's private CGVirtualDisplay API to create displays that appear as real monitors to macOS — useful for screen sharing specific resolutions, testing responsive layouts, or keeping apps running on a "hidden" screen.

Disabling a display

Mirrors it to another active display via CGConfigureDisplayMirrorOfDisplay, effectively turning it off. This is reversed by removing the mirror relationship.

Why private APIs?

These capabilities aren't available through public frameworks. SimpleDisplay can't be distributed on the Mac App Store, but it can do things no App Store app can.

// Virtual display creation
let desc = CGVirtualDisplayDescriptor()
desc.name = "iPad Pro 11"

// Display toggling via mirror
CGConfigureDisplayMirrorOfDisplay(
  config, targetID, mirrorID
)

Scriptable from the terminal

Every action is also a simpledisplay:// URL, and the simpledisplayctl command wraps them for shell scripts, Shortcuts, launchd agents, or an SSH session into a Mac with no monitor attached. The URL launches the app if it isn't running, so there is no extra background process.

Command line

Create, resize and remove virtual displays by name or ID with simpledisplayctl. Install it from a checkout with make cli-install.

URL scheme

open, create, remove, reconfigure, enable, disable and status. Every value is validated before the app acts on it, and malformed URLs show a one-line banner instead of failing silently.

Remote Macs

Run the CLI over SSH to drive the SimpleDisplay running on that Mac, for example to set a resolution before connecting with Screen Sharing.

Read the automation docs
# create, resize and remove virtual displays by name or id
$ simpledisplayctl create --width 2732 --height 2048 --name "iPad Pro" --hidpi
$ simpledisplayctl reconfigure --id 3 --width 1600 --height 1200
$ simpledisplayctl remove --name "iPad Pro"

# the same actions as URLs, from anything that can open one
$ open "simpledisplay://disable?name=J560T09"
$ open "simpledisplay://status" # → /tmp/simpledisplay-status.json

# drive a headless Mac over SSH
$ ssh user@mac "simpledisplayctl create --width 1920 --height 1080 --name Remote"

Up and running in seconds

Download the DMG or build from source — your choice.

Recommended

Download

Grab the latest DMG from GitHub Releases. Open it, drag to Applications, and you're done.

First launch

macOS will block the app since it isn't notarized. Go to System Settings → Privacy & Security and click Open Anyway. This only needs to be done once.

macOS Gatekeeper — click Open Anyway
Download latest release
For developers

Build from source

Clone the repo and build with a single command. Requires Xcode Command Line Tools.

# clone & build
git clone https://github.com/SamuelRioTz/SimpleDisplay.git
cd SimpleDisplay
make dmg

# run
open .build/SimpleDisplay.app

# optional: install the CLI
make cli-install
View on GitHub

Known limitations

SimpleDisplay uses private Apple APIs. Here's what that means in practice.

Cannot be distributed on the Mac App Store — private APIs are not allowed by Apple's review guidelines.

Virtual display refresh rate is capped at 60 Hz (API limitation).

Enable/disable and main-display state are tracked by a stable per-display UUID, but the identical-monitor ColorSync fix and simpledisplayctl remove --name match displays by name, so two monitors with the same name may not be distinguishable there.

The CGVirtualDisplay API may change or be removed in future macOS versions.

GPL-3.0

Built in the open

SimpleDisplay is free software. Built with insights from the macOS display management community, including BetterDisplay, DeskPad, and displayplacer. Contributions of all kinds are welcome.