example: Add IPC remote control example.
Some checks failed
CI / Test (push) Has been cancelled
CI / Lint (push) Has been cancelled

This commit is contained in:
2026-03-14 17:05:18 -04:00
parent aad4c16d6e
commit 3b574e89ab
4 changed files with 316 additions and 1 deletions

View File

@@ -131,7 +131,7 @@ pins the version and pulls in rust-analyzer + clippy.
## Current Status
Phases 1 through 3 are complete. pikl works as a TUI menu with:
Phases 1 through 6 are complete. pikl works as a TUI menu with:
- Fuzzy, exact, regex, and inverse filtering with `|` pipeline chaining
- Vim navigation (j/k, gg/G, Ctrl+D/U, Ctrl+F/B, modes)
- Structured JSON I/O with sublabel, icon, group, and arbitrary metadata
@@ -140,6 +140,31 @@ Phases 1 through 3 are complete. pikl works as a TUI menu with:
- Format templates (`--format '{label} - {sublabel}'`)
- Field-scoped filtering (`--filter-fields`, `meta.res:3840` syntax)
- Headless scripting via `--action-fd`
- Multi-select with undo/redo and visual line mode
- Table mode for CSV/TSV input with auto-generated or custom columns
- IPC control via Unix socket (`--ipc`, `--session`)
- Session filter history with Ctrl+P/Ctrl+N recall
### IPC example
Run pikl with IPC in one terminal, control it from another:
```sh
# terminal 1: start pikl with IPC enabled
echo -e "alpha\nbeta\ngamma\ndelta" | pikl --ipc --session demo
# terminal 2: query state over the socket
echo '{"action":"get_state","id":"1"}' \
| socat - UNIX-CONNECT:/run/user/$(id -u)/pikl-demo.sock
# terminal 2: add items dynamically
echo '{"action":"add_items","items":["epsilon","zeta"]}' \
| socat -t 0.1 - UNIX-CONNECT:/run/user/$(id -u)/pikl-demo.sock
```
There's an interactive remote control demo at
[examples/ipc-remote.sh](examples/ipc-remote.sh)
(see [examples/ipc-remote.md](examples/ipc-remote.md) for the walkthrough).
## Platform Support