tmuxp

From ArchWiki
Revision as of 02:12, 20 February 2017 by Indigo (talk | contribs) (title match for project/tool name)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

tmuxp is a session manager for the tmux terminal multiplexer. Compare to tmuxinator or teamocil.

Installation

Install the tmuxpAUR package.

tmuxp can also be installed via pip like this:

$ pip install --user tmuxp

Configurations

tmuxp accepts both JSON and YAML configurations. The YAML markup is similar to tmuxinator's.

You can put configurations in any directory to access them via 3 ways:

  1. Via absolute or relative file path tmuxp load file, tmuxp load ../myconfig
  2. In the $TMUXP_CONFIGDIR path (default $HOME/.tmuxp) and access them via tmuxp load basename. So $HOME/.tmuxp/myconfig.yaml would be loadable via tmuxp load myconfig.
  3. Via .tmuxp.yaml in a project or directory (so you can store configs in a VCS per-project / folder. And then tmuxp load path/to/dir

A sample YAML configuration with 4 panes:

session_name: 4-pane-split
windows:
- window_name: dev window
  layout: tiled
  shell_command_before:
    - cd ~/                    # run as a first command in all panes
  panes:
    - shell_command:           # pane no. 1
        - cd /var/log          # run multiple commands in this pane
        - ls -al | grep \.log
    - echo second pane         # pane no. 2
    - echo third pane          # pane no. 3
    - echo forth pane          # pane no. 4

tmuxp is also capable of running arbitrary scripts before building tmux sessions via before_script. In this example, from the tmuxp project itself, a bootstrap script runs which creates a virtualenv (python package environment) for the project and installs dependency packages. In addition, the session configures all panes to source the project's virtualenv:

session_name: tmuxp
start_directory: ./ # load session relative to config location (project root).
before_script: ./bootstrap_env.py # ./ to load relative to project root.
windows:
- window_name: tmuxp
  focus: True
  layout: main-horizontal
  options:
    main-pane-height: 35
  shell_command_before:
    - '[ -d .venv -a -f .venv/bin/activate ] && source .venv/bin/activate'
  panes:
  - focus: true
  - pane 
  - make watch_test
- window_name: docs
  layout: main-horizontal
  options:
    main-pane-height: 35
  start_directory: doc/
  shell_command_before: 
    - '[ -d ../.venv -a -f ../.venv/bin/activate ] && source ../.venv/bin/activate'
  panes:
  - focus: true
  - pane
  - make serve
  - make watch

More examples are available in the documentation showcasing YAML, as well as JSON configurations.

See also