Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/meirkriheli/rusmux
Tmux automation in rust
https://github.com/meirkriheli/rusmux
rust tmux
Last synced: about 5 hours ago
JSON representation
Tmux automation in rust
- Host: GitHub
- URL: https://github.com/meirkriheli/rusmux
- Owner: MeirKriheli
- License: mit
- Created: 2019-03-29T14:19:58.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2024-11-12T12:13:52.000Z (8 days ago)
- Last Synced: 2024-11-12T12:38:03.879Z (8 days ago)
- Topics: rust, tmux
- Language: Rust
- Size: 269 KB
- Stars: 19
- Watchers: 4
- Forks: 2
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
- Authors: AUTHORS
Awesome Lists containing this project
README
# Rusmux - tmux automation
The main purpose of this project is to serve as a substitute for [tmuxinator](https://github.com/tmuxinator/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](https://github.com/MeirKriheli/rusmux) was created. It served as a chance for me to:
* Utilize the existing `.yml` project files from `tmuxinator`.
* Generate a standalone binary that can be easily distributed.
* Enhance my skills and comprehension of [Rust](https://www.rust-lang.org/) and its associated tools.## Example
```sh
cat ~/.config/rusmux/demo.yml
``````yaml
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 [email protected]
- 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](https://aur.archlinux.org/packages/rusmux),
e.g. (using `paru`):```sh
paru -S rusmux
```* Get a compiled binary from the
[Releases](https://github.com/MeirKriheli/rusmux/releases) page and place it
in your `$PATH`.* With `cargo`:
```sh
cargo install rusmux
```* With shell script, for the specific version, see the [release page](https://github.com/MeirKriheli/rusmux/releases/latest/), e.g:
```sh
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/MeirKriheli/rusmux/releases/download/v0.6.0/rusmux-installer.sh | sh
```## Commands
* Run a project
```sh
rusmux run [project]
rusmux start [project]
```or
```sh
rusmux [project]
```> **Note** This form is deprecated and will be removed in the next version, see #14.
* List all existing projects
```sh
rusmux list
```
* Output shell commands for a project```sh
rusmux debug [project]
```* Edit an existing project (`$EDITOR` should be set)
```sh
rusmux edit [project]
```* Stop project's session
```sh
rusmux stop [project]
rusmux kill [project]
```* Delete an existing project (after confirmation)
```sh
rusmux delete [project]
```* Create a new project, and open it in an editor (`$EDITOR` should be set)
```sh
rusmux new [project]
```This creates the project from default template. To create one with just the
project name:```sh
rusmux new [project] --blank
```* Copy an existing project to a new one and edit it (`$EDITOR` should be set)
```sh
rusmux copy [existing] [new]
```* Check your environment for potential issues
```sh
rusmux doctor
```Checks for `tmux` in `$PATH` and `$SHELL` & `$EDITOR` are set.
> **NOTE** In the commands above, `project`, `existing` and `new` can be:
>
> * A simple name, like `my_project`, `awesome_server`, which will be created with a `yaml` 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`.