| summary |
read_when |
Control macOS apps via peekaboo app |
launching/quitting/focusing apps as part of an automation flow |
auditing running apps or force cycling foreground focus |
|
app bundles every app-management primitive Peekaboo exposes: launching, quitting, hiding, relaunching, switching focus, and listing processes. Each subcommand works directly with NSWorkspace/AX data so it shares the same view of the system as the rest of the CLI.
| Name |
Purpose |
Key flags |
launch |
Start an app by name/path/bundle ID, optionally opening documents. |
--bundle-id, `--open <path |
quit |
Quit one app or all regular apps (with optional exclusions). |
--app <name>, --pid, --all, --except "Finder,Terminal", --force. |
relaunch |
Quit + relaunch the same app in one step. |
Positional <app>, --wait <seconds> between quit/launch, --force, --wait-until-ready. |
hide / unhide |
Toggle app visibility. |
Accept the same targeting flags as launch/quit. |
switch |
Activate a specific app (--to) or cycle Cmd+Tab style (--cycle). |
`--to <name |
list |
Enumerate running apps. |
--include-hidden, --include-background. |
- Launch resolves bundle IDs first, then friendly names (searching
/Applications, /System/Applications, ~/Applications, etc.), and finally absolute paths. --open can be repeated to pass multiple documents/URLs to the launched app.
- Quit mode supports
--all plus --except, automatically ignoring core system processes (Finder, Dock, SystemUIServer, WindowServer). When quits fail, the command prints hints about unsaved changes and suggests --force.
- Hide/unhide uses
NSRunningApplication.hide() / .unhide() and surfaces JSON output with per-app success data.
switch --cycle synthesizes Cmd+Tab events using CGEvent so it behaves like the real keyboard shortcut; switch --to activates the exact PID resolved via AX.
switch --verify confirms the requested app is frontmost after activation (only supported with --to).
relaunch polls for termination (up to 5 s), waits the requested interval, then launches via bundle ID or bundle path and optionally waits for isFinishedLaunching before reporting success.
# Launch Xcode with a project and keep it backgrounded
polter peekaboo -- app launch "Xcode" --open ~/Projects/Peekaboo.xcodeproj --no-focus
# Quit everything but Finder and Terminal
polter peekaboo -- app quit --all --except "Finder,Terminal"
# Cycle to the next app exactly once
polter peekaboo -- app switch --cycle
# Switch and verify the app is frontmost
polter peekaboo -- app switch --to Safari --verify
- Verify Screen Recording + Accessibility permissions (
peekaboo permissions status).
- Confirm your target (app/window/selector) with
peekaboo list/peekaboo see before rerunning.
- Re-run with
--json-output or --verbose to surface detailed errors.