Skip to main content

Hop between Claude Code sessions in tmux panes

Project description

Claude Tmux Hop

Quickly hop between Claude Code sessions running in tmux panes.

Features

  • Priority-based cycling: Jump to panes waiting for input first, then idle, then active
  • Auto-registration: Claude Code hooks automatically track pane states
  • Auto-discovery: Existing Claude Code sessions are detected on plugin load
  • In-memory state: Uses tmux pane options - no files, auto-cleanup when panes close
  • Cross-session navigation: Works across all tmux sessions

Requirements

  • uv (for uvx command)
  • tmux 3.0+
  • Python 3.10+
  • Claude Code

Installation

1. Install Claude Code Plugin

claude plugin marketplace add unsafe9/claude-tmux-hop
claude plugin install claude-tmux-hop

2. Install Tmux Plugin (via TPM)

Add to ~/.tmux.conf:

set -g @plugin 'unsafe9/claude-tmux-hop'

Then press prefix + I to install.

That's it! The CLI runs via uvx automatically - no manual Python installation needed.

Any existing Claude Code sessions will be automatically discovered and registered as idle on plugin load.

Usage

Key Bindings

Key Action
prefix + Tab Cycle to next Claude Code pane
prefix + C-Tab Open picker menu (if enabled)

Configuration

Add to ~/.tmux.conf:

# Customize cycle key (default: Tab)
set -g @hop-cycle-key 'Tab'

# Customize picker key (default: C-Tab)
set -g @hop-picker-key 'C-Tab'

# Enable picker menu (default: off)
set -g @hop-enable-picker 'on'

CLI Commands

# List all Claude Code panes
uvx claude-tmux-hop list

# Cycle to next pane (usually via keybinding)
uvx claude-tmux-hop cycle

# Show picker menu
uvx claude-tmux-hop picker

# Discover existing Claude Code sessions (runs automatically on plugin load)
uvx claude-tmux-hop discover

# Preview what would be discovered
uvx claude-tmux-hop discover --dry-run

How It Works

Pane States

State Trigger Priority
waiting Notification hook (idle/permission prompt) Highest
idle Stop hook (task complete) Medium
active UserPromptSubmit hook Lowest

Cycling Behavior

  1. If waiting panes exist, cycle only through waiting panes (oldest first)
  2. If no waiting, cycle through idle panes (newest first)
  3. If no idle, cycle through active panes (newest first)

State Storage

State is stored directly on tmux panes using custom options:

  • @hop-state: Current state (waiting/idle/active)
  • @hop-timestamp: Unix timestamp of last state change

Benefits:

  • No external files
  • State auto-deleted when pane closes
  • Fast (in-memory)

Releasing a New Version

Update the version in pyproject.toml, then publish to PyPI:

uv build
uv publish

Both plugins use uvx which always fetches the latest version from PyPI.

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

claude_tmux_hop-0.1.3.tar.gz (7.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

claude_tmux_hop-0.1.3-py3-none-any.whl (8.9 kB view details)

Uploaded Python 3

File details

Details for the file claude_tmux_hop-0.1.3.tar.gz.

File metadata

  • Download URL: claude_tmux_hop-0.1.3.tar.gz
  • Upload date:
  • Size: 7.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.9.22 {"installer":{"name":"uv","version":"0.9.22","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for claude_tmux_hop-0.1.3.tar.gz
Algorithm Hash digest
SHA256 9f0ab0dbe3edeed8ef1307b88a1efb952801eec9b4d075673b1e1641c5e49a86
MD5 8713b1d45347e15f5e3468acc60a593d
BLAKE2b-256 265b0d3db7612757f0bcb6d97628561a2c9005a884a39dd1729940083bce06ba

See more details on using hashes here.

File details

Details for the file claude_tmux_hop-0.1.3-py3-none-any.whl.

File metadata

  • Download URL: claude_tmux_hop-0.1.3-py3-none-any.whl
  • Upload date:
  • Size: 8.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.9.22 {"installer":{"name":"uv","version":"0.9.22","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for claude_tmux_hop-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 7178f47f0e2c17e03a46bcd049766a2c61511964f7f8b9eede3058346f8a9114
MD5 3dfd9d9b1603b6b39b9633346714a20d
BLAKE2b-256 8078e4988393505d70d0e3204eb6ae7620b64c4e353a7b4c7f58cfad6263f03a

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page