Command Line Interface


In bash (~/.bashrc):

eval "$(_TMUXP_COMPLETE=source tmuxp)"

In zsh (~/.zshrc):

eval "$(_TMUXP_COMPLETE=source_zsh tmuxp)"


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.


Automatically preloads current tmux {class}`server <libtmux.Server>`,
{class}`session <libtmux.Session>`, {class}`window <libtmux.Window>`
{class}`pane <libtmux.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) window
Window(@3 1:your_window, Session($1 your_project))
(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(; print('

$ tmuxp shell my_server -c 'print(; print('

$ tmuxp shell my_server my_window -c 'print(; print('

$ tmuxp shell my_server my_window -c 'print('

# Assuming inside a tmux pane or one is attached on default server
$ tmuxp shell -c 'print(; print('

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 .

If you try to load a config file from within a tmux session, it will ask you if you want to load and attach to the new session, or just load detached. You can also load a config file and append the windows to the current active session.

Already inside TMUX, switch to session? yes/no
Or (a)ppend windows in the current active session?

All of these options can be preselected to skip the prompt:

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.

$ tmuxp 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
    system: Linux
    arch: x86_64


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.