Skip to content

Latest commit

 

History

History
220 lines (145 loc) · 4.82 KB

cli.rst

File metadata and controls

220 lines (145 loc) · 4.82 KB

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.

_static/tmuxp-shell.gif

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

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.