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.
(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 oldbreakpoint()(python 3.7+) orpdb.set_trace--code: Drop intocode.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:
- The directory with a
.tmuxp.{yaml,yml,json}file in it - The name of the project file in your {}
$HOME/.tmuxpfolder - 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?
[y/n/a]:
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
--------------------------
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.

