Crates.io | rusmux |
lib.rs | rusmux |
version | 0.7.0 |
source | src |
created_at | 2023-03-07 18:57:19.709176 |
updated_at | 2024-12-03 11:01:46.216514 |
description | Automate tmux sessions configuration |
homepage | https://github.com/MeirKriheli/rusmux |
repository | https://github.com/MeirKriheli/rusmux |
max_upload_size | |
id | 803827 |
size | 115,609 |
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
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
,existing
andnew
can be:
- A simple name, like
my_project
,awesome_server
, which will be created with ayaml
extension in the config directory.- A path to a file (determined by an extension and/or path separator), e.g.
~/projects/my_project/session.yaml
.