Probes macOS window metadata (CG + AX) for a given app process over time. Use when debugging window management timing, role readiness, or Electron app AX behavior.
Periodically samples CGWindowList and AXUIElement attributes for every window belonging to a target process, emitting structured JSONL with diff events.
Use tb__probe_windows for sampling and state-timeline capture.
Use tb__trigger_native_tabs to generate repeatable native tab create/close activity while probing.
tb__probe_windows against the target app/pid.tb__trigger_native_tabs to create/close tabs.tb__trigger_native_tabs drives AppleScript commands for native tab lifecycle events.
new_window: create one or more windowscreate_tabs: create one or more tabs (ensures a window exists)close_tabs: close selected tab repeatedlypulse_tabs: create then close repeatedly (good for stress testing)AXWindow + AXStandardWindow (tileable window)AXUnknown (still initializing)| Parameter | Type | Default | Description |
|---|---|---|---|
app | string | — | App name to kill, relaunch, and probe |
pid | integer | — | PID to probe directly (skips app launch) |
duration_sec | integer | 10 | How many seconds to sample |
interval_ms | integer | 100 | Milliseconds between samples |
output_file | string | — | Optional file path for raw JSONL output |
Either app or pid is required.
tb__trigger_native_tabs| Parameter | Type | Default | Description |
|---|---|---|---|
app | string | Ghostty | AppleScript app name |
operation | string | create_tabs | new_window, create_tabs, close_tabs, or pulse_tabs |
count | integer | 1 | How many operations to perform |
interval_ms | integer | 200 | Delay between operations |
activate | boolean | true | Activate app before running commands |
use_keystroke_fallback | boolean | true | Fall back to ⌘N/⌘T/⌘W keystrokes if app-specific AppleScript commands fail |
ready. This is the latency that bobrwm's role-polling system must cover.pending after the full duration indicate apps whose AX interface never stabilizes (rare, usually a bug in the app).pulse_tabs during an active probe to generate deterministic create/close bursts for easier timeline analysis.