Curtain

Support

Setup, everyday use, and what to check when something misbehaves.

Requirements

macOS 13 Ventura or later, on Apple silicon or Intel.

First run

  1. Move Curtain to your Applications folder and open it. It lives in the menu bar — there is no Dock icon.
  2. Work through the three setup steps. On the Accessibility step, grant Curtain permission in System Settings.
  3. Quit and reopen Curtain. macOS applies a new Accessibility grant only to a freshly launched app, so this step is not optional.

The App Store edition needs no Accessibility permission, because it does not block input.

Everyday use

ActionHow
Raise the curtainPress ⌘⇧L, or choose Toggle Curtain from the menu bar
Lift itPress ⌘⇧L again, then authenticate with Touch ID or your password
Change the hotkey, opacity or hintMenu bar → Preferences
Check what it is doingHover the menu bar icon — the tooltip says whether input is actually being blocked

The screen is black but someone can still type

That means the input filter is not running. Three things cause it, in order of likelihood.

Accessibility is not granted to this exact copy

macOS ties the grant to one signed app. Grant Curtain under System Settings → Privacy & Security → Accessibility, then quit and reopen it.

More than one copy of Curtain on the Mac

If several copies exist — one in Applications, another in a Downloads folder — macOS can trust the signature and still refuse the input filter. Keep one copy, then grant it again:

tccutil reset Accessibility com.rbchronicles.Curtain

Another app holds secure input

While a password field is focused somewhere — a password manager, a sudo prompt in Terminal — macOS withholds keystrokes from every app's input filter, Curtain included. Dismiss that field and raise the curtain again. Curtain warns about this in its log and in the menu bar tooltip.

See exactly what is happening

Run this in Terminal, then raise the curtain:

log stream --style compact --predicate 'subsystem == "com.rbchronicles.Curtain"'

Event tap installed means blocking is on. Event tap NOT created means it is not, and the same line reports whether macOS considers the app trusted.

Remote control stopped working

Curtain passes through any input posted by a process, which covers Screen Sharing, Apple Remote Desktop and third-party VNC tools. It blocks only input coming from the hardware attached to the Mac. If a remote tool is blocked, its input is arriving at the hardware layer, and no app can tell it apart from the keyboard on the desk.

Things Curtain deliberately does not do

Still stuck

Open an issue at github.com/RaghavaNaidu46/Curtain/issues. Including the output of the log stream command above makes it much easier to help.