A minimal macOS menu-bar app that forces HiDPI ("Retina-sharp") scaled resolutions on external displays — the thing macOS won't offer you natively on most non-Apple monitors and ultrawides.
It works by creating a hidden virtual HiDPI display (via CoreGraphics'
CGVirtualDisplay private API) and hardware-mirroring your physical display
onto it, so the desktop is rendered at 2× and cleanly scaled to the panel. This
is the same technique BetterDisplay / BetterDummy use, and it works on both
Apple Silicon and Intel.
The virtual-display engine is adapted from sammcj/force-hidpi (MIT License).
./bundle.sh # builds CrispDisplay.app
open CrispDisplay.app # launches it into the menu barOr for development:
swift build && .build/debug/CrispDisplay
swift run CrispDisplay --list # print detected displays + candidate modes, no changesMove CrispDisplay.app to /Applications, then enable Launch at Login from
the app's own menu (below) so it starts automatically and reapplies your saved
resolutions.
Click the ✨ menu-bar icon. Each external display shows:
- Native (off) — restore the normal, non-HiDPI output (and forget the saved choice for that display).
- A list of "looks like W×H" HiDPI resolutions, from largest UI to most screen space. The bottom one (native, HiDPI) renders your panel's own native resolution but Retina-sharp — usually the sweet spot for ultrawides.
- A ★ marks the resolution saved as this display's persistent choice.
Pick one and the screen switches. A Keep / Revert countdown appears — if you don't confirm within 15 seconds (e.g. the screen went black), it auto-reverts. Pressing Keep saves the choice so it's reapplied automatically on relaunch, login, and hot-plug.
The menu also has Fix Flickering / Redraw Mirror, Restore All to Native (revert and forget every display) and Launch at Login (start CrispDisplay at boot).
A mirror established while macOS is still settling its display configuration can land in a degraded compositing state — the desktop wallpaper flickers or dims while app windows render normally. CrispDisplay settles this automatically after launch, wake, and login, but if you ever see it, pick Fix Flickering / Redraw Mirror from the menu to re-assert the mode (and rebuild the mirror if needed).
Forcing modes through private APIs can go wrong — a bad mode, or a macOS update that changes display behaviour, can leave a screen black or garbled. CrispDisplay has three layers guarding against getting stranded:
- Keep/Revert countdown on every manual change — auto-reverts in 15s if you can't confirm.
- Boot guard. If an auto-reapply at login ever hangs, crashes, or forces you to hard-reboot a black screen, the next launch detects the incomplete attempt, skips auto-reapply, and starts at native resolution. A broken apply can strand you at most once — a reboot always recovers.
- OS-update guard. Each saved mode records the macOS build it worked on. If the build changes (any OS update), the next login reapply runs through the 15-second countdown instead of applying silently — so if the update broke the display path, it auto-reverts.
Emergency quit — ⌃⌥⌘Esc. If a display is ever stranded (black or garbled) and you can't see the menu, press Control-Option-Command-Escape. It's a system-wide hotkey that fires even when CrispDisplay isn't the active app and even when the screen shows nothing, because it's handled at the event level rather than through on-screen UI. It tears down every virtual display — restoring native output — and quits. No Accessibility permission required. (It's the sibling of the system Force Quit shortcut ⌥⌘Esc, and deliberately kept clear of Lock Screen ⌃⌘Q.)
From the command line. Same effect, if you'd rather use a terminal (or SSH in from another machine when every local screen is unusable):
/Applications/CrispDisplay.app/Contents/MacOS/CrispDisplay --quit
# or, as a fallback:
pkill -x CrispDisplayLaunch at Login: run only one instance. If two copies (e.g. a Homebrew install and a hand-built
.app) both launch at login, they race on the boot guard and can leave duplicate login items. Keep Launch at Login enabled on just one copy.
- Private APIs.
CGVirtualDisplayisn't a public Apple API; a future macOS release could change or break it. It's the same API DisplayLink uses, so it's reasonably stable, but there are no guarantees. - Must stay running. The virtual display exists only while the app is running. Quit it and displays revert to native. Enable Launch at Login so it starts at boot and reapplies your saved modes automatically.
- Refresh rate / HDR follow the mirror source; this minimal build doesn't expose separate controls for them.
For a chosen "looks like" W×H, the virtual display is created with a
2W × 2H backing store and hiDPI = 1, so the compositor treats it as a 2×
Retina mode showing W×H points. The physical panel is mirrored to it and
hardware-scales the backing store down to its native pixels — so you get more
usable space and sharp text, instead of the soft result you get from a plain
low-DPI scaled mode.