Changelog#

For instructions on installing the development version of libtmux, refer to development releases.

To install via pip, use:

$ pip install --user --upgrade --pre libtmux

libtmux 0.37.x (Yet to be released)#

  • Future release notes will be placed here

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#

libtmux 0.35.0 (2024-03-17)#

Breaking changes#

  • Eliminate redundant targets / window_index’s across codebase (#536).

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)#

Improved window splitting (#532)#

  • Window.split_window() to Window.split()

    • Deprecate Window.split_window()

  • Pane.split_window() to Pane.split()

    • Deprecate Pane.split_window()

    • Learned direction, via PaneDirection).

      • Deprecate vertical and horizontal in favor of direction.

    • 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#

  • Add implicit imports to __init__.py (#531), thank you @ssbarnea.

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: str as first positional

    • Removed unused keyword arguments **kwargs

Renamings (#527)#

Improvements (#527)#

  • Server.attached_windows now uses QueryList’s .filter()

Documentation (#527)#

Post-release: v0.31.0post0 (2024-02-17)#

  • Documentation updates

libtmux 0.30.2 (2024-02-16)#

Development#

  • Updated TMUX_MAX_VERSION from 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#

Modifications#

  • Window.select_window() renamed to Window.select()

    • Deprecated Window.select_window()

  • Pane.select_pane() renamed to Pane.select()

    • Deprecated Pane.pane_select()

  • Session.attach_session() renamed to Session.attach()

    • Deprecated Session.attach_session()

  • Server.kill_server() renamed to Server.kill()

    • Deprecated Server.kill_server()

  • Session.kill_session() renamed to Session.kill()

    • Deprecated Session.kill_session()

  • Window.kill_window() renamed to Window.kill()

    • Deprecated Window.kill_window()

Enhancements#

libtmux 0.29.0 (2024-02-16)#

Fixes#

Testing#

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)#

Tip: If Pane.resize() was not taking affect <= 0.27.1, try to resize with Window.resize() first.

Fixes#

  • Window.refresh() and Pane.refresh(): Refresh more underlying state (#523)

  • Obj._refresh(): Allow passing args (#523)

    e.g. -a (all) to list-panes and list-windows

  • Server.panes: Fix listing of panes (#523)

    Would list only panes in attached session, rather than all in a server.

Improvement#

  • Pane, Window: Improve parsing of option values that return numbers (#520)

  • Obj._refresh: Allow passing list_extra_args to ensure list-windows and list-panes can return more than the target (#523)

Tests#

  • pytest: Fix usefixture warning (#519)

  • ci: Add tmux 3.4 to test matrix (#909)

libtmux 0.27.1 (2024-02-07)#

Packaging#

  • Include MIGRATION in source distribution tarball (#517, for #508)

libtmux 0.27.0 (2024-02-07)#

Improvement#

  • QueryList typings (#515)

    • This improves the annotations in descendant objects such as:

      • Server.sessions

      • Session.windows

      • Window.panes

    • Bolster tests (ported from libvcs): doctests and pytests

libtmux 0.26.0 (2024-02-06)#

Breaking changes#

  • get_by_id() (already deprecated) keyword argument renamed from id to Server.get_by_id(session_id), Session.get_by_id(window_id), and Window.get_by_id(pane_id) (#514)

Documentation#

  • Various docstring fixes and tweaks (#514)

Development#

  • Strengthen linting (#514)

    • Add flake8-commas (COM)

      • https://docs.astral.sh/ruff/rules/#flake8-commas-com

      • https://pypi.org/project/flake8-commas/

    • Add flake8-builtins (A)

      • https://docs.astral.sh/ruff/rules/#flake8-builtins-a

      • https://pypi.org/project/flake8-builtins/

    • Add flake8-errmsg (EM)

      • https://docs.astral.sh/ruff/rules/#flake8-errmsg-em

      • https://pypi.org/project/flake8-errmsg/

CI#

  • Move CodeQL from advanced configuration file to GitHub’s default

libtmux 0.25.0 (2023-11-25)#

Improvement#

  • Server.__eq__, Session.__eq__, Window.__eq__, Pane.__eq__ now returns False instead of raising AssertionError when type mismatches (#505, #510)

    Thank you @m1guelperez for Window.__eq__! (#505)

Development#

  • ci: Add pydocstyle rule to ruff (#509)

Documentation#

  • Add docstrings to functions, methods, classes, and packages (#509)

libtmux 0.24.1 (2023-11-23)#

Packaging#

  • Remove requirements/ folder, which was unused and deprecated by pyproject.toml (#507)

  • pyproject: Add gp-libs to test dependency group

libtmux 0.24.0 (2023-11-19)#

Maintenance only, no bug fixes or new features

Breaking changes#

  • Python 3.7 Dropped (#497)

Packaging#

  • Move pytest configuration to pyproject.toml (#499)

  • 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 black to ruff format (#506)

    This retains the same formatting style of black while eliminating a dev dependency by using our existing rust-based ruff linter.

  • CI: Update action packages to fix warnings

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-changes
    
  • ruff: Remove ERA / eradicate plugin

    This 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#

  • Code quality improved via ruff rules (#488)

    This includes fixes made by hand, and with ruff’s automated fixes. Despite selecting additional rules, which include import sorting, ruff runs nearly instantaneously when checking the whole codebase.

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 ERA001 issues.

Post-release: v0.23.0post2 (2023-08-28)#

  • Yet more ERA001 fixes.

libtmux 0.22.2 (2023-08-20)#

Development#

  • build system: Remove setuptools requirement (#495, in related to #493, #494)

libtmux 0.22.1 (2023-05-28)#

Maintenance only, no bug fixes or new features

Development#

  • Add back black for formatting

    This 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#

  • Default format separator (LIBTMUX_TMUX_FORMAT_SEPARATOR): | -> (#475, in re: #471, #472)

    Fixes buffer_sample with pipes causing fetch_objs()-powered listings to fail unexpectedly.

libtmux 0.20.0 (2023-01-15)#

What’s new#

  • Server.new_session: Accept x and y, thanks @rockandska (#469)

  • New test fixture: session_params. The dict is used directly in the session pytest fixture (#470)

libtmux 0.19.1 (2022-01-07)#

Fixes#

  • Window.set_window_option(): Remove .refresh() (#467)

    See also: https://github.com/tmux-python/tmuxp/issues/860

libtmux 0.19.0 (2022-01-07)#

New features#

  • pane.capture_pane() learned to accept start and end line numbers (#465)

libtmux 0.18.3 (2023-01-07)#

Improvement#

  • fetch_objs now raises ObjectDoesNotExist with detailed information on lookup that failed (#466)

libtmux 0.18.2 (2022-12-30)#

Fixes#

  • Server: Launching of new session with default socket (#857)

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 set socket_path if 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_panes and _update_panes to 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)#

New features#

Detect if server active (#448)#

  • Server.is_alive()

  • Server.raise_if_dead()

Internal#

  • Remove unused sphinx-click development dependency

libtmux 0.16.1 (2022-12-12)#

Fixes#

  • Remove reliance on packaging.version.Version (#461)

    This is too critical of a package to pin a dependency as it may interfere with other packages the user relies on. In addition, libtmux doesn’t need strict compatibility with packaging.

libtmux 0.16.0 (2022-12-10)#

Breaking changes#

  • Fix distutils warning, vendorize LegacyVersion (#351)

    Removal of reliancy on distutils.version.LooseVersion, which does not support tmux(1) versions like 3.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#

  • Window.split_window() and Session.new_window() now support an optional dictionary of environmental variables, via (#453), credit @zappolowski.

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#

  • Compatibility improvement for test_capture_pane and env (#452), credit: @zappolowski!

  • Remove more BASHisms from tests (#455)

libtmux 0.15.9 (2022-10-30)#

Bug fix#

  • tmux_cmd(): Fix raise of TmuxCommandNotFound (#450)

CI#

  • Use python 3.11 (#451)

Packaging#

  • Add python 3.11 to trove classifiers (#451)

Development#

  • Add python 3.11 to asdf and pyenv configurations (#451)

libtmux 0.15.8 (2022-10-02)#

Bug fix#

  • Session.new_window(): Improve support for window_name: '' downstream in tmuxp (#444, credit: @trankchung)

libtmux 0.15.7 (2022-09-23)#

  • Move .coveragerc -> pyproject.toml (#443)

libtmux 0.15.6 (2022-09-23)#

Maintenance only, no bug fixes or new features

Packaging#

  • Remove MANIFEST.in

    This is handled by poetry’s include in pyproject.toml.

libtmux 0.15.5 (2022-09-23)#

Maintenance only, no bug fixes or new features

Packaging#

  • Remove .tmuxp-before-script.sh from .tmuxp.yaml

libtmux 0.15.4 (2022-09-21)#

Fixes#

  • Use stable pytest API imports where possible to fix issues in downstream packaging on Arch (#441, via #442)

Packaging#

  • Add .tmuxp-before-script.sh (used by .tmuxp.yaml) and conftest.py to source distributoins (#441, via #442)

libtmux 0.15.3 (2022-09-20)#

Tests / docs#

  • Examples for pytest plugin (#439)

  • 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.md without needing to proxy through docs/index.md

libtmux 0.15.2 (2022-09-17)#

Maintenance release, no features or fixes

Tests#

  • pytest plugin: Initial tests (for testing the plugin itself, #423)

Packaging#

  • pyproject.toml: Note pytest framework in trove classifiers

Infrastructure#

  • CI speedups (#428)

    • Avoid fetching unused apt package

    • Split out release to separate job so the PyPI Upload docker image isn’t pulled on normal runs

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#

Breaking changes#

  • Remove common.which() in favor of shutil.which(), Credit: @rocksandska, via #407

  • Fixes #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 using Pane.capture_pane(). Credit: @rockandska, via #405.

  • Source files for libtmux modules moved to src/, via #414.

Development#

Tests#

Documentation#

libtmux 0.14.2 (2022-08-17)#

Fixes#

libtmux 0.14.1 (2022-08-17)#

Fixes#

libtmux 0.14.0 (2022-08-05)#

Breaking changes#

Tests and docs#

  • Initial doctests examples stubbed out #394

  • Fix bug in temp_window() context manager, #394

  • Pytest configuration conftest.py moved to libtmux/conftest.py, so doctest can detect the fixtures #394

libtmux 0.13.0 (2022-08-05)#

What’s new#

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 a dict.

    • 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')
      
  • Remove libtmux.test.retry(), deprecated since 0.12.x (#393)

Development#

  • Fix incorrect function name findWhere() (#391)

libtmux 0.12.0 (2022-07-13)#

Compatibility#

  • Brought back python 3.7 and 3.8 support (#375)

  • Support for tmux 3.3a

    • Add to CI

    • Bump TMUX_MAX_VERSION from 2.4 -> 3.3

      2.4 to 3.3a already worked, this is just the constant being updated.

Development#

  • Remove tox and tox-poetry-installer

    This created issues with running poetry while inside the virtualenv.

  • Typings: Core relations, e.g. Pane.window, Pane.session, Pane.server, Window.server #385

Documentation#

  • Renewed logo

  • Try out sphinx-autoapi for its table of contents generation (#367)

  • Break up API documentations for utilities, exception, and test helpers and remove duplicate docs from API page. Server, session, window, and pane docs are in the Reference section now.

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 returns True or times out. By default it will raise libtmux.exc.WaitTimeout, with raises=False it will return False. 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 release

    Fixes and security updates will go to v0.11.x

  • Internal: 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

  • Basic type annotations (#359, #361) via @otherJL0

Development#

  • Code cleanup (#362) from @otherJL0

  • Format with black w/ string normalization. This is a one-time diff (#354)

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#

  • Drop python 3.6 (#344)

  • Add python 3.10, though still packaging.version issues remain (#344)

    A compat module and version constraints will need to be added for this

Development#

  • poetry: 1.1.7 -> 1.1.12 (#344)

  • Add .pre-commit-config.yaml (#344)

libtmux 0.10.2 (2021-10-30)#

  • #324: Update poetry to 1.1

    • CI: Use poetry 1.1.7 and install-poetry.py installer

    • Relock poetry.lock at 1.1 (w/ 1.1.7’s fix)

  • #339 (CI): Lock python at 3.9 to avoid poetry issue with dataclasses

  • ci: Fix publishing docs (similar to #339)

  • #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)#

  • Update Window.select_window() for #271

libtmux 0.10.0 (2021-06-16)#

  • #321: Convert to markdown

  • #271: Fix select_window() by providing the session ID as argument to -t. Thanks @Flowdalic

  • Drop python 3.5 support

libtmux 0.9.0 (2021-06-14)#

Python 2.7 support dropped.

  • #306: chore: Remove python 2.7 support

  • #314: chore: Python 3.x syntax tweaks

  • #312: ci: Add tmux 3.2a to CI

  • chore: Update black to 21.6b0

  • #271: Fix select_window() by providing the session ID as argument to -t.

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_version which 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 passing percent, 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)#

  • #278: Fix Python deprecation warnings, thanks @d1618033

    Also thanks Flowdalic for a similar PR at #294

  • Add project_urls to setup.py

  • #293 Move from Pipfile to poetry

  • Fix show_option test in tmux 3.0

  • Clean up handle_option_error comments

  • Move CI to a GitHub action

libtmux 0.8.2 (2019-06-02)#

  • CHANGES updated to plain reStructuredText

  • Add project_urls to 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) in Pane.send_keys from @ritiek

  • #131 Fix for unicode commands in Python 2, thanks @myw

  • #172 Support for next-X.Y versions from @sloria

  • #120 capture_pane support for Pane

  • #119 display_message support for Pane

  • Sort 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_session learned how to run commands in window on session start, thanks @grimpy!

  • #68 Make Server.has_session() use returncode, thanks @jlargentaye! This should make has_session more robust.

libtmux 0.7.8 (2018-03-04)#

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_layout with no args

  • Fix 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)#

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

  • Overhaul version checking

    • has_version has been renamed to get_version

    • get_version will return tmux built from git master as the latest version supported by the libtmux version with -master at the end, e.g. 2.4-master

    • get_version will return tmux on openbsd base system as the latest version supported by the libtmux version with -openbsd at the end, e.g. 2.4-openbsd

    • has_required_tmux_version has been renamed to has_minimum_version

    • added 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_VERSION and TMUX_MAX_VERSION

libtmux 0.6.5 (2017-04-02)#

  • Fix which command

  • Add TmuxCommandNotFound exception

  • Add tmux_search_paths and append_env_path kwargs to tmux_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)#

  • #197 use LooseVersion instead of StrictVersion for version checks. Thanks @minijackson.

  • Pin packages with pyup.io

  • #21 Readme fix from @huwenchao.

libtmux 0.6.1 (2016-12-20)#

  • #18 Fix logger, courtesy of @geekli

  • #19 Add support for start_directory in new sessions and panes, courtesy of @gandelman-a.

  • Fix tests and add official support for 2.3

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_session param in Server.attach_session and Server.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)#

  • #8 new exception UnknownOption

  • #8 return None for options that are valid tmux options, but unset at that scope.

  • #6 major documentation overhaul

libtmux 0.4.1 (2016-05-23)#

libtmux 0.4.0 (2016-05-23)#

  • attributes for formatters are now accessible via Session, Window and Pane objects. session.name is equivalent to session.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_window and attached_pane are now properties.

  • _TMUX metadata object changed to _info.

  • .findWhere() is now find_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.