Skip to content

v0.55.0 - compatibility features, more logging

Latest

Choose a tag to compare

@tony tony released this 08 Mar 01:00
· 9 commits to master since this release

What's Changed

via @tony in #636

Pane.set_title()

New Pane.set_title() method wraps select-pane -T and returns the pane
for method chaining. A Pane.title property aliases pane_title for
convenience:

pane.set_title("my-worker")
pane.pane_title  # 'my-worker'
pane.title       # 'my-worker'

The pane_title format variable is now included in libtmux's pane format
queries (it was previously excluded via an incorrect "removed in 3.1+" comment).

Configurable tmux binary path

Server now accepts a tmux_bin parameter to use an alternative binary
(e.g. wemux, byobu, or a custom build):

server = Server(socket_name="myserver", tmux_bin="/usr/local/bin/tmux-next")

The path is threaded through Server.cmd(), Server.raise_if_dead(),
fetch_objs(), all version-check functions (has_version,
has_gte_version, etc.), and hook scope guards in HooksMixin. Child
objects (Session, Window, Pane) inherit it automatically. Falls back to
shutil.which("tmux") when not set.

Pre-execution command logging

tmux_cmd now emits a structured DEBUG log record with
extra={"tmux_cmd": ...} before invoking the subprocess, using
shlex.join for POSIX-correct quoting. This complements the existing
post-execution stdout log and is a prerequisite for a future dry-run mode.

Bug fix: TmuxCommandNotFound raised for invalid tmux_bin path

Passing a non-existent binary path previously surfaced as a raw
FileNotFoundError from subprocess. Both tmux_cmd and
raise_if_dead now catch FileNotFoundError and raise
TmuxCommandNotFound consistently.

Full Changelog: v0.54.0...v0.55.