Skip to main content

scripting library / orm for tmux

Project description

libtmux

libtmux is a scripting library for tmux. You can use it command and control tmux servers, sessions, windows, and panes. It is the tool behind tmuxp, a tmux workspace manager in python.

Python Package Docs Build Status Code Coverage License

libtmux builds upon tmux's target and formats to create an object mapping to traverse, inspect and interact with live tmux sessions.

View the documentation, API information and architectural details.

Python 2.x will be deprecated in libtmux 0.9. The backports branch is v0.8.x.

Install

$ pip install --user libtmux

Open a tmux session

Session name foo, window name bar

$ tmux new-session -s foo -n bar

Pilot your tmux session via python

$ python

Use ptpython, ipython, etc. for a nice shell with autocompletions:

$ pip install --user ptpython
$ ptpython

Connect to a live tmux session:

>>> import libtmux
>>> server = libtmux.Server()
>>> server
<libtmux.server.Server object at 0x7fbd622c1dd0>

Tip: You can also use tmuxp's tmuxp shell to drop straight into your current tmux server / session / window pane.

List sessions:

>>> server.list_sessions()
[Session($3 foo), Session($1 libtmux)]

Find session:

>>> server.get_by_id('$3')
Session($3 foo)

Find session by dict lookup:

>>> server.find_where({ "session_name": "foo" })
Session($3 foo)

Assign session to session:

>>> session = server.find_where({ "session_name": "foo" })

Control your session:

>>> session.new_window(attach=False, window_name="ha in the bg")
Window(@8 2:ha in the bg, Session($3 foo))
>>> session.kill_window("ha in")

Create new window in the background (don't switch to it):

>>> w = session.new_window(attach=False, window_name="ha in the bg")
Window(@11 3:ha in the bg, Session($3 foo))

Close window:

>>> w.kill_window()

Grab remaining tmux window:

>>> window = session.attached_window
>>> window.split_window(attach=False)
Pane(%23 Window(@10 1:bar, Session($3 foo)))

Rename window:

>>> window.rename_window('libtmuxower')
Window(@10 1:libtmuxower, Session($3 foo))

Split window (create a new pane):

>>> pane = window.split_window()
>>> pane = window.split_window(attach=False)
>>> pane.select_pane()
>>> window = session.new_window(attach=False, window_name="test")
>>> pane = window.split_window(attach=False)

Type inside the pane (send key strokes):

>>> pane.send_keys('echo hey send now')

>>> pane.send_keys('echo hey', enter=False)
>>> pane.enter()

Grab the output of pane:

>>> pane.clear()  # clear the pane
>>> pane.send_keys('cowsay hello')
>>> print('\n'.join(pane.cmd('capture-pane', '-p').stdout))
sh-3.2$ cowsay 'hello'
 _______
< hello >
 -------
        \   ^__^
         \  (oo)\_______
            (__)\       )\/\
                ||----w |
                ||     ||

Traverse and navigate:

>>> pane.window
Window(@10 1:libtmuxower, Session($3 foo))
>>> pane.window.session
Session($3 foo)

Donations

Your donations fund development of new features, testing and support. Your money will go directly to maintenance and development of the project. If you are an individual, feel free to give whatever feels right for the value you get out of the project.

See donation options at https://git-pull.com/support.html.

Project details

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

libtmux-0.11.0b4.tar.gz (196.5 kB view details)

Uploaded Source

Built Distribution

libtmux-0.11.0b4-py3-none-any.whl (29.0 kB view details)

Uploaded Python 3

File details

Details for the file libtmux-0.11.0b4.tar.gz.

File metadata

  • Download URL: libtmux-0.11.0b4.tar.gz
  • Upload date:
  • Size: 196.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.13 CPython/3.10.1 Linux/5.10.60.1-microsoft-standard-WSL2

File hashes

Hashes for libtmux-0.11.0b4.tar.gz
Algorithm Hash digest
SHA256 9da93087e5ae6eb54f974ceec778389c4036ca6393aeff1e87e5977583f92867
MD5 b249bd7b74a5120edf25419b5b9e8255
BLAKE2b-256 070a3e6c46a6fdc30764c412a8d51ea682942fa75f75b4742ad8b28ba36c41a9

See more details on using hashes here.

File details

Details for the file libtmux-0.11.0b4-py3-none-any.whl.

File metadata

  • Download URL: libtmux-0.11.0b4-py3-none-any.whl
  • Upload date:
  • Size: 29.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.13 CPython/3.10.1 Linux/5.10.60.1-microsoft-standard-WSL2

File hashes

Hashes for libtmux-0.11.0b4-py3-none-any.whl
Algorithm Hash digest
SHA256 9031bfd2eb645fd9d04a571b4a17068f5d1aa0c8d5e1f0741d7b41ea7180a87e
MD5 3aa9b9cabd4ec3ae4c50d3f73ef6afd4
BLAKE2b-256 a9142f01e2367eab0a9e2d29d7b239e68b7d5d1c500e5d1d2728457d00d0af38

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page