You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Prior art: how terminal dashboards let plugins take keys #9
How do terminal dashboards and multiplexers let a plugin or external command receive key presses, and how do they handle delivery (re-run vs long-lived process), state between runs, focus, conflicts with host keys, and showing available keys? Survey at least k9s plugins, lazygit customCommands, wtfutil, zellij plugins, and tmux bind/run-shell. Report patterns, trade-offs, and failure modes relevant to devdash's one-shot integration contract (command without shell, timeout, process-group kill).
Delivery: k9s, lazygit, and tmux re-run a one-shot command per key, which matches devdash's contract. Only Zellij uses a long-lived plugin that receives key events, with a different lifecycle.
State: one-shot tools pass the selection to each run (k9s env vars, lazygit templates). Long-lived plugins keep their own state.
Focus: none of them needs globally unique keys. They scope keys by context or panel (k9s, lazygit), by focus with Tab/Shift-Tab or a number key (WTF, Zellij), or by key table (tmux). No source documents rejecting duplicate keys.
Key syntax: case-sensitive printable keys (lazygit A ≠ a) plus named special keys (<enter>, <up>, Left, F1) and modifiers.
Discoverability: lazygit lists custom keys in its ? menu; k9s shows the shortcut and description in its menu.
Activity
shayan-ys commentedon Oct 9, 2026
Resolution
Findings: plugin-keys-prior-art.md (throwaway branch
research/plugin-keys-prior-art).A≠a) plus named special keys (<enter>,<up>,Left,F1) and modifiers.?menu; k9s shows the shortcut and description in its menu.