tmuxp

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

Installation

Install the tmuxp package.

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. tmuxp checks for files in $XDG_CONFIG_HOME/tmuxp (usually $HOME/.config/tmuxp), and $TMUXP_CONFIGDIR path (default $HOME/.tmuxp). Files inside can be loaded via filename, e.g. . So would be loadable via .
  3. Via 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.

gollark: These are small enough numbers that they probably shouldn't be copyrightable.
gollark: Every file is just a very large number expressed in base 256.
gollark: What? They obviously can.
gollark: Ah yes, illegal numbers.
gollark: * Kindles

See also

This article is issued from Archlinux. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.