Skip to content

Plugins

Plugins are loaded from Lua with tpane.use.

lua
tpane.use("sensible")
tpane.use("vim-navigator")
tpane.use("yank")
tpane.use("open-url")
tpane.use("themes")
tpane.use("pane-detection")
tpane.use("agents")

Built-in plugins

sensible

Common tmux defaults:

lua
tpane.use("sensible")

Sets:

lua
tpane.options {
  escape_time = 0,
  history_limit = 50000,
  display_time = 4000,
  status_interval = 5,
  focus_events = true,
  status_keys = "emacs",
  aggressive_resize = true,
}

vim-navigator

Use Vim-style pane navigation. If the active process looks like Vim, the key is sent to the pane. Otherwise tmux moves panes.

lua
tpane.use("vim-navigator")

Binds C-h, C-j, C-k, and C-l.

yank

Copy-mode bindings for yanking selected text and pane paths.

lua
tpane.use("yank")

open-url

Open the URL under the cursor without selecting it first.

lua
tpane.use("open-url")

Binds <prefix> o in normal mode and C-o in copy mode. Recognizes https://, http://, www., bare domains with a TLD, IPv4 hosts, and localhost URLs.

agents

Show agent pane notifications directly in window tabs.

lua
tpane.use("agents")
tpane.tabline({ label = "cwd" })

The plugin marks agent panes in window tabs. Built-in definitions detect claude, codex, opencode, gemini, and pi commands. By default, detected agents show as idle.

States:

StateTab meaning
idleagent is waiting for a prompt
workingagent is running
approvalagent needs approval
blockedagent needs input or is blocked
doneagent finished while you were away

You can test it manually from inside an agent pane:

sh
tpane set-state "$TMUX_PANE" working
tpane set-state "$TMUX_PANE" approval
tpane set-state "$TMUX_PANE" blocked
tpane set-state "$TMUX_PANE" done
tpane set-state "$TMUX_PANE" idle

Install available agent hooks:

sh
tpane agents install

Preview without writing:

sh
tpane agents install --dry-run

You can also target a tool explicitly:

sh
tpane agents install claude
tpane agents install codex

Before uninstalling tpane, remove its hooks from Claude settings and the marked TPANE CODEX NOTIFY block from Codex configuration.

Window tabs only mark agents that need attention: a colored glyph for approval, blocked, or unseen-done, a spinner while working, and nothing when idle. A count appears when more than one agent in the window needs attention.

Custom agents can be added from Lua:

lua
tpane.agents.register({
  name = "my-agent",
  label = "agent",
  commands = { "my-agent" },
})

themes

Bundled themes from the iTerm2 Color Schemes collection.

lua
tpane.use("themes")
tpane.theme("Gruvbox Dark", { transparent = true })

List themes:

sh
tpane themes

pane-detection

Basic pane labels and pane border titles by command.

lua
tpane.use("pane-detection")

Git plugins

Use a git plugin by passing a spec:

lua
tpane.use("tool", {
  repo = "https://github.com/example/tpane-tool.git",
  branch = "main",
})

If the plugin lives in a monorepo:

lua
tpane.use("tool", {
  repo = "https://github.com/example/tools.git",
  path = "plugins/tpane-tool",
})

Manage installed git plugins:

sh
tpane plugin status
tpane plugin sync
tpane plugin update
tpane plugin clean
tpane plugin list
tpane plugin remove NAME