Utilities¶
Helper methods and mixins for libtmux.
libtmux.common¶
-
libtmux.common.TMUX_MIN_VERSION = '3.2a'¶libtmux.common.TMUX_MIN_VERSION = '3.2a'¶
Minimum version of tmux required to run libtmux
-
libtmux.common.TMUX_MAX_VERSION = '3.7'¶libtmux.common.TMUX_MAX_VERSION = '3.7'¶
Most recent version of tmux supported
-
class libtmux.common.CmdProtocol¶class libtmux.common.CmdProtocol¶
Bases:
ProtocolCommand protocol for tmux command.
-
class libtmux.common.CmdMixin¶class libtmux.common.CmdMixin¶
Bases:
objectCommand mixin for tmux command.
-
class libtmux.common.EnvironmentMixin¶class libtmux.common.EnvironmentMixin¶
Bases:
objectMixin for manager session and server level environment variables in tmux.
-
libtmux.common.raise_if_stderr(proc, subcommand)¶libtmux.common.raise_if_stderr(proc, subcommand)¶
Raise
LibTmuxExceptiontagged with the tmux subcommand on stderr.Centralizes the
if proc.stderr: raise exc.LibTmuxException(proc.stderr)pattern scattered across the wrappers. Tags the exception with the originating tmux subcommand so downstream consumers (e.g. libtmux-mcp’shandle_tool_errors) keep the “which tmux command failed” context.- Parameters:
proc (
tmux_cmd) – Result of aServer.cmd()/Session.cmd()/ etc. call.subcommand (
str) – The tmux subcommand the wrapper invoked, e.g."last-window","swap-pane". Surfaces instr(exc)as a"<subcommand>: …"prefix.
- Raises:
LibTmuxException– Whenproc.stderris non-empty.- Return type:
Examples
>>> from libtmux.common import raise_if_stderr >>> from libtmux import exc >>> proc = session.cmd("display-message", "-p", "#{session_id}") >>> raise_if_stderr(proc, "display-message") # no stderr → no raise
Added in version 0.57.
-
class libtmux.common.tmux_cmd¶class libtmux.common.tmux_cmd¶
Bases:
objectRun any tmux(1) command through
subprocess.Examples
Create a new session, check for error:
>>> proc = tmux_cmd(f'-L{server.socket_name}', 'new-session', '-d', '-P', '-F#S') >>> if proc.stderr: ... raise exc.LibTmuxException( ... 'Command: %s returned error: %s' % (proc.cmd, proc.stderr) ... ) ...
>>> print(f'tmux command returned {" ".join(proc.stdout)}') tmux command returned 2
Equivalent to:
$ tmux new-session -s my session
Notes
Changed in version 0.8: Renamed from
tmuxtotmux_cmd.
Bases:
ExceptionInternal signal: this tmux predates the
-Vflag (pre-1.7).
-
libtmux.common._no_version_flag_fallback()¶libtmux.common._no_version_flag_fallback()¶
Return a synthetic version string when tmux lacks
-V.OpenBSD ships a
-V-less base tmux, so assume the maximum supported version; any other platform is genuinely too old.- Return type:
-
libtmux.common._query_version(tmux_bin=None)¶libtmux.common._query_version(tmux_bin=None)¶
Return the raw
tmux -Vversion token, letter suffix intact.Runs
tmux -Vand extracts the version token (e.g."3.7a","master","next-3.8"). Not memoized –get_version()andget_version_str()each cache their own result on top of this query.- Parameters:
tmux_bin (
str,optional) – Path to tmux binary. If None, uses the system tmux.- Returns:
Raw version token from
tmux -V.- Return type:
- Raises:
_TmuxVersionUnavailable– tmux predates the-Vflag; callers apply_no_version_flag_fallback().VersionTooLow– tmux reported another error on-V.
-
libtmux.common.get_version_str(tmux_bin=None)¶libtmux.common.get_version_str(tmux_bin=None)¶
Return the tmux version string verbatim, preserving letter suffixes.
get_version()normalizes point releases for numeric comparison ("3.7a"becomesLooseVersion("3.7")). This helper keeps the raw suffix, so callers can distinguish patch releases whose behavior differs – for example the tmux 3.7 break-pane crash, reverted in 3.7a.Examples
>>> isinstance(get_version_str(), str) True
Notes
Memoized via
functools.cache(), keyed on tmux_bin, independently ofget_version(). Callget_version_str.cache_clear()after swapping the tmux binary.
-
libtmux.common.get_version(tmux_bin=None)¶libtmux.common.get_version(tmux_bin=None)¶
Return tmux version.
If tmux is built from git master, the version returned will be the latest version appended with -master, e.g.
2.4-master.If using OpenBSD’s base system tmux, the version will have
-openbsdappended to the latest version, e.g.2.4-openbsd.- Parameters:
tmux_bin (
str,optional) – Path to tmux binary. If None, uses the system tmux fromshutil.which().- Returns:
tmux version according to tmux_bin if provided, otherwise the system tmux from
shutil.which()- Return type:
distutils.version.LooseVersion
Notes
Memoized via
functools.cache(), keyed on the tmux_bin argument (Noneis a distinct key from any explicit path), independently ofget_version_str(). The cache is sticky acrossPATHchanges and on-disk binary swaps when tmux_bin isNoneor the same path string – callget_version.cache_clear()to invalidate. Tests that monkey-patchtmux_cmdshould callcache_clear()before asserting parsed-version behavior.
-
libtmux.common.has_version(version, tmux_bin=None)¶libtmux.common.has_version(version, tmux_bin=None)¶
Return True if tmux version installed.
-
libtmux.common.has_gt_version(min_version, tmux_bin=None)¶libtmux.common.has_gt_version(min_version, tmux_bin=None)¶
Return True if tmux version greater than minimum.
-
libtmux.common.has_gte_version(min_version, tmux_bin=None)¶libtmux.common.has_gte_version(min_version, tmux_bin=None)¶
Return True if tmux version greater or equal to minimum.
-
libtmux.common.has_lte_version(max_version, tmux_bin=None)¶libtmux.common.has_lte_version(max_version, tmux_bin=None)¶
Return True if tmux version less or equal to minimum.
-
libtmux.common.has_lt_version(max_version, tmux_bin=None)¶libtmux.common.has_lt_version(max_version, tmux_bin=None)¶
Return True if tmux version less than minimum.
-
libtmux.common.has_minimum_version(raises=True, tmux_bin=None)¶libtmux.common.has_minimum_version(raises=True, tmux_bin=None)¶
Return True if tmux meets version requirement. Version >= 3.2a.
- Parameters:
- Returns:
True if tmux meets minimum required version.
- Return type:
- Raises:
libtmux.exc.VersionTooLow– tmux version below minimum required for libtmux
Notes
Changed in version 0.49.0: Minimum version bumped to 3.2a. For older tmux, use libtmux v0.48.x.
Changed in version 0.7.0: No longer returns version, returns True or False
Changed in version 0.1.7: Versions will now remove trailing letters per Issue 55.
-
libtmux.common.session_check_name(session_name)¶libtmux.common.session_check_name(session_name)¶
Raise exception session name invalid, modeled after tmux function.
tmux(1) session names may not be empty, or include periods or colons. These delimiters are reserved for noting session, window and pane.
- Parameters:
session_name (
str) – Name of session.- Raises:
exc.BadSessionName– Invalid session name.- Return type: