{"id":21081341,"url":"https://github.com/meirkriheli/rusmux","last_synced_at":"2025-03-17T16:11:15.726Z","repository":{"id":65384264,"uuid":"178419106","full_name":"MeirKriheli/rusmux","owner":"MeirKriheli","description":"Tmux automation in rust","archived":false,"fork":false,"pushed_at":"2025-02-25T15:19:45.000Z","size":189,"stargazers_count":25,"open_issues_count":1,"forks_count":2,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-03-01T08:11:44.687Z","etag":null,"topics":["rust","tmux"],"latest_commit_sha":null,"homepage":null,"language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/MeirKriheli.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":"AUTHORS","dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-03-29T14:19:58.000Z","updated_at":"2025-02-25T15:19:49.000Z","dependencies_parsed_at":null,"dependency_job_id":"35854eb7-31f8-432d-8e0f-1d11562eda08","html_url":"https://github.com/MeirKriheli/rusmux","commit_stats":{"total_commits":130,"total_committers":1,"mean_commits":130.0,"dds":0.0,"last_synced_commit":"84cc635de3f2f64dd18e7bdd883af9a97a17dc13"},"previous_names":[],"tags_count":19,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MeirKriheli%2Frusmux","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MeirKriheli%2Frusmux/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MeirKriheli%2Frusmux/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MeirKriheli%2Frusmux/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/MeirKriheli","download_url":"https://codeload.github.com/MeirKriheli/rusmux/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244066180,"owners_count":20392406,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["rust","tmux"],"created_at":"2024-11-19T20:08:17.575Z","updated_at":"2025-03-17T16:11:15.713Z","avatar_url":"https://github.com/MeirKriheli.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Rusmux - tmux automation\n\nThe main purpose of this project is to serve as a substitute for [tmuxinator](https://github.com/tmuxinator/tmuxinator), while still utilizing its yaml files. \n\n`tmuxinator`, which is written in Ruby, has had instances of breaking due to updates in packages/gems, \nhaving me scrambling for  a solution. \n\nFurthermore, the process of installing it on different servers that lack a Ruby installation proved to be tedious.\n\nHence, [rusmux](https://github.com/MeirKriheli/rusmux) was created. It served as a chance for me to:\n\n* Utilize the existing `.yml` project files from `tmuxinator`.\n* Generate a standalone binary that can be easily distributed.\n* Enhance my skills and comprehension of [Rust](https://www.rust-lang.org/) and its associated tools.\n\n## Example\n\n```sh\ncat ~/.config/rusmux/demo.yml\n```\n\n```yaml\nproject_name: demo  # can also use name\nproject_root: ~/src/demo\non_project_start:\n  - sudo systemctl start postgresql\n  - sudo systemctl start mysqld\n# on_project_stop: \npre_window:\n  - workon demo\n  - cd demo\nwindows:\n  - editor: vim\n  - shells:\n      layout: main-vertical\n      root: ~/src/demo/code  # Optional per window root overriding `project_root`\n      options:  # per window options\n        main-pane-width: 60%\n      panes:\n        - #\n        - grunt serve\n        - remote-log: # name is meaningless, for multi commands\n          - ssh me@example.com\n          - cd /var/logs\n          - tail -f project.log \n  - mail: python -m smtpd -n -c DebuggingServer localhost:1025\n\n```\n\n## Install\n\n* Arch Linux users can install [rusmux from AUR](https://aur.archlinux.org/packages/rusmux),\n  e.g. (using `paru`):\n\n  ```sh\n  paru -S rusmux\n  ```\n\n* Get a compiled binary from the\n  [Releases](https://github.com/MeirKriheli/rusmux/releases) page and place it\n  in your `$PATH`.\n\n* With `cargo`:\n\n  ```sh\n  cargo install rusmux\n  ```\n\n* With shell script, for the specific version, see the [release page](https://github.com/MeirKriheli/rusmux/releases/latest/), e.g:\n\n  ```sh\n  curl --proto '=https' --tlsv1.2 -LsSf https://github.com/MeirKriheli/rusmux/releases/download/v0.x.y/rusmux-installer.sh | sh\n  ```\n\n\n\n## Commands\n\n* Run a project\n\n  ```sh\n  rusmux run [project]\n  rusmux start [project]\n  ```\n\n* List all existing projects\n\n  ```sh\n  rusmux list\n  ```\n  \n* Output shell commands for a project \n\n  ```sh\n  rusmux debug [project]\n  ```\n\n* Edit an existing project (`$EDITOR` should be set)\n\n  ```sh\n  rusmux edit [project]\n  ```\n\n* Stop project's session\n\n  ```sh\n  rusmux stop [project]\n  rusmux kill [project]\n  ```\n\n* Delete an existing project (after confirmation)\n\n  ```sh\n  rusmux delete [project]\n  ```\n\n* Create a new project, and open it in an editor (`$EDITOR` should be set)\n\n  ```sh\n  rusmux new [project]\n  ```\n\n  This creates the project from default template. To create one with just the\n  project name:\n\n  ```sh\n  rusmux new [project] --blank\n  ```\n\n* Copy an existing project to a new one and edit it (`$EDITOR` should be set)\n\n  ```sh\n  rusmux copy [existing] [new]\n  ```\n\n\n* Check your environment for potential issues\n\n  ```sh\n  rusmux doctor\n  ```\n\n  Checks for `tmux` in `$PATH` and `$SHELL` \u0026 `$EDITOR` are set.\n\n\n\u003e **NOTE** In the commands above, `project`, `existing` and `new` can be:\n\u003e\n\u003e * A simple name, like `my_project`, `awesome_server`, which will be created with a `yaml` extension in the config directory.\n\u003e * A path to a file (determined by an extension and/or path separator), e.g. `~/projects/my_project/session.yaml`.\n\n\n## Shell completion\n\nUnder the `completions` directory you'll find the completion scripts for `bash`, `zsh` and `fish`.\n\nCopy them to the relevant directories for your shell and OS. For system wide completions (Arch Linux in this example):\n\n```sh\nsudo cp completions/rusmux.bash /usr/share/bash-completion/completions/rusmux\nsudo cp completions/rusmux.zsh /usr/share/zsh/site-functions/_rusmux\nsudo cp completions/rusmux.fish /usr/share/fish/vendor_completions.d/rusmux.fish\n```\n\nFor user directories, see your shell documentation.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmeirkriheli%2Frusmux","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmeirkriheli%2Frusmux","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmeirkriheli%2Frusmux/lists"}