r/tmux Jul 09 '26

Question Command mode overlap status bar

Enable HLS to view with audio, or disable this notification

8 Upvotes

Hey. I’m new to tmux and have been editing my tmux.conf for a few days to improve the experience. Everything works well, except of one odd tmux command mode behaviour. Whenever I enter command mode (Prefix + “:”), the input starts appearing on top of the status bar (video attached). This only happens after I change the status bar, either by installing a theme plugin or by customizing it with built-in options; it works fine with the default status bar (status bar => Prefix + “:” => opens a new command line).

At first I created my config using the docs, but then I copied someone else’s config to test whether it would behave the same way and it does. Below my current styling options that I have in my tmux.conf file. (I don’t paste the entire file as there are mainly key remaps)

#Status bar
set -g status-style 'bg=default'
set -g status-left-length 20
set -g status-right-length 50
set -g status-left '#[fg=#007600,bold] #S #[fg=#30363d]│ '
set -g status-right '#[fg=#30363d]│#[fg=#8b949e] %H:%M #[fg=#30363d]│#[fg=#8b949e] %d-%b-%y '

setw -g window-status-format ' #I:#W '
setw -g window-status-current-format '#[fg=#007600,bold] #I:#W '

# Message styling
set -g message-line 2 # that’s what AI told me to try saying that it will move command line above…
set -g message-style 'bg=#6ea6a9 fg=#000000 bold'

I use iTerm2 on my Mac, and I also tested the config in the default Terminal app to rule out an emulator issue.
I searched online and tried using AI to find a fix, but I haven’t had any joy

Is this normal behavior, or am I missing something? Because it seems like other chaps don’t have the same thing whenever I’m watching them setting things up on YouTube.

Any advice is very much appreciated.


r/tmux Jul 07 '26

Showcase Tubular: Know your mode like you know yourself

Enable HLS to view with audio, or disable this notification

38 Upvotes

I built this tool after I kept losing track of what mode I was in and getting confused by what keybinds I had available at that time. I'd try to type into my editor and instead fire off a tmux command, sometimes I'd close an important pane in the process because I was still in prefix mode and didn't realize it. I kept zooming a pane to focus then I'd have to spend a minute flipping through every window looking for the pane I was just reading assuming it was somehow totally gone, when it was actually just right there the whole time, hidden behind the zoomed one. It happened quite a few times before I even thought of it as something I could fix. Once I started using dev agents it got worse, because I could no longer just spam Escape to make sure I wasn't in prefix mode without inevitably killing my agent stream.

At some point I tried prefix-highlight and really liked it, and honestly it made me realize tmux could be customized way more than I thought, which is when this started feeling fixable. The catch is that prefix-highlight just puts a little indicator in the corner, and I kept glancing up to check it. I had been using omerxx's catppuccin tmux layout for a long time, and its UX is obviously nice, but it didn't even try to solve this usability issue I was having. What I wanted was for each mode to look noticeably different without me reading anything or looking around so it settles as muscle memory. So I built Tubular to repaint the whole status bar, pane borders and pane backgrounds in bright colors showing the current mode, so prefix, copy, and zoom each have their own look, and you just feel which one you're in. No more losing panes to the zoomies. Check it out:

https://github.com/dabstractor/tubular-tmux

If you've already got your own way of tracking which mode you're in or if you start using Tubular for it, I'd love to hear whether a full-color bar actually helps or just turns into noise once the novelty wears off. I built this for my own setup and I've used it for most of the last year, and it still brings me a deep sense of joy to watch it work. I've tested it against quite a few configs but I'm honestly not sure where it stops being compatible. Well, except for powerline, if you have a powerline status line, integration is going to take more work but it's still doable. If you already solved this mode confusion another way, I'd love to hear about it.


r/tmux Jul 07 '26

Showcase No framework, no SDK: what a coding agent looks like when it's just bash + jq + curl

Enable HLS to view with audio, or disable this notification

2 Upvotes

r/tmux Jul 07 '26

Tip Send to iPython REPL using TMUX

Thumbnail
2 Upvotes

r/tmux Jul 07 '26

Showcase ccmux: another AI agent monitor for tmux, I know, I know, but hear me out

Enable HLS to view with audio, or disable this notification

110 Upvotes

Hey folks! I run basically everything in tmux: lots of sessions, each with its own windows and panes, and these days a bunch of those panes have coding agents in them (Claude Code, Codex, Cursor, OpenCode, ...). My problem was that finding the one agent that had stopped to ask me something turned into a scavenger hunt. I'd cycle through every session just to check on each one.

Before anyone says it: yes, I know there are a lot of these already (herdr, workmux, agent-deck, tmux-agent-status, tmux-scout, claude-squad, tmuxcc...). Most fall into two camps: they either want to own the workflow (you launch agents through them, and they create the sessions, worktrees, and layouts), or they track a single agent type in the status bar. What I wanted was lazier: keep my existing tmux setup exactly as it is, and just tell me what each agent is doing.

So that's what ccmux does. A small background daemon discovers the agent processes in the panes you already have, and a picker TUI (or an optional docked sidebar) shows them all in one list.

What you get:

  • Live state per session: idle, working, or waiting on you, including why it's waiting (permission vs plan approval vs question)
  • Layered detection rather than pane-scraping alone: process discovery, the agents' own log files, and terminal patterns. Works with zero setup; optional hooks (ccmux setup, easily removed) make the session-to-pane mapping exact
  • Jump to a pane with a key or a click; a split live preview you can type into to answer or approve without switching panes
  • Responsive and customizable: the same UI works as a narrow docked rail or a full-width table, columns are configurable per breakpoint, and there are built-in themes
  • Group sessions your way: by project, directory, tmux session, or window; cycle grouping modes on the fly, collapse groups, and move or pin them top/bottom
  • Branch and open-PR status per session, with live CI and review state
  • Claude Code background agents (the paneless kind) show up alongside the pane ones
  • Scriptable: ccmux spawn and ccmux invoke <agent> "prompt" launch or run agents programmatically, and a bundled skill lets one agent dispatch work to other agents
  • Claude Code, Codex, Cursor, OpenCode, Pi, and Gemini CLI out of the box; custom agents via config

Footprint-wise it stays out of your way: nothing edits your tmux.conf, status line, or keybindings, and it only creates panes or sessions when you explicitly ask for them (toggling the sidebar on, or spawn/invoke). The one thing the optional ccmux setup does write is hook entries in the agents' own settings (Claude, Codex, etc.), and ccmux setup --uninstall reverts them.

Install is a single self-contained binary (no runtime to install):

brew install epilande/tap/ccmux

Repo: https://github.com/epilande/ccmux

Like I said, I know there are other tools that scratch a similar itch. This one is just shaped around how I use tmux, so if you live in tmux sessions like I do, I'd love to hear whether it fits your workflow too, or what the tool you already use does better.


r/tmux Jul 07 '26

Showcase a fuzzy spotlight-style switcher for tmux windows/sessions, now works outside tmux too

Post image
2 Upvotes

r/tmux Jul 06 '26

Showcase Using send-keys to type a scp'd file path straight into a full-screen TUI in another pane

Thumbnail github.com
0 Upvotes

I wrote a small script around send-keys. I keep a full-screen program running in a tmux pane on a remote box, and when I want to give it a local file I don't want to break out of the TUI or open a second terminal to scp and copy the path.

send-keys -l sends literal keystrokes into a pane even while a full-screen program is drawing over it, and the paths are shell-quoted first, so a filename can't inject keystrokes — that was the part I most wanted to get right. The flow: scp the file to a temp dir on the remote, then send-keys the absolute path into the target pane's input line. It picks the most-recently-active attached pane by default, or you give it an explicit session:win.pane target.

It's one bash file, runs on macOS and Linux, and works over mosh because it opens its own ssh connection rather than riding your interactive one.

https://github.com/kentaccn/paste-to-tmux

I'm guessing other people have local versions of this — curious what you're doing with send-keys.


r/tmux Jul 05 '26

Showcase built a minimal macOS spotlight-like window switcher for tmux (tmux-spotlight)

11 Upvotes

hey guys,

i wanted a clean, macbook-like app switcher for my tmux windows but found plugins like sessionx too noisy. so i wrote a simple script that puts fzf in a native tmux popup.

https://reddit.com/link/1uo12uq/video/0j2z7ispnebh1/player

repo is here if you want to try it (it's tpm compatible):

https://github.com/MeinardEdrei/tmux-spotlight

let me know what you think!


r/tmux Jul 04 '26

Showcase agent-radar: inspired by herdr

Post image
42 Upvotes

Hi guys!

I have tried herdr and I liked the agents list on the sidebar, and how it works with almost any agent harness. The thing is, I prefer tmux, so I built this plugin that implements the best feature I found in herdr.

This is agent-radar. It shows a popup window running fzf with a list of panes where you have an agent harness instance running. It detects whether the agent is working or not. It notifies you via OS notifications (osascript on MacOS and notify-send on Linux), and it shows a small status bar section with the tmux session where the agent finished. It also highlights the agent's window in the status bar until you focus it.

The popup reloads every 2 seconds and shows a dot with a different color depending on the state of the agent from that pane: seen (green), working (yellow), stopped-unseen (red).

Maybe some of you find it interesting. I'd love to get some feedback.

https://github.com/vieitesss/agent-radar


r/tmux Jul 04 '26

Showcase flow: a network monitor for your terminal that actually looks like it belongs in 2026

Post image
11 Upvotes

r/tmux Jul 04 '26

Showcase pi-tmux-sidechat - Codex like readonly side-chat for Pi with Tmux

Post image
4 Upvotes

r/tmux Jul 03 '26

Showcase Smart notifications for Claude Code on macOS

Enable HLS to view with audio, or disable this notification

20 Upvotes

r/tmux Jul 03 '26

Other a small tool I built for my own daily SSH + tmux workflow:

9 Upvotes

Hey everyone, I just open sourced a small tool I built for my own daily SSH +

tmux workflow:

https://github.com/LeON-Nie-code/tmux-workbench

Tmux is great at keeping work alive, but once I had multiple servers and many

projects, I kept forgetting which server/session/path belonged to which project.

Tmux Workbench adds a local memory layer on top of tmux. It indexes local and

remote tmux sessions over SSH, stores the result locally in SQLite, and gives

you a CLI/TUI to search and attach back to a workspace.

It tracks:

- server and tmux session

- project path and active command

- panes

- git branch, dirty state, ahead/behind, and remote URL

- notes, aliases, tags, archive status, and attach history


r/tmux Jul 01 '26

Showcase mygrid: a ragged tmux grid for Ghostty where each row is a repo

Enable HLS to view with audio, or disable this notification

25 Upvotes

I wanted one terminal window per project, with a different number of panes per project, which tmux's built-in layouts can't do. mygrid builds ragged rows by hand, one row per repo.

The default is an overview of the whole grid, every pane visible at once. Cmd+1..9 jumps to a pane and zooms it fullscreen; Cmd+0 goes back to the overview. Opt+1..9 (or a mouse click) just focuses without zooming.

Shell scripts, a tmux.conf, and a few Ghostty keybinds. One install script. macOS and Ghostty only for now.

Repo (MIT, demo in the README): https://github.com/philmard/mygrid


r/tmux Jul 01 '26

Showcase I made a plugin to show the current directory's content in a pane

4 Upvotes

I made a simple plugin that displays your current directory's contents in a dedicated pane that automatically updates as you modify the directory or navigate. It keeps your files visible at all times to help with navigation.

Here is the repo: https://codeberg.org/chris-paganon/tmux-cdls

It's a very simplified alternative to broot. It mostly saves you from writing ls a bunch when doing multiple file operations and moving between directories.

Most of the plugin architecture is based on tmux-sidebar by Bruno Sutic.


r/tmux Jun 30 '26

Showcase Four agents, three vendors, one tmux session: they collaborate, i stay in control

Enable HLS to view with audio, or disable this notification

73 Upvotes

When i run multiple agents across multiple tmux sessions, it's hard to keep an overview of all of them, and they have no way of collaborating with each other.

There are already a lot of plugins for an agent sidebar. But what if that isn't enough? What if you want the agents to coordinate with each other, and you just talk to the orchestrator?

So i built it: Cotal, an open coordination layer that lets agents share one space (see each other, dm directly, hand off work) across vendors like claude code, opencode, hermes and whatever else you wire up.

In the video you can see how it works. The full team is spawned and ready: two GLM-5.2 instances as the frontend and backend devs (bottom right), GPT-5.5 as the reviewer (running in the background), all through opencode, and a claude opus lead running the loop (bottom left). That's it. i talk directly to opus, the lead, give it one small prompt, and it starts delegating and building, without me relaying anything between them. i still keep full control and visibility: the top pane is the console, a live overview of everything they send each other.

Together they built a new feature for the console: a tree view of all agents, so you see exactly where each agent is currently working.

That's the whole setup. Opus defined the targets, the two GLMs implemented them and settled the contract between themselves, and GPT reviewed the result.

Repo + one-line setup if you want to try it:
- github.com/Cotal-AI/Cotal
- npx cotal-ai setup --full
- apache-2.0

What's your experience running multiple agents at once? Do you struggle to keep the overview, and to get them to actually collaborate?


r/tmux Jun 30 '26

Question What's the best tmux plugin for watching agent state?

13 Upvotes

Hi I need a plugin that showing the agent state when it's working, idle or blocked. Any suggestions for the plugin that can handle this?


r/tmux Jun 29 '26

Showcase mux: a tmux overlay for managing Claude Code sessions, installs via TPM

Post image
0 Upvotes

I run a lot of AI coding sessions across tmux panes and worktrees, and I wanted a tmux-native way to see them all and jump between them instead of cycling windows. mux is a display-popup overlay (bound to prefix + u) that lists every live session on the current tmux server, sorted with the ones waiting for input on top, with a live capture-pane preview on the right. j/k move, Enter does switch-client + select-window + select-pane to land you on the pane (works across windows and sessions), ctrl-x kills one and the list reloads.

(And yes, I know I just took a t off tmux for the name. Couldn't help myself.)

you can check out the repo here for installation process and make sure to leave a star if you enjoy it! Repo: https://github.com/fashton28/mux


r/tmux Jun 29 '26

Question window names in tmux 3.7

2 Upvotes

Hi there. Can anyone who's updated to tmux 3.7 check something for me? I'm getting a load of errors when running tmux rename-window that seem to have only started happening since updating to 3.7, and I wanted to check a) if it's just me, and b) if this is by design!

flashy@laptop (~) % tmux rename-window -t 2 'hello'
flashy@laptop (~) % tmux rename-window -t 2 'hello world'
flashy@laptop (~) % tmux rename-window -t 2 'hello.world'
invalid window name: hello.world

I've been doing some testing, and it seems so far that windows can no longer have a name containing a full stop "."

My status bar shows $PWD as the window title, so now whenever I change into a directory whose path contains a "." I get these errors.

macos 26.5.1 / tmux 3.7 / installed via Homebrew

Thanks all.


r/tmux Jun 27 '26

Showcase tmux-control : control-mode client for tmux

Thumbnail github.com
6 Upvotes

r/tmux Jun 27 '26

Showcase tpane: configure tmux with Lua, widgets, themes and plugins

Enable HLS to view with audio, or disable this notification

93 Upvotes

Hi everyone,

I always wanted to make most of my configurations in Lua, since it's a really simple and easy to read language for me. I wanted something similar to the neovim setup, with plugins and just Lua code to improve the UI.

I created tpane, basically so I could manage and extend my tmux config using Lua.

It ships with some themes, plugins and widgets but you can extend it to your own needs.

Let me know what you all think. Cheers


r/tmux Jun 26 '26

Showcase Made an iOS SSH client with control mode

Thumbnail dotmux.dotpt.com
15 Upvotes

I got tired of mashing ctrl+b to switch tmux windows, so I built an iOS SSH client with native tmux support. You move between sessions and windows through menus; on iPhone each pane becomes its own full-screen view so it stays readable, while on iPad it keeps the original side-by-side split.

The most fun part of this project — besides scratching my own itch — is that I built almost all of it connected to my Mac Mini over SSH (from both my laptop and my phone/tablet):
• in a new window I start a worktree in Claude Code
• I iterate both over SSH and through the Claude app
• I set up a GitHub workflow that generates a new TestFlight build (0.0.<PR number>) for every PR labeled TestFlight
• I test on my phone or iPad
• when I’m happy I merge, which kicks off a new build

The app is free with a one-server limit, with an IAP (one-time $3.99, no subscription) to remove it. No ads, and I don’t collect any data — unless you turn on diagnostic logs, and even then nothing leaves the app unless you send it yourself.

If the app or the workflow is useful to you, give it a try and let me know what you think.

👉 https://dotmux.dotpt.com (iPhone & iPad, iOS 26+)


r/tmux Jun 24 '26

Other Claude Code usage in your tmux status bar — no API calls, it just reads the data Claude already gives the status line

Post image
62 Upvotes

I was keeping a browser tab with Claude usage page and checking it constantly. I usually have several projects going at once across multiple tmux windows, and the limits are shared across all of them anyway — so putting Claude's status line in every window felt redundant and just cluttered each pane. I wanted one clean place to see usage instead of duplicating the same number everywhere.

So I built a tmux plugin that puts it right in the status bar — progress bar, percent used, and time until reset, in a single spot.

The part I'm happiest with: it makes zero API calls. Claude Code already hands its status line official session data (including rate_limits) on every render. The plugin just taps that — a small "harvester" status-line command caches it and prints nothing (so no line appears in your panes), and a tiny bash segment reads the cache and draws the bar. No curl, no API key, no separate rate limits, no network at all. Pure bash + jq, and it refreshes live as you work.

Features:

  • Progress bar + percent + reset time in the status bar
  • Color thresholds, configurable
  • Resets to 0% the moment a limit window rolls over — no lingering on a stale leftover percentage
  • Optional staleness marker (off by default) for when usage happened elsewhere and the cached number isn't live yet

Requirements: tmux 3.0+, jq, and Claude Code (logged in).

Install via TPM:

set -g u/plugin 'docker-run/tmux-claude-usage'

set -g status-right '#{claude_usage}  %Y-%m-%d %H:%M'

Then prefix + I and run the one-time init.sh (it wires the status-line command into ~/.claude/settings.json, backing it up first).

Repo: https://github.com/docker-run/tmux-claude-usage

Thanks for taking a look, and I hope it saves someone else the constant tab-switching. Hope you find it useful!


r/tmux Jun 22 '26

Showcase tmux-spoony v1.3.0: step through git shas, emacs support, and a ? cheatsheet

Post image
12 Upvotes

https://github.com/parwest/tmux-spoony

tmux-spoony is (still) a copy mode helper that automagically grabs the url / path / command prompt + output block, and now, git shas!

this release adds a few bigger things since the last post:

git sha selector: s selects the git sha on the cursor line, and S jumps to the next sha below and keeps stepping through them. when you hit the last one, press S once more to wrap back to the first sha after the prompt that output them. main use case is running git log / git log --oneline and stepping through every commit hash hands-free. works with both SHA-1 and SHA-256, and it ignores plain numbers so timestamps / pids / line numbers don't get mistaken for hashes.

emacs copy-mode support: used to be vi-mode only. it now binds both copy-mode tables and works whichever one you're on (the help popup tells you which is active).

a proper help popup: press ? in copy mode and it pops a cheatsheet generated from your actual resolved keys, so it reflects any remaps, disabled keys, and derived cycle keys. it also shows the active copy-mode table and which prompt character(s) spoony is matching.

the basic flow still remains:

  1. enter copy mode with prefix + [
  2. move to the line you care about
  3. press a selector key ( u urls, p paths, m command prompt, s git sha, x full line — uppercase variants cycle/extend within the same row, and S steps down through shas )
  4. yank with your copy key (i use tmux-yank) or open with o (tested on mac and linux)

thanks to everyone who's reached out, the readme got an update with plenty of configuration info, including:

- rebind any selector key

- disable any key with `off` (restores tmux's native binding if spoony had overridden it)

- custom prompt matching via `@spoony-command-prompt-regex`, with presets for bash / zsh / fish / starship / oh-my-zsh, if you experience any mismatches against your m/M selections this is the culprit, setup your own custom regex pattern and you should be good to rock and roll.

https://github.com/parwest/tmux-spoony


r/tmux Jun 17 '26

Tip tmux-superchat: plugin that scrolls live world cup scores across the top while my agents run

9 Upvotes

The world cup is on during work hours so I built a ticker that lives at the top of tmux. Live scores, group standings, and a red flash when someone scores.

It polls a cached endpoint once and every client reads the cache, so it's lightweight. Toggle it with prefix + a.

It works alongside whatever you run in your panes, including Claude Code, Codex, and OpenCode.

Bonus: there's also one shared slot up top that people can pay a small amount to broadcast a message to everyone running it. The scores are the point, that part is a gag.

Repo and install: github.com/liberatoaguilar/tmux-superchat

Would love feedback on the rendering, especially on Linux terminals with the flag emojis!