9 unstable releases (3 breaking)
0.6.0 | Aug 27, 2024 |
---|---|
0.5.0 | Apr 2, 2024 |
0.4.0 | Feb 20, 2024 |
0.3.12 |
|
0.3.6 | Mar 28, 2023 |
#165 in Command line utilities
78KB
1.5K
SLoC
Rusmux - tmux automation
Built primarily to replace tmuxinator while using it's yaml files.
tmuxinator
is written in Ruby, and various packages/gem upgrades broke
it occasionally, having me scrambling for a fix.
On top of that, installing it on various servers missing Ruby installation was a chore.
Thus rusmux was born. I've used it as an opportunity to:
- Work with the existing
.yml
project files oftmuxinator
. - Provide a single binary I can copy around.
- Further my knowledge and understanding of Rust and the tooling around it.
Example
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
Install
-
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
Commands
-
Run a project
rusmux [project]
or
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
.
Dependencies
~8–19MB
~283K SLoC