| Crates.io | rusmux |
| lib.rs | rusmux |
| version | 0.8.1 |
| created_at | 2023-03-07 18:57:19.709176+00 |
| updated_at | 2025-02-25 15:19:38.838672+00 |
| description | Automate tmux sessions configuration |
| homepage | https://github.com/MeirKriheli/rusmux |
| repository | https://github.com/MeirKriheli/rusmux |
| max_upload_size | |
| id | 803827 |
| size | 123,781 |
The main purpose of this project is to serve as a substitute for tmuxinator, while still utilizing its yaml files.
tmuxinator, which is written in Ruby, has had instances of breaking due to updates in packages/gems,
having me scrambling for a solution.
Furthermore, the process of installing it on different servers that lack a Ruby installation proved to be tedious.
Hence, rusmux was created. It served as a chance for me to:
.yml project files from tmuxinator.cat ~/.config/rusmux/demo.yml
project_name: demo # can also use name
project_root: ~/src/demo
on_project_start:
- sudo systemctl start postgresql
- sudo systemctl start mysqld
# on_project_stop:
pre_window:
- workon demo
- cd demo
windows:
- editor: vim
- shells:
layout: main-vertical
root: ~/src/demo/code # Optional per window root overriding `project_root`
options: # per window options
main-pane-width: 60%
panes:
- #
- grunt serve
- remote-log: # name is meaningless, for multi commands
- ssh me@example.com
- cd /var/logs
- tail -f project.log
- mail: python -m smtpd -n -c DebuggingServer localhost:1025
Arch Linux users can install rusmux from AUR,
e.g. (using paru):
paru -S rusmux
Get a compiled binary from the
Releases page and place it
in your $PATH.
With cargo:
cargo install rusmux
With shell script, for the specific version, see the release page, e.g:
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/MeirKriheli/rusmux/releases/download/v0.x.y/rusmux-installer.sh | sh
Run a project
rusmux run [project]
rusmux start [project]
List all existing projects
rusmux list
Output shell commands for a project
rusmux debug [project]
Edit an existing project ($EDITOR should be set)
rusmux edit [project]
Stop project's session
rusmux stop [project]
rusmux kill [project]
Delete an existing project (after confirmation)
rusmux delete [project]
Create a new project, and open it in an editor ($EDITOR should be set)
rusmux new [project]
This creates the project from default template. To create one with just the project name:
rusmux new [project] --blank
Copy an existing project to a new one and edit it ($EDITOR should be set)
rusmux copy [existing] [new]
Check your environment for potential issues
rusmux doctor
Checks for tmux in $PATH and $SHELL & $EDITOR are set.
NOTE In the commands above,
project,existingandnewcan be:
- A simple name, like
my_project,awesome_server, which will be created with ayamlextension in the config directory.- A path to a file (determined by an extension and/or path separator), e.g.
~/projects/my_project/session.yaml.
Under the completions directory you'll find the completion scripts for bash, zsh and fish.
Copy them to the relevant directories for your shell and OS. For system wide completions (Arch Linux in this example):
sudo cp completions/rusmux.bash /usr/share/bash-completion/completions/rusmux
sudo cp completions/rusmux.zsh /usr/share/zsh/site-functions/_rusmux
sudo cp completions/rusmux.fish /usr/share/fish/vendor_completions.d/rusmux.fish
For user directories, see your shell documentation.