Changelog#
To install the unreleased libtmux version, see developmental releases.
pip:
$ pip install --user --upgrade --pre libtmux
libtmux 0.20.x (unreleased)#
Notes on upcoming releases will be added here
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 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 features
Packaging#
Remove
.tmuxp-before-script.shfrom.tmuxp.yaml
libtmux 0.15.4 (2022-09-21)#
Bug fixes#
Packaging#
libtmux 0.15.3 (2022-09-20)#
Tests / docs#
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 releaseBug fixes 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 compatiblity 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.InvalidOptionand {}libtmux.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_sesssionparam 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.