Peekaboo/docs/commands/list.md
2026-06-13 21:44:58 -07:00

3.0 KiB
Raw Permalink Blame History

summary read_when
Enumerate apps, windows, screens, and permissions via peekaboo list
inspecting what Peekaboo can currently target
scripting toolchains that need structured app/window inventory

peekaboo list

peekaboo list is a container command that fans out into focused inventory subcommands. Each subcommand returns human-readable tables by default and emits the same structure in JSON when --json is set, so agents can choose whichever format fits their control loop.

Subcommands

Subcommand What it does Notable options
apps (default) Enumerates every running GUI app with bundle ID, PID, and focus status. None.
windows Lists the windows owned by a specific process with optional bounds/ID metadata. `--app <name
menubar Dumps every status-item title/index so you can target them via menubar click. Supports --json for scripts piping into jq.
screens Shows connected displays, resolution, scaling, and whether they are main/secondary. None.
permissions Mirrors peekaboo permissions status for quick entitlement checks. None.

Implementation notes

  • The root command does nothing; Commander dispatches straight to the subcommand so peekaboo list defaults to list apps.
  • Application inventory prefers the GUI bridge host so sandboxed CLI callers see the GUI sessions complete process list. Other read-only inventory stays local by default unless its command needs host state or you pass --bridge-socket <path>.
  • windows calls requireScreenRecordingPermission before crawling AX so macOS doesnt silently strip metadata; apps does not require Screen Recording.
  • windows accepts either user-friendly names or PID:#### tokens and normalizes --include-details values by lowercasing + replacing - with _, so both --include-details offscreen,bounds and off_screen work.
  • Menu bar listing is powered by the same MenuServiceBridge used by peekaboo menubar, so indices reported here line up with what menubar click --index expects.
  • App/window/screen inventory uses UnifiedToolOutput payloads, which include data, summary, and metadata. list permissions --json mirrors permissions status --json with the standard { success, data } envelope.

Examples

# Default invocation: list every app currently visible to AX
peekaboo list

# Inspect all Chrome windows including their bounds + element IDs
peekaboo list windows --app "Google Chrome" --include-details bounds,ids

# Pipe the current display layout into jq for scripting
peekaboo list screens --json | jq '.data.screens[] | {name, size: .frame}'

Troubleshooting

  • 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 or --verbose to surface detailed errors.