← All reportsPublic report

tmux/tmux

tmux source code

49k stars C View on GitHubprofiled 14d ago
Try GitZoid
183PRs this week
8Contributors
0Deps scanned
0Issues found
01 · Repo overview

How tmux is put together

tmux is a terminal multiplexer written in C that allows multiple terminals to be created, accessed, and controlled from a single screen, with support for detaching and reattaching sessions. It follows a client-server architecture: a single server process owns sessions, windows, and panes (the grid/screen model), while client processes attach via a local socket and communicate with the server using imsg-based IPC (proc.c, tmux-protocol.h, compat/imsg*). Input parsing (input.c, cmd-parse.y), formatting (format.c), and terminal output (tty*.c) form the core data flow from keystrokes through the screen grid to terminal rendering. The build is autotools-based (configure.ac, Makefile.am) with per-platform osdep-*.c files and a compat/ directory of portability shims.

Languages

CYacc/Bison (cmd-parse.y)Shell (autogen.sh)Make/Autotoolsawk (mdoc2man.awk)

Frameworks

libevent 2.xncurses

Infrastructure

Travis CI (.travis.yml)POSIX/Unix platforms: OpenBSD, FreeBSD, NetBSD, Linux, macOS, Solaris, Cygwin, Haiku, AIX, HP-UX

Major components

client/server IPC (proc.c, tmux.c, client.c, server.c)

Implements the tmux client-server split, local socket listening, event loops, and message passing between clients and the server.

command layer (cmd-*.c, cmd.c, cmd-parse.y, cmd-queue.c)

Defines every tmux command (new-session, split-window, etc.), the configuration/command grammar parser, and the command execution queue.

screen/grid model (screen.c, grid.c, grid-view.c, grid-reader.c, screen-write.c, screen-redraw.c)

Maintains the terminal cell grid history for each pane, applies writes to it, and computes redraw diffs.

terminal input/output (input.c, input-keys.c, tty.c, tty-keys.c, tty-term.c, tty-draw.c)

Parses escape sequences coming from applications into grid updates and renders grid state out to the real terminal via terminfo.

session/window/pane management (session.c, window.c, window-panes.c, layout.c, spawn.c, resize.c)

Manages session/window/pane lifecycle, layouts, pane spawning (pty allocation), and resizing.

formats, styles and status line (format.c, format-draw.c, style.c, status.c, options.c, options-table.c)

Expands format strings, draws the status line, and stores/evaluates user-configurable options and styles.

interactive modes (window-copy.c, mode-tree.c, menu.c, popup.c, prompt.c, choose-tree modes)

Implements copy mode, tree choosers, menus, popups, and command prompts as modal overlays on windows.

portability & platform layer (compat/, osdep-*.c, xmalloc.c)

Provides OS-specific process/user-info functions per platform and replacement libc functions (imsg, forkpty, base64, explicit_bzero, etc.) plus checked allocation wrappers.

Over the past five weeks, tmux development has been a steady mix of memory-leak cleanups, bug fixes reported by users on GitHub, and small new features. Recent highlights include new pane-related options (a clear-on-attach setting, modal panes that can capture all keys or float above zoom), better terminal capability detection, and numerous crash and display fixes. The project also continues to grow its automated regression tests so these bugs stay fixed.

Week by week

2026-08-24A cleanup-focused week dominated by fixing memory leaks across many parts of the program, plus a new clear-on-attach option.latest6 changes

Feature

Clear-on-attach option

Added an option that controls whether the screen is cleared when you attach, letting you keep scrollback history instead.

Fix

Batch of memory leak fixes

Several leaks were fixed where the program kept hold of memory it no longer needed, including exit messages, cached status lines, pane data, client paths, format strings, and buffer names — many contributed by Jeong, Heon.

Fix

Safer handling of invalid sessions and windows

The code now checks for missing sessions or windows before sorting data, avoiding potential crashes from passing empty values.

Fix

Fewer unnecessary redraws

Panes without scrollbars are no longer redrawn needlessly, making updates more efficient.

Fix

Shell escape characters updated

Curly braces were added to the characters tmux escapes in shell commands, since they are special in common shells like bash and csh.

Fix

Copy mode display fix

Synchronized screen updates are now always used in copy mode to prevent flickering or garbled output.

2026-08-17A busy week centered on new floating and 'modal' pane features alongside a wave of user-reported bug fixes.6 changes

Feature

Floating panes can stay above zoom

A new -A flag lets floating panes remain visible on top even when another pane is zoomed full-screen.

Feature

Modal panes capture all keys

A new -K flag for new-pane makes a pane intercept every keystroke, like a pop-up dialog inside the terminal.

Fix

Correct cursor position for combined characters

Fixed the horizontal position used when displaying combining characters, resolving GitHub issue 5511 with a test included.

Fix

Better terminal capability detection

tmux now asks the terminal directly (via DECRQM) whether it supports synchronized output, and you can disable specific features using an @ suffix in terminal-features.

Fix

Fixed wrapped-line walking and respawn behavior

Line navigation now stops at the right edge of wrapped text, and respawning a pane correctly resets control-mode offsets.

Fix

macOS socket names fixed

Socket naming was corrected so tmux works reliably on macOS, along with a fix restoring system permissions if binding fails.

2026-08-10A very quiet week with just a single compatibility fix for portability.1 change

Fix

Portability fix for socket options

Changed the type used when querying socket options to socklen_t, improving compatibility across operating systems.

2026-08-03Floating panes got polished, control-mode notifications became more reliable, and several stuck-client crashes were addressed.6 changes

Feature

New T key to rename pane title

You can now press T to interactively change a pane's title, plus a refresh-now command was added for copy mode.

Feature

New pane_private_modes format variable

A new format shows which special DEC modes a pane has enabled, useful for scripting and status displays.

Fix

Stuck clients no longer block the server

If a client hangs, tmux now gives up waiting on it so it cannot prevent the server from exiting.

Refactor

Control mode notifications queued properly

Notifications for automated control clients are now queued instead of sent mid-operation, making them far more reliable, with new tests added.

Fix

Background color handling in padding cells

Padding cells now store the background color so adjacent areas clear correctly without visual glitches.

Chore

CI workflows limited to main repository

Automated lock and regression workflows now only run on the main tmux repo rather than on forks, via merged pull request #5471.

2026-07-27Scrollbar and mouse-menu fixes landed, plus helpful new introspection features showing hook usage.6 changes

Fix

Crash prevention workaround

Compiler flags for one source file were adjusted after optimizations caused tmux to dump core.

Feature

Hook count and timing visible

Customize mode now shows how many times each hook (automation trigger) has fired and when it last ran, with tests included.

Feature

Option to hide scrollbars in display-panes

A new flag turns off scrollbars for the pane-overview display, addressing GitHub issue 5440.

Fix

Mouse menu position fixed

Menus opened by mouse clicks now remember their exact position reliably thanks to a reworked mouse event structure.

Fix

pipe-pane pipes closed cleanly

Destroying a pane now also closes its command pipe and event, preventing resource leaks (GitHub issue).

Feature

New after-swap-window hook

A new hook runs after windows are swapped between positions, enabling custom automation, contributed from a community member.

03 · Security check

Dependencies and code review

0 dependencies scanned

Dependency advisories

Security Watch

No known advisories across 0 scanned dependencies.

No known advisories in the scanned dependencies.

Code review

No concrete code-level issues confirmed.

Get this report every week for your repos.

GitZoid learns each repo, reports what changed, and flags what needs attention. One flat price for the whole team.

$19 a month, flat · First 10 outputs free · No card required