Draw on your screen while you record.
A tiny macOS menu bar app for drawing highlight boxes on screen while recording or presenting.
Press a hotkey, drag a box around whatever you're talking about, and it fades away on its own. No editing pass, no timeline annotations.
- Six drawing tools — freehand, arrow, rectangle, ellipse, text, and a translucent highlighter, each one key away.
- Marks fade on their own — draw, keep talking, and the ink clears itself; no undo pass to clean up before the next take.
- Spotlight mode dims the screen to a soft-edged circle that follows the pointer, for pulling attention to one part of a demo without a drawing tool.
- Click-through hands clicks and scrolling straight to the app underneath, so you can keep scrolling the page you're demoing without leaving draw mode.
- Global hotkey, no Accessibility permission — a menu bar icon and ⌃⌥⌘B, nothing else running in the background.
Requires macOS 13 or later. The build is universal, so it runs natively on both Apple silicon and Intel.
brew install --cask Orva-Studio/tap/screenboxHomebrew clears the quarantine flag itself as part of the install, so there's
no extra step here — that's only needed for the manual DMG path below, since a
browser download gets quarantined by Gatekeeper in a way brew doesn't
trigger.
1. Install it. Grab ScreenBox-x.y.z.dmg from the
latest release, open
it, and drag ScreenBox to Applications. (The .zip next to it is the same app,
for scripted installs.)
2. Clear the quarantine flag. This is the command you have to run after installing from the DMG:
xattr -dr com.apple.quarantine /Applications/ScreenBox.appWithout it macOS refuses to open the app — it's only ad-hoc signed, there's no Apple Developer account behind it, so anything downloaded gets quarantined. You only do this once. (If you'd rather not use the terminal: right-click the app and choose Open, then confirm — on Ventura and later you may need System Settings → Privacy & Security → Open Anyway instead.)
3. Launch it. Double-click ScreenBox in Applications. Nothing appears in the Dock and no window opens — ScreenBox runs as a menu bar app, so the only sign it's running is the box icon up in the menu bar. (It won't show up in ⌘-Tab either.) Then press ⌃⌥⌘B to draw.
There's no installer, no background daemon, and no Accessibility permission to grant — the app is a menu bar icon and a global hotkey, nothing else. To have it start with your Mac, add it to System Settings → General → Login Items.
To uninstall, quit it from the menu bar and drag /Applications/ScreenBox.app
to the trash; defaults delete local.screenbox clears its saved preferences.
./build.sh
open build/ScreenBox.appRequires the Swift toolchain (Xcode or Command Line Tools). No dependencies.
To keep a build you made yourself, drag build/ScreenBox.app to /Applications
— a local build isn't quarantined, so it opens without the step above.
⌃⌥⌘B toggles draw mode on whichever screen the mouse is on. ⌃⌥⌘F toggles fade-out from anywhere, without entering draw mode first.
While drawing:
| Key | Action |
|---|---|
| drag | draw with the current tool |
P A R O T H |
freehand / arrow / rectangle / ellipse / text / highlighter |
1–5 |
blue / red / green / yellow / purple |
S |
toggle the spotlight |
B |
show/hide the toolbar |
X |
click through — let clicks and scrolling reach the app underneath |
[ ] |
thinner / thicker stroke (highlighter size while it's selected, spotlight size while it's up) |
− = |
less / more corner radius |
F |
toggle fade-out on/off (⌃⌥⌘F from anywhere) |
⌘Z |
undo last mark |
C |
clear all, stay in draw mode |
esc |
clear and exit draw mode |
The highlighter drags a wide translucent band in the current colour, so
whatever it covers still reads through — yellow over a line of code or a
paragraph works the way you'd expect. Its size is independent of the pen's
stroke thickness — resize it with [ and ] while it's selected, or pick a
size from Highlighter Size in the menu.
The spotlight dims the whole screen except a soft-edged circle that follows
the pointer, for pulling attention to one part of a demo. It's a mode, not a
tool: every drawing tool still works while it's on. [ and ] resize it, or
pick a size from Spotlight Size in the menu.
B hides the floating toolbar for a clean recording and brings it back —
every tool, colour and mode on it has a key equivalent, so nothing is lost while
it's away. The state is saved like the other preferences, and Show Toolbar
in the menu finds it again if you forget the key.
Click through (X, the toolbar button, or ⌃⌥⌘X from anywhere) hands
clicks and scrolling back to whatever is underneath, so you can scroll the page
you're demoing without leaving draw mode. Existing marks stay on screen; you
just can't draw new ones until it's off. The menu bar icon changes while it's
active, since clicks going straight through is otherwise indistinguishable from
having exited — and the toolbar itself dims to a translucent outline, since
that's the thing you're actually looking at.
Because every click passes through, the way back can't be a click on the
overlay — use the global ⌃⌥⌘X, the X key (while ScreenBox still has
focus), or the toolbar button, which is a separate window and keeps taking
clicks — or Click Through in the menu bar, which is where the changed icon
is pointing anyway. Hiding the toolbar with B costs you the button; the other
three still work. Leaving draw mode clears it too.
By default the pointer is left alone in draw mode — no crosshair, no I-beam — so a recording doesn't give away that an annotation tool is running. Turn off Keep Normal Cursor in the menu if you'd rather have the crosshair back.
⌘Zonly applies to marks still on screen. With fade on (the default) a mark is gone about a third of a second after you release the mouse, so there is usually nothing left to undo. PressF(or ⌃⌥⌘F) to turn fade off first.
Keyboard Shortcuts in the menu opens the same table as a window, so the reference is one click away without leaving the app. About ScreenBox shows the version and links back here.
Colour, thickness, corner radius, fade speed, and fade on/off all live in the menu bar and are saved automatically — change them however you like and they'll be the same next launch. Keyboard changes made mid-draw persist too.
Defaults: yellow, 4pt, square corners, fast fade.
Preferences are stored in UserDefaults under local.screenbox. To reset
everything:
defaults delete local.screenboxSources/Prefs.swift is the single source of truth. Add a Key case, a
computed property, and a default in register(defaults:). Because every write
fires onChange, the menu re-ticks and the live overlay redraws with no extra
wiring.
The version is derived from git tags — nothing to bump by hand. build.sh
stamps CFBundleShortVersionString from the latest tag (v1.2.0 → 1.2.0, or
1.2.0-dev for commits after it) and CFBundleVersion from the commit count.
The running version shows in About ScreenBox, in the menu.
To cut a release:
./scripts/release.sh 1.2.0It refuses unless you're on a clean main, fast-forwards, checks the tag is
free, does a smoke build so a broken commit can't burn a tag, then tags and
pushes.
The push triggers .github/workflows/release.yml, which builds a universal
binary on macos-latest, packages it as both a drag-to-install .dmg and a
.zip, and publishes a GitHub release with both attached.
To build a disk image by hand:
./build.sh
./scripts/make-dmg.sh # -> build/ScreenBox-<version>.dmgThe app is only ad-hoc signed, so Gatekeeper quarantines it on download and
the release notes tell people to right-click → Open (or run xattr -dr com.apple.quarantine). Fixing that properly needs an Apple Developer account:
sign with a Developer ID certificate, then xcrun notarytool submit --wait and
xcrun stapler staple in the workflow.
- The overlay window only exists while draw mode is active, so it never intercepts clicks when you're working normally.
- While draw mode is active the overlay swallows clicks on that screen — press
Xto click through, orescto leave. - Boxes are stroked with a dark halo so they stay readable on light and dark backgrounds.
- Uses a Carbon hotkey, so no Accessibility permission is required.
- Draws over normal windows but not over fullscreen apps.
MIT — see LICENSE.
| Preset | Hold | Fade |
|---|---|---|
| Instant | 0s | 0.15s |
| Fast (default) | 0.15s | 0.2s |
| Medium | 0.35s | 0.4s |
| Slow | 1.0s | 0.8s |
Edit Prefs.speedChoices in Sources/Prefs.swift to change or add presets.

