$ show Nacho114/harpoon
This is a Zellij plugin that provides quick filtering and switching between terminal tabs and panes, inspired by the original harpoon for Neovim. It maintains a user-defined list of 'bookmarked' panes (identified by session-unique IDs) and allows adding, removing, and navigating to them via keyboard shortcuts. The plugin persists the bookmarked pane list to disk using shell commands so that the list survives session restarts. The architecture is a minimal single-threaded state machine that reacts to Zellij events (key presses, tab/line updates, session changes). All logic resides in two Rust source files: main.rs for the plugin lifecycle and event handling, and persistence.rs for loading/saving bookmarks via JSON files. The code is well-commented with references to the official Zellij API documentation. The codebase is small and focused, and demonstrates disciplined use of the plugin framework.
The LLM identified 1 files worth highlighting for reuse:
Implements a generic persistence layer for Zellij plugins that saves and loads bookmarks (tab name + pane title pairs) to the filesystem via shell commands. It handles deserialization errors gracefully, caches last saved state to avoid redundant writes, and provides a method to match pending bookmarks against live panes after session reload. This pattern can be reused by any Zellij plugin that needs to remember lightweight state across sessions.