Command Line Interface

Completion

In bash (~/.bashrc):

eval "$(_TMUXP_COMPLETE=source tmuxp)"

In zsh (~/.zshrc):

eval "$(_TMUXP_COMPLETE=source_zsh tmuxp)"

Shell

tmuxp shell

tmuxp shell <session_name>

tmuxp shell <session_name> <window_name>

tmuxp shell -c 'python code'

Launch into a python console with libtmux objects. Compare to django’s shell.

_images/tmuxp-shell.gif

Automatically preloads current tmux server, session, window pane. Pass additional arguments to select a specific one of your choice:

(Pdb) server
<libtmux.server.Server object at 0x7f7dc8e69d10>
(Pdb) server.sessions
[Session($1 your_project)]
(Pdb) session
Session($1 your_project)
(Pdb) session.name
'your_project'
(Pdb) window
Window(@3 1:your_window, Session($1 your_project))
(Pdb) window.name
'your_window'
(Pdb) window.panes
[Pane(%6 Window(@3 1:your_window, Session($1 your_project)))
(Pdb) pane
Pane(%6 Window(@3 1:your_window, Session($1 your_project)))

Python 3.7 supports PEP 553’s PYTHONBREAKPOINT and supports compatible debuggers, for instance ipdb:

$ pip install ipdb
$ env PYTHONBREAKPOINT=ipdb.set_trace tmuxp shell

You can also pass in python code directly, similar to python -c, do this via tmuxp -c:

$ tmuxp shell -c 'print(session.name); print(window.name)'
my_server
my_window

$ tmuxp shell my_server -c 'print(session.name); print(window.name)'
my_server
my_window

$ tmuxp shell my_server my_window -c 'print(session.name); print(window.name)'
my_server
my_window

$ tmuxp shell my_server my_window -c 'print(window.name.upper())'
MY_WINDOW

# Assuming inside a tmux pane or one is attached on default server
$ tmuxp shell -c 'print(pane.id); print(pane.window.name)'
%2
my_window

Shell detection

tmuxp shell detects the richest shell available in your site packages, you can also pick your shell via args:

  • --pdb: Use plain old breakpoint() (python 3.7+) or pdb.set_trace
  • --code: Drop into code.interact, accepts --use-pythonrc
  • --bpython: Drop into bpython
  • --ipython: Drop into ipython
  • --ptpython: Drop into ptpython, accepts --use-vi-mode
  • --ptipython: Drop into ipython + ptpython, accepts --use-vi-mode

Freeze sessions

tmuxp freeze <session_name>

You can save the state of your tmux session by freezing it.

Tmuxp will offer to save your session state to .json or .yaml.

Load session

You can load your tmuxp file and attach the vim session via a few shorthands:

  1. The directory with a .tmuxp.{yaml,yml,json} file in it
  2. The name of the project file in your $HOME/.tmuxp folder
  3. The direct path of the tmuxp file you want to load
# path to folder with .tmuxp.{yaml,yml,json}
tmuxp load .
tmuxp load ../
tmuxp load path/to/folder/
tmuxp load /path/to/folder/

# name of the config, assume $HOME/.tmuxp/myconfig.yaml
tmuxp load myconfig

# direct path to json/yaml file
tmuxp load ./myfile.yaml
tmuxp load /abs/path/to/myfile.yaml
tmuxp load ~/myfile.yaml

Absolute and relative directory paths are supported.

$ tmuxp load <filename>

Files named .tmuxp.yaml or .tmuxp.json in the current working directory may be loaded with:

$ tmuxp load .

Multiple sessions can be loaded at once. The first ones will be created without being attached. The last one will be attached if there is no -d flag on the command line.

$ tmuxp load <filename1> <filename2> ...

A session name can be provided at the terminal. If multiple sessions are created, the last session is named from the terminal.

$ tmxup load -s <new_session_name> <filename1> ...

The output of the load command can be logged to a file for debugging purposes. the log level can be controlled with the global --log-level option (defaults to INFO).

$ tmuxp load <filename> --log-file <log_filename>
$ tmuxp --log-level <LEVEL> load <filename> --log-file <log_filename>

Debug Info

Use to collect all relevant information for submitting an issue to the project.

$ tmuxp debug-info
--------------------------
environment:
    system: Linux
    arch: x86_64
...

Import

From teamocil

tmuxp import teamocil /path/to/file.{json,yaml}

From tmuxinator

tmuxp import tmuxinator /path/to/file.{json,yaml}

Convert between YAML and JSON

tmuxp convert /path/to/file.{json,yaml}

tmuxp automatically will prompt to convert .yaml to .json and .json to .yaml.