tmuxp has a short-hand syntax to for those who wish to keep their configs punctual.
short hand
.. aafig:: :textual: +-------------------+ | 'did you know' | | 'you can inline' | +-------------------+ | 'single commands' | | | +-------------------+ | 'for panes' | | | +-------------------+
.. literalinclude:: ../examples/shorthands.yaml :language: yaml
.. literalinclude:: ../examples/shorthands.json :language: json
No need to repeat pwd
or a dummy command. A null
, 'blank'
,
'pane'
are valid.
Note ''
counts as an empty carriage return.
.. literalinclude:: ../examples/blank-panes.yaml :language: yaml
.. literalinclude:: ../examples/blank-panes.json :language: json
2 pane
.. aafig:: +-----------------+ | $ pwd | | | | | +-----------------+ | $ pwd | | | | | +-----------------+
.. literalinclude:: ../examples/2-pane-vertical.yaml :language: yaml
.. literalinclude:: ../examples/2-pane-vertical.json :language: json
3 panes
.. aafig:: +-----------------+ | $ pwd | | | | | +--------+--------+ | $ pwd | $ pwd | | | | | | | +--------+--------+
.. literalinclude:: ../examples/3-pane.yaml :language: yaml
.. literalinclude:: ../examples/3-pane.json :language: json
4 panes
.. aafig:: +--------+--------+ | $ pwd | $ pwd | | | | | | | +--------+--------+ | $ pwd | $ pwd | | | | | | | +--------+--------+
.. literalinclude:: ../examples/4-pane.yaml :language: yaml
.. literalinclude:: ../examples/4-pane.json :language: json
Equivalent to tmux new-window -c <start-directory>
.
.. literalinclude:: ../examples/start-directory.yaml :language: yaml
.. literalinclude:: ../examples/start-directory.json :language: json
tmuxp will replace environment variables wrapped in curly brackets for the following variables:
start_directory
before_script
session_name
window_name
shell_command_before
tmuxp replaces these variables before-hand with variables in the
terminal tmuxp
invokes in.
In this case of this example, assuming the username "user":
$ MY_ENV_VAR=foo tmuxp load examples/env-variables.yaml
and your session name will be session - user (foo)
.
Shell variables in shell_command
do not support this type of
concatenation. shell_command
and shell_command_before
both
support normal shell variables, since they are sent into panes
automatically via send-key
in tmux(1)
. See ls $PWD
in
example.
If you have a special case and would like to see behavior changed, please make a ticket on the issue tracker.
.. literalinclude:: ../examples/env-variables.yaml :language: yaml
.. literalinclude:: ../examples/env-variables.json :language: json
tmuxp allows focus: true
for assuring windows and panes are attached /
selected upon loading.
.. literalinclude:: ../examples/focus-window-and-panes.yaml :language: yaml
.. literalinclude:: ../examples/focus-window-and-panes.json :language: json
You can specify a window's index using the window_index
property. Windows
without window_index
will use the lowest available window index.
.. literalinclude:: ../examples/window-index.yaml :language: yaml
.. literalinclude:: ../examples/window-index.json :language: json
.. literalinclude:: ../examples/automatic-rename.yaml :language: yaml
.. literalinclude:: ../examples/automatic-rename.json :language: json
.. literalinclude:: ../examples/main-pane-height.yaml :language: yaml
.. literalinclude:: ../examples/main-pane-height.json :language: json
.. seealso:: :ref:`tmuxp developer config` in the :ref:`developing` section.
.. literalinclude:: ../.tmuxp.yaml :language: yaml
.. literalinclude:: ../.tmuxp.json :language: json
You can use before_script
to run a script before the tmux session
starts building. This can be used to start a script to create a virtualenv
or download a virtualenv/rbenv/package.json's dependency files before
tmuxp even begins building the session.
It works by using the Exit Status code returned by a script. Your script can be any type, including bash, python, ruby, etc.
A successful script will exit with a status of 0
.
Important: the script file must be chmod executable +x
or 755
.
Run a python script (and check for it's return code), the script is relative to the ``.tmuxp.yaml``'s root (Windows and panes omitted in this example):
session_name: my session
before_script: ./bootstrap.py
# ... the rest of your config
{
"session_name": "my session",
"before_script": "./bootstrap.py"
}
Run a shell script + check for return code on an absolute path. (Windows and panes omitted in this example)
session_name: another example
before_script: /absolute/path/this.sh # abs path to shell script
# ... the rest of your config
{
"session_name": "my session",
"before_script": "/absolute/path/this.sh"
}
You can load your software project in tmux by placing a .tmuxp.yaml
or
.tmuxp.json
in the project's config and loading it.
tmuxp supports loading configs via absolute filename with tmuxp load
and via $ tmuxp load .
if config is in directory.
$ tmuxp load ~/workspaces/myproject.yaml
See examples of tmuxp
in the wild. Have a project config to show off?
Edit this page.
- https://github.com/tony/dockerfiles/blob/master/.tmuxp.yaml
- https://github.com/tony/pullv/blob/master/.tmuxp.yaml
- https://github.com/tony/sphinxcontrib-github/blob/master/.tmuxp.yaml
You can use start_directory: ./
to make the directories relative to
the config file / project root.
Note
tmuxp sessions can be scripted in python. The first way is to use the ORM in the :ref:`API`. The second is to pass a :py:obj:`dict` into :class:`tmuxp.WorkspaceBuilder` with a correct schema. See: :meth:`tmuxp.config.validate_schema`.
Add yours? Submit a pull request to the github site!