ChangelogΒΆ
For instructions on installing the development version of libtmux, refer to development releases.
pip:
$ pip install --user --upgrade --pre libtmux
pipx:
$ pipx install --suffix=@next 'libtmux' --pip-args '\--pre' --force
// Usage: libtmux@next [command]
uv:
$ uv add libtmux --prerelease allow
uvx:
$ uvx --from 'libtmux' --prerelease allow python
libtmux 0.48.x (Yet to be released)ΒΆ
Future release notes will be placed here
libtmux 0.47.0 (2025-11-01)ΒΆ
Breaking changesΒΆ
DevelopmentΒΆ
libtmux 0.46.2 (2025-05-26)ΒΆ
DevelopmentΒΆ
Add
StrPathtype support forstart_directoryparameters (#596, #597, #598):Server.new_session: Accept PathLike objects for session start directorySession.new_window: Accept PathLike objects for window start directoryPane.splitandPane.split_window: Accept PathLike objects for pane start directoryWindow.splitandWindow.split_window: Accept PathLike objects for pane start directoryEnables
pathlib.Pathobjects alongside strings for all start directory parametersIncludes comprehensive tests for all parameter types (None, empty string, string paths, PathLike objects)
libtmux 0.46.1 (2025-03-16)ΒΆ
Maintenance only, no bug fixes or new features
A version branch has been created at v0.46.x, the next release of v0.47.0 may be a few months in waiting (watchers / snapshots are in development in #587).
DocumentationΒΆ
libtmux 0.46.0 (2025-02-25)ΒΆ
BreakingΒΆ
Imports removed from libtmux.test (#580)ΒΆ
Root-level of imports from libtmux.test are no longer possible.
# Before 0.46.0
from libtmux.test import namer
# From 0.46.0 onward
from libtmux.test.named import namer
Same thing with constants:
# Before 0.46.0
from libtmux.test import (
RETRY_INTERVAL_SECONDS,
RETRY_TIMEOUT_SECONDS,
TEST_SESSION_PREFIX
)
# From 0.46.0 onward
from libtmux.test.constants import (
RETRY_INTERVAL_SECONDS,
RETRY_TIMEOUT_SECONDS,
TEST_SESSION_PREFIX
)
DevelopmentΒΆ
Test helpers: Increased coverage (#580)ΒΆ
Several improvements to the test helper modules:
Enhanced
EnvironmentVarGuardinlibtmux.test.environmentto better handle variable cleanupAdded comprehensive test suites for test constants and environment utilities
Improved docstrings and examples in
libtmux.test.randomwith test coverage annotationsFixed potential issues with environment variable handling during tests
Added proper coverage markers to exclude type checking blocks from coverage reports
libtmux 0.45.0 (2025-02-23)ΒΆ
Breaking ChangesΒΆ
Test helpers: RefactorΒΆ
Test helper functionality has been split into focused modules (#578):
libtmux.testmodule split into:libtmux.test.constants: Test-related constants (TEST_SESSION_PREFIX, etc.)libtmux.test.environment: Environment variable mockinglibtmux.test.random: Random string generation utilitieslibtmux.test.temporary: Temporary session/window management
Breaking: Import paths have changed. Update imports:
# Old (0.44.x and earlier)
from libtmux.test import (
TEST_SESSION_PREFIX,
get_test_session_name,
get_test_window_name,
namer,
temp_session,
temp_window,
EnvironmentVarGuard,
)
# New (0.45.0+)
from libtmux.test.constants import TEST_SESSION_PREFIX
from libtmux.test.environment import EnvironmentVarGuard
from libtmux.test.random import get_test_session_name, get_test_window_name, namer
from libtmux.test.temporary import temp_session, temp_window
DevelopmentΒΆ
libtmux 0.44.2 (2025-02-17)ΒΆ
Bug fixΒΆ
DevelopmentΒΆ
Improved test organization and coverage in
test_common.py(#570):Consolidated version-related tests into parametrized fixtures using NamedTuples
Added comprehensive test cases for various version formats (master, next, OpenBSD, dev, rc)
Improved test readability with clear test IDs and logical grouping
Consistent use of pytest parametrize convention across test suite
libtmux 0.44.1 (2025-02-17)ΒΆ
PackagingΒΆ
libtmux 0.44.0 (2025-02-16)ΒΆ
New FeaturesΒΆ
Context Managers support (#566)ΒΆ
Added context manager support for all major object types:
Server: Automatically kills the server when exiting the contextSession: Automatically kills the session when exiting the contextWindow: Automatically kills the window when exiting the contextPane: Automatically kills the pane when exiting the context
Example usage:
with Server() as server:
with server.new_session() as session:
with session.new_window() as window:
with window.split() as pane:
pane.send_keys('echo "Hello"')
# Do work with the pane
# Everything is cleaned up automatically when exiting contexts
This makes it easier to write clean, safe code that properly cleans up tmux resources.
libtmux 0.43.0 (2025-02-15)ΒΆ
New FeaturesΒΆ
Server Initialization CallbacksΒΆ
Server now accepts 2 new optional params, socket_name_factory and on_init callbacks (#565):
socket_name_factory: Callable that generates unique socket names for new serverson_init: Callback that runs after server initializationUseful for creating multiple servers with unique names and tracking server instances
Socket name factory is tried after socket_name, maintaining backward compatibility
New test fixture: TestServerΒΆ
Add TestServer pytest fixture for creating temporary tmux servers (#565):
Creates servers with unique socket names that clean up after themselves
Useful for testing interactions between multiple tmux servers
Includes comprehensive test coverage and documentation
Available in doctest namespace
DocumentationΒΆ
libtmux 0.42.1 (2024-02-15)ΒΆ
Bug fixesΒΆ
DevelopmentΒΆ
libtmux 0.42.0 (2025-02-02)ΒΆ
Bug fixesΒΆ
libtmux 0.41.0 (2025-02-02)ΒΆ
FixesΒΆ
DocumentationΒΆ
DevelopmentΒΆ
chore: Implement PEP 563 deferred annotation resolution (#555)ΒΆ
Add
from __future__ import annotationsto defer annotation resolution and reduce unnecessary runtime computations during type checking.Enable Ruff checks for PEP-compliant annotations:
For more details on PEP 563, see: https://peps.python.org/pep-0563/
libtmux 0.40.1 (2024-12-24)ΒΆ
Bug fixΒΆ
libtmux 0.40.0 (2024-12-20)ΒΆ
Maintenance only, no bug fixes or new features
BreakingΒΆ
_globalrenamed toglobal_
DevelopmentΒΆ
libtmux 0.39.0 (2024-11-26)ΒΆ
Maintenance only, no bug fixes or new features
Breaking changesΒΆ
libtmux 0.38.1 (2024-11-26)ΒΆ
Keep minimum Python version at 3.8 for now.
libtmux 0.38.0 (2024-11-26)ΒΆ
Breaking changesΒΆ
Project and package management: poetry to uv (#547)ΒΆ
uv is the new package and project manager for the project, replacing Poetry.
Build system: poetry to hatchling (#547)ΒΆ
Build system moved from poetry to hatchling.
DevelopmentΒΆ
Code quality: Use f-strings in more places (#540)
via ruff 0.4.2.
DocumentationΒΆ
Fix docstrings in
query_listforMultipleObjectsReturnedandObjectDoesNotExist.
libtmux 0.37.0 (04-21-2024)ΒΆ
Maintenance only, no bug fixes or new features
TestingΒΆ
DocumentationΒΆ
Automatically linkify links that were previously only text.
DevelopmentΒΆ
poetry: 1.8.1 -> 1.8.2
See also: https://github.com/python-poetry/poetry/blob/1.8.2/CHANGELOG.md
libtmux 0.36.0 (2024-03-24)ΒΆ
Maintenance only, no bug fixes or new features
DevelopmentΒΆ
Aggressive automated lint fixes via
ruff(#539)via ruff v0.3.4, all automated lint fixes, including unsafe and previews were applied:
ruff check --select ALL . --fix --unsafe-fixes --preview --show-fixes; ruff format .
Branches were treated with:
git rebase \ --strategy-option=theirs \ --exec 'poetry run ruff check --select ALL . --fix --unsafe-fixes --preview --show-fixes; poetry run ruff format .; git add src tests; git commit --amend --no-edit' \ origin/master
libtmux 0.35.1 (2024-03-23)ΒΆ
Bug fixΒΆ
Server.attached_sessionsfix for when multiple clients attached, thank you @patrislav1 (#537)#538 fix to
QueryList.
libtmux 0.35.0 (2024-03-17)ΒΆ
Breaking changesΒΆ
libtmux 0.34.0 (2024-03-17)ΒΆ
Breaking changesΒΆ
Command target change (#535)ΒΆ
Commands: All cmd() methods using custom or overridden targets must use the keyword argument
target. This avoids entanglement with inner shell values that include -t for
other purposes. These methods include:
libtmux 0.33.0 (2024-03-17)ΒΆ
Breaking changesΒΆ
Improved new sessions (#532)ΒΆ
Session.new_window():Learned
direction, viaWindowDirection).
Added
Window.new_window()shorthand to create window based on that windowβs position.
Improved window splitting (#532)ΒΆ
Window.split_window()toWindow.split()Deprecate
Window.split_window()
Pane.split_window()toPane.split()Deprecate
Pane.split_window()Learned
direction, viaPaneDirection).Deprecate
verticalandhorizontalin favor ofdirection.
Learned
zoom
Tweak: Pane position (#532)ΒΆ
Itβs now possible to retrieve the position of a pane in a window via a
bool helper::
DevelopmentΒΆ
poetry: 1.7.1 -> 1.8.1
See also: https://github.com/python-poetry/poetry/blob/1.8.1/CHANGELOG.md
libtmux 0.32.0 (2024-03-01)ΒΆ
Maintenance only, no bug fixes or new features
PackagingΒΆ
DevelopmentΒΆ
ruff 0.2.2 -> 0.3.0
libtmux 0.31.0 (2024-02-17)ΒΆ
Cleanups (#527)ΒΆ
Streamline
{Server,Session,Window,Pane}.cmd(), across all usages to:Use
cmd: stras first positionalRemoved unused keyword arguments
**kwargs
Renamings (#527)ΒΆ
Session.attached_windowrenamed toSession.active_window()Session.attached_windowdeprecated
Session.attached_panerenamed toSession.active_pane()Session.attached_panedeprecated
Window.attached_panerenamed toWindow.active_pane()Window.attached_panedeprecated
Improvements (#527)ΒΆ
Server.attached_windowsnow usesQueryListβs.filter()
Documentation (#527)ΒΆ
Document
.cmdin README and quickstartAdd doctests and improve docstrings to
cmd()methods across:
Post-release: v0.31.0post0 (2024-02-17)ΒΆ
Documentation updates
libtmux 0.30.2 (2024-02-16)ΒΆ
DevelopmentΒΆ
Updated
TMUX_MAX_VERSIONfrom 3.3 to 3.4
libtmux 0.30.1 (2024-02-16)ΒΆ
FixesΒΆ
Adjusted pytest plugin and test module: Updated to use renamed methods from version 0.30.0.
libtmux 0.30.0 (2024-02-16)ΒΆ
AdditionsΒΆ
Introduced
Pane.kill()method
ModificationsΒΆ
Window.select_window()renamed toWindow.select()Deprecated
Window.select_window()
Pane.select_pane()renamed toPane.select()Deprecated
Pane.pane_select()
Session.attach_session()renamed toSession.attach()Deprecated
Session.attach_session()
Server.kill_server()renamed toServer.kill()Deprecated
Server.kill_server()
Session.kill_session()renamed toSession.kill()Deprecated
Session.kill_session()
Window.kill_window()renamed toWindow.kill()Deprecated
Window.kill_window()
EnhancementsΒΆ
Server.new_session(): Support environment variablesWindow.split_window(): Supportsizevia-lSupports columns/rows (
size=10) and percentage (size='10%')
libtmux 0.29.0 (2024-02-16)ΒΆ
FixesΒΆ
Use
DeprecationWarningfor APIs set to be deprecated (#526)
TestingΒΆ
pytest: Ignore
DeprecationWarningby default (#526)
libtmux 0.28.1 (2024-02-15)ΒΆ
Maintenance only, no bug fixes or new features
TestingΒΆ
CI: Bump actions to node 20+ versions
DocumentationΒΆ
Refine docs and add migration for v0.28.0
libtmux 0.28.0 (2024-02-14)ΒΆ
Breaking changesΒΆ
Detached / unselected by default (#523)ΒΆ
To ensure consistency and principle of least surprise, keep these set to
not use -a unless explicitly specified.
Breaking: Session.new_window() + Window.split_window() no longer attaches by default.
0.28.0 and greater: Defaults to
attach=False.0.27.1 and below: Defaults to
attach=True.
To keep the old behavior in 0.28.0 and beyond, pass attach=True explicitly.
Improved resizing (#523)ΒΆ
Breaking:
Pane.resize_pane()renamed toPane.resize()(#523)This convention will be more consistent with
Window.resize().Breaking:
Pane.resize()βs params changed (#523)No longer accepts
-U,-D,-L,-Rdirectly, instead acceptsResizeAdjustmentDirection).
-
Accept adjustments via
adjustment_directionw/ResizeAdjustmentDirection+adjustment.Learned to accept manual
heightand / orwidth(columns/rows or percentage)Zoom (and unzoom)
Window.resize(): Newly added
Tip: If Pane.resize() was not taking affect <= 0.27.1, try to resize with
Window.resize() first.
FixesΒΆ
Window.refresh()andPane.refresh(): Refresh more underlying state (#523)Obj._refresh(): Allow passing args (#523)e.g.
-a(all) tolist-panesandlist-windowsServer.panes: Fix listing of panes (#523)Would list only panes in attached session, rather than all in a server.
ImprovementΒΆ
TestsΒΆ
libtmux 0.27.1 (2024-02-07)ΒΆ
PackagingΒΆ
libtmux 0.27.0 (2024-02-07)ΒΆ
ImprovementΒΆ
libtmux 0.26.0 (2024-02-06)ΒΆ
Breaking changesΒΆ
DocumentationΒΆ
DevelopmentΒΆ
-
Add flake8-commas (COM)
Add flake8-builtins (A)
Add flake8-errmsg (EM)
CIΒΆ
Move CodeQL from advanced configuration file to GitHubβs default
libtmux 0.25.0 (2023-11-25)ΒΆ
ImprovementΒΆ
DevelopmentΒΆ
DocumentationΒΆ
libtmux 0.24.1 (2023-11-23)ΒΆ
PackagingΒΆ
libtmux 0.24.0 (2023-11-19)ΒΆ
Maintenance only, no bug fixes or new features
Breaking changesΒΆ
PackagingΒΆ
Poetry: 1.5.1 -> 1.6.1 (#497), 1.6.1 -> 1.7.0 (direct to trunk)
See also: https://github.com/python-poetry/poetry/blob/1.7.0/CHANGELOG.md
Packaging (poetry): Fix development dependencies
Per Poetryβs docs on managing dependencies and
poetry check, we had it wrong: Instead of using extras, we should create these:[tool.poetry.group.group-name.dependencies] dev-dependency = "1.0.0"
Which we now do.
DevelopmentΒΆ
Move formatting from
blacktoruff format(#506)This retains the same formatting style of
blackwhile eliminating a dev dependency by using our existing rust-basedrufflinter.CI: Update action packages to fix warnings
dorny/paths-filter: 2.7.0 -> 2.11.1
codecov/codecov-action: 2 -> 3
libtmux 0.23.2 (2023-09-09)ΒΆ
Maintenance only, no bug fixes or new features
Breaking changesΒΆ
Cut last python 3.7 release (EOL was June 27th, 2023)
For security updates, a 0.23.x branch can be maintained for a limited time, if necessary.
libtmux 0.23.1 (2023-09-02)ΒΆ
Maintenance only, no bug fixes or new features
DevelopmentΒΆ
Automated typo fixes from typos-cli:
typos --format brief --write-changesruff: Remove ERA /
eradicatepluginThis rule had too many false positives to trust. Other ruff rules have been beneficial.
libtmux 0.23.0 (2023-08-20)ΒΆ
Maintenance only, no bug fixes or new features
DevelopmentΒΆ
Post-release: v0.23.0post0 (2023-08-20)ΒΆ
Fixes code comments cleaned up by
ruff, but missed in QA. In the future, even when using an automated tool, we will review more thoroughly.
Post-release: v0.23.0post1 (2023-08-26)ΒΆ
Fixes for more
ERA001issues.
Post-release: v0.23.0post2 (2023-08-28)ΒΆ
Yet more
ERA001fixes.
libtmux 0.22.2 (2023-08-20)ΒΆ
DevelopmentΒΆ
libtmux 0.22.1 (2023-05-28)ΒΆ
Maintenance only, no bug fixes or new features
DevelopmentΒΆ
Add back
blackfor formattingThis is still necessary to accompany
ruff, until it replaces black.
libtmux 0.22.0 (2023-05-27)ΒΆ
Maintenance only, no bug fixes or new features
Internal improvementsΒΆ
Move formatting, import sorting, and linting to ruff.
This rust-based checker has dramatically improved performance. Linting and formatting can be done almost instantly.
This change replaces black, isort, flake8 and flake8 plugins.
poetry: 1.4.0 -> 1.5.0
See also: https://github.com/python-poetry/poetry/releases/tag/1.5.0
libtmux 0.21.1 (2023-04-07)ΒΆ
DevelopmentΒΆ
Update mypy to 1.2.0
FixesΒΆ
SkipDefaultFieldsReprMixin: Fix typing for mypy 1.2.0
libtmux 0.21.0 (2023-01-29)ΒΆ
Breaking internal changeΒΆ
libtmux 0.20.0 (2023-01-15)ΒΆ
Whatβs newΒΆ
libtmux 0.19.1 (2022-01-07)ΒΆ
FixesΒΆ
libtmux 0.19.0 (2022-01-07)ΒΆ
New featuresΒΆ
libtmux 0.18.3 (2023-01-07)ΒΆ
ImprovementΒΆ
libtmux 0.18.2 (2022-12-30)ΒΆ
FixesΒΆ
libtmux 0.18.1 (2022-12-28)ΒΆ
FixesΒΆ
Window.panes: Fix docstring
Remove unused code documentation
libtmux 0.18.0 (2022-12-27)ΒΆ
BreakingΒΆ
Server: Add
__repr__and setsocket_pathif none set.Before (0.17 and below):
<libtmux.server.Server object at ...>
New
__repr__(0.18+):Server(socket_name=test)
Server(socket_path=/tmp/tmux-1000/default)
libtmux 0.17.2 (2022-12-27)ΒΆ
Server: Move
_list_panesand_update_panesto deprecated
libtmux 0.17.1 (2022-12-27)ΒΆ
FixesΒΆ
Documentation fixes
Add deprecation warning to
Server.children,Session.children,Window.children.
libtmux 0.17.0 (2022-12-26)ΒΆ
Breaking changes (#426)ΒΆ
Finding objects / relations
0.16 and below:
session._windows(),session.list_windows(), etc.0.17 and after:
session.windows0.16 and below:
session.find_where({'window_name': my_window})0.17 and after:
session.windows.get(window_name=my_window, default=None)If not found and not
default, raisesObjectDoesNotExistIf multiple objects found, raises
MultipleObjectsReturned
0.16 and below:
session.where({'window_name': my_window})0.17 and after:
session.windows.filter(window_name=my_window)
Accessing attributes
0.16 and below:
window['id']0.17 and after:
window.id0.16 and below:
window.get('id')0.17 and after:
window.id0.16 and below:
window.get('id', None)0.17 and after:
getattr(window, 'id', None)
New featuresΒΆ
Detect if server active (#448)ΒΆ
Server.is_alive()Server.raise_if_dead()
InternalΒΆ
Remove unused
sphinx-clickdevelopment dependency
libtmux 0.16.1 (2022-12-12)ΒΆ
FixesΒΆ
libtmux 0.16.0 (2022-12-10)ΒΆ
Breaking changesΒΆ
Fix
distutilswarning, vendorizeLegacyVersion(#351)Removal of reliancy on
distutils.version.LooseVersion, which does not supporttmux(1)versions like3.1a.Fixes warning:
DeprecationWarning: distutils Version classes are deprecated. Use packaging.version instead.
The temporary workaround, before 0.16.0 (assuming setup.cfg):
[tool:pytest] filterwarnings = ignore:.* Use packaging.version.*:DeprecationWarning:: ignore:The frontend.Option(Parser)? class.*:DeprecationWarning::
FeaturesΒΆ
libtmux 0.15.10 (2022-11-05)ΒΆ
There will be more improvements over the coming weeks and months to shore up flakiness across shells and environments.
TestsΒΆ
libtmux 0.15.9 (2022-10-30)ΒΆ
Bug fixΒΆ
CIΒΆ
PackagingΒΆ
DevelopmentΒΆ
libtmux 0.15.8 (2022-10-02)ΒΆ
Bug fixΒΆ
libtmux 0.15.7 (2022-09-23)ΒΆ
libtmux 0.15.6 (2022-09-23)ΒΆ
Maintenance only, no bug fixes or new features
PackagingΒΆ
Remove
MANIFEST.inThis is handled by poetryβs
includein pyproject.toml.
libtmux 0.15.5 (2022-09-23)ΒΆ
Maintenance only, no bug fixes or new features
PackagingΒΆ
Remove
.tmuxp-before-script.shfrom.tmuxp.yaml
libtmux 0.15.4 (2022-09-21)ΒΆ
FixesΒΆ
PackagingΒΆ
libtmux 0.15.3 (2022-09-20)ΒΆ
Tests / docsΒΆ
Move conftest.py to root level (#440)
https://docs.pytest.org/en/stable/deprecations.html#pytest-plugins-in-non-top-level-conftest-files
Less conftest.py files
We can now run py.test for
README.mdwithout needing to proxy throughdocs/index.md
libtmux 0.15.2 (2022-09-17)ΒΆ
Maintenance release, no features or fixes
TestsΒΆ
PackagingΒΆ
pyproject.toml: Note pytest framework in trove classifiers
InfrastructureΒΆ
libtmux 0.15.1 (2022-09-11)ΒΆ
PackagingΒΆ
pyproject.toml: Drop old issues package, remove anther package from grouping
DocumentationΒΆ
Cleanup quickstart page
libtmux 0.15.0 (2022-09-10)ΒΆ
New featuresΒΆ
Added a pytest plugin, #411.
Breaking changesΒΆ
Remove
common.which()in favor ofshutil.which(), Credit: @rocksandska, via #407Fixes #402:
common.tmux_cmd()will only strip trailing empty lines. Before this change, all empty lines were filtered out. This will lead to a more accurate behavior when usingPane.capture_pane(). Credit: @rockandska, via #405.
DevelopmentΒΆ
TestsΒΆ
Test doctests in documentation via pytest-doctest-docutils (#410)
DocumentationΒΆ
Examples updated for correctness, #412 (cherry-picked from #410)
Render changelog in linkify_issues (#410)
Fix Table of contents rendering with sphinx autodoc with sphinx_toctree_autodoc_fix (#410)
libtmux 0.14.2 (2022-08-17)ΒΆ
FixesΒΆ
Server.new_session()really works withoutsession_name, #401 fixes #399. Improved tests and doctests added.
libtmux 0.14.1 (2022-08-17)ΒΆ
FixesΒΆ
Server.new_session()works withoutsession_name, #400 fixes #399This still passed
Noneto the session name, this was fixed in v0.14.2.
libtmux 0.14.0 (2022-08-05)ΒΆ
Breaking changesΒΆ
Pane.send_keys():suppress_historydefault value changed fromTruetoFalse, #395
Tests and docsΒΆ
libtmux 0.13.0 (2022-08-05)ΒΆ
Whatβs newΒΆ
Improved typings
Now
mypy --strictcompliant (#383)
Breaking changesΒΆ
Deprecated individual item lookups (#390)
Removed key lookups from
libtmux.common.EnvironmentMixin.show_environment()Only
EnvironmentMixin.show_environment()(without an argument) exists, and it still returns adict.Add key lookups via
libtmux.common.EnvironmentMixin.getenv()# Before server.show_environment('DISPLAY') # After server.getenv('DISPLAY') # Before session.show_environment('DISPLAY') # After session.getenv('DISPLAY')
Removed key lookups from
Session.show_options()session.show_options() # still returns dict, without an argument # Old session.show_options('DISPLAY') # Now session.show_option('DISPLAY')
Removed key lookups from
Window.show_window_options()window.show_window_options() # still returns dict, without an argument # Old window.show_window_options('DISPLAY') # Now window.show_window_option('DISPLAY')
DevelopmentΒΆ
libtmux 0.12.0 (2022-07-13)ΒΆ
CompatibilityΒΆ
DevelopmentΒΆ
DocumentationΒΆ
TestingΒΆ
retry(): Add deprecation warning. This will be removed in 0.13.x (#368, #372)New function
retry_until(): Polls a callback function for a set period of time until it returnsTrueor times out. By default it will raiselibtmux.exc.WaitTimeout, withraises=Falseit will returnFalse. Thank you @categulario! (#368, #372)#384 Chore: Use absolute modules rather than root-level to avoid cyclic imports.
# Bad / Old from libtmux import Server # Good / New from libtmux.server import Server
InternalsΒΆ
#382 [mypy] support added:
Basic mypy tests now pass
libtmux 0.11.0 (2022-03-10)ΒΆ
CompatibilityΒΆ
Python 3.7 and 3.8 returns in 0.12.0
Final python 3.7 and 3.8 releaseFixes and security updates will go tov0.11.xInternal: Use new separator to split
tmux(1)formatting information (#289, #343)The separator is configurable via
LIBTMUX_TMUX_FORMAT_SEPARATOR. If you ever have compatibility issues in the future let us know which default works best across versions.Credit: @JonathanRaiman and @jagguli
DevelopmentΒΆ
DocumentationΒΆ
Sidebar reorganized into sections
Added documentation on fetching developmental releases of libtmux
libtmux 0.10.3 (2022-01-10)ΒΆ
PackagingΒΆ
First experimental release using poetry build (#347). If you are packaging and run
across any difficulty please see #346.
CompatibilityΒΆ
DevelopmentΒΆ
libtmux 0.10.2 (2021-10-30)ΒΆ
#324: Update poetry to 1.1
CI: Use poetry 1.1.7 and
install-poetry.pyinstallerRelock poetry.lock at 1.1 (w/ 1.1.7βs fix)
#339 (CI): Lock python at 3.9 to avoid poetry issue with
dataclasses#341 #342:
Server.attached_sessions()now supports multiple attached sessions.Remove attached sessions limitation to not detect multiple attached clients, thank you @timoses
libtmux 0.10.1 (2021-06-16)ΒΆ
libtmux 0.10.0 (2021-06-16)ΒΆ
libtmux 0.9.0 (2021-06-14)ΒΆ
Python 2.7 support dropped.
libtmux 0.8.5 (2020-10-25)ΒΆ
#297: Enchance subprocess interaction std[in|out|err]. Needed for interact with big buffer, fixes #251, thank you @gil-obradors!
#303 Add
common.get_libtmux_versionwhich gives the tmux version as a loose constraint. Fix linking to terms inside docs, and duplicate description of module which sphinx warned about in api.rst.#266 Fix issue on local tests where env variables would cause show-environment to pause tests indefinitely.
libtmux 0.8.4 (2020-10-25)ΒΆ
#234:
Window.split_window: Allow passingpercent, Thank you @jinankjain!#289: Fix warning due to invalid escape sequences, Thank you @tirkarthi!
#295: Publish docs via our own action
#295: Move more packaging over to poetry, though weβll keep setup.py for the moment to ensure compatibility package maintainers.
#295: New development instructions
#295: Move doc/ to docs/
#296: CI: Test python 2.7, cache python packages, prevent running internal PRs twice
libtmux 0.8.3 (2020-08-16)ΒΆ
libtmux 0.8.2 (2019-06-02)ΒΆ
CHANGES updated to plain reStructuredText
Add
project_urlsto setup.py for pypi.Looser Pipfile versions, add Pipfile.lock
libtmux 0.8.1 (2019-01-26)ΒΆ
#117 Fix issue with renaming clients with tmux 2.7 on BSD/macOS machines.
#121 Support
literal=True(-l) inPane.send_keysfrom @ritiek#131 Fix for unicode commands in Python 2, thanks @myw
#172 Support for next-X.Y versions from @sloria
#120
capture_panesupport forPane#119
display_messagesupport forPaneSort imports with isort
Add sphinxcontrib-napoleon package for documentation
Move docstrings over to numpyβs style
libtmux 0.8.0 (2018-03-11)ΒΆ
#46 Change license from BSD to MIT
Move to new organization, tmux-python
Support package updates to pytest, sphinx, etc.
Travis/CI: Limit tests to Python 2.7 and 3.6 (removed 3.3 to 3.5)
Travis/CI: Update pypy veersions
#103
Server.new_sessionlearned how to run commands in window on session start, thanks @grimpy!#68 Make Server.has_session() use returncode, thanks @jlargentaye! This should make
has_sessionmore robust.
libtmux 0.7.8 (2018-03-04)ΒΆ
Port
retryfunction from tmuxp (https://github.com/tmux-python/tmuxp/issues/354)
libtmux 0.7.7 (2017-11-10)ΒΆ
Donβt add -x/-y in tmux >= 2.6 if running tmuxp from inside client.
libtmux 0.7.6 (2017-11-09)ΒΆ
Allow
Window.select_layoutwith no argsFix test where
bell-was no longer ambiguous as of tmux 2.6
libtmux 0.7.5 (2017-10-07)ΒΆ
Hotfix to support tmux 2.6 session creation
libtmux 0.7.4 (2017-08-19)ΒΆ
#65 Add session id to commands, thanks @askedrelic
libtmux 0.7.3 (2017-05-29)ΒΆ
Exact matches only supported on 2.1 and up
libtmux 0.7.2 (2017-05-29)ΒΆ
Support exact matching in
Server.has_session
libtmux 0.7.1 (2017-04-28)ΒΆ
#37 Improve support for formatted options like
pane-border-status. Thanks @kaushalmodi.
libtmux 0.7.0 (2017-04-27)ΒΆ
Support for python 2.6 dropped. New minimum version is 2.7
Add support for tmux 2.4, pypy and pypy3
Overhaul error handling when setting and showing options
Added
handle_option_errorfor handling option errorsAdded
libtmux.exc.OptionErrorbase exceptionAdded
libtmux.exc.InvalidOptionandlibtmux.exc.AmbiguousOptionlibtmux.exc.UnknownOptionnow extendslibtmux.exc.OptionError
Overhaul version checking
has_versionhas been renamed toget_versionget_versionwill return tmux built from git master as the latest version supported by the libtmux version with-masterat the end, e.g.2.4-masterget_versionwill return tmux on openbsd base system as the latest version supported by the libtmux version with-openbsdat the end, e.g.2.4-openbsdhas_required_tmux_versionhas been renamed tohas_minimum_versionadded
has_gt_version,has_gte_version,has_lt_version,has_lte_version,
Fixed up documentation in some session methods
Added pydoc exception info to option methods in window and sessions.
Added
TMUX_MIN_VERSIONandTMUX_MAX_VERSION
libtmux 0.6.5 (2017-04-02)ΒΆ
Fix
whichcommandAdd
TmuxCommandNotFoundexceptionAdd
tmux_search_pathsandappend_env_pathkwargs totmux_cmd.
libtmux 0.6.4 (2017-03-25)ΒΆ
#32 support for OpenBSDβs tmux
libtmux 0.6.3 (2017-02-08)ΒΆ
#25 support for working with tmux
master, thanks @sloria.
libtmux 0.6.2 (2017-01-19)ΒΆ
libtmux 0.6.1 (2016-12-20)ΒΆ
libtmux 0.6.0 (2016-09-16)ΒΆ
Raise exception for invalid session names. tmux does not allow names that are empty, contain periods or colons.
Remove unused
target_sessionparam inServer.attach_sessionandServer.switch_client.
libtmux 0.5.1 (2016-08-18)ΒΆ
#12 - fix logger message when tmux doesnβt exist in
PATH
libtmux 0.5 (2016-06-15)ΒΆ
libtmux 0.4.1 (2016-05-23)ΒΆ
update
which()to find tmux viaos.environ['PATH']. https://redd.it/4laeut
libtmux 0.4.0 (2016-05-23)ΒΆ
attributes for formatters are now accessible via
Session,WindowandPaneobjects.session.nameis equivalent tosession.get('session_name'), you can do the same with other properties in_info.window.name,pane.current_path,session.id,window.id,pane.id,session.index,window.index,pane.index, etc.attached_sessions,attached_windowandattached_paneare now properties._TMUXmetadata object changed to_info..findWhere()is nowfind_where.README and usage fixes
libtmux 0.3.0 (2016-05-23)ΒΆ
switch to pytest
libtmux 0.1.0 (2016-05-22)ΒΆ
libtmux forked from tmuxp.