Rusmux - tmux automation
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:
- Utilize the existing
.ymlproject files fromtmuxinator. - Generate a standalone binary that can be easily distributed.
- Enhance my skills and comprehension of Rust and its associated tools.
Example
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
Install
-
Arch Linux users can install rusmux from AUR, e.g. (using
paru): -
Get a compiled binary from the Releases page and place it in your
$PATH. -
With
cargo: -
With shell script, for the specific version, see the release page, e.g:
|
Commands
-
Run a project
-
List all existing projects
-
Output shell commands for a project
-
Edit an existing project (
$EDITORshould be set) -
Stop project's session
-
Delete an existing project (after confirmation)
-
Create a new project, and open it in an editor (
$EDITORshould be set)This creates the project from default template. To create one with just the project name:
-
Copy an existing project to a new one and edit it (
$EDITORshould be set) -
Check your environment for potential issues
Checks for
tmuxin$PATHand$SHELL&$EDITORare 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.
Shell completion
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):
For user directories, see your shell documentation.