murus

Crates.iomurus
lib.rsmurus
version0.1.1
created_at2025-09-07 20:18:53.844042+00
updated_at2025-09-13 16:33:05.388652+00
descriptionCrates for tmux API and plugin manager implementations
homepagehttps://git.notfloor.com/nfejzic/plux
repositoryhttps://git.notfloor.com/nfejzic/plux
max_upload_size
id1828501
size11,121
Nadir Fejzić (nfejzic)

documentation

README

Tmux API and plugin manager

This workspace contains Rust crate that wraps tmux commands and a simple plugin manager for tmux.

Plux - the plugin manager

Plux is a very simple tmux plugin manager. Aim is to provide modern plugin management. To use the plugin manager, specify plux.toml file with desired plugins, and add run-shell plux to your tmux configuration.

Plux needs to know two paths to do the work:

  • @plux_toml_path - where the plux.toml file is located. By default the $HOME/.config/tmux/plux.toml is used.
  • @plux_plugins_path - directory that will contain installed plugins. By default the $HOME/.config/tmux/plux/ directory is used.

Installation

You can install plux with using cargo:

cargo install plux

Plugin specification

Plugins are specified in a single plux.toml file, with following syntax:

[plugins]
# you can specify the url of a plugin directly, default git branch will be used
# (e.g. 'main')
tmux-ssh-split = "https://github.com/pschmitt/tmux-ssh-split"

# or you can specify full plugin spec
# with branch:
tmux-fingers = { rul = "https://github.com/Morantron/tmux-fingers", branch = "feature-xyz" }
# with tag:
smart-splits = { url = "https://github.com/mrjones2014/smart-splits.nvim", tag = "v2.0.3"}
# with commit hash:
tmux-sensible = { url = "https://github.com/tmux-plugins/tmux-sensible", commit = "<commit hash>"}

Plux compatibility

There are multiple parts to plugin installation:

  1. Download plugin - The first part is basically just downloading plugin files. This is done with git clone command.
  2. Use version - The second part is determining what version needs to be used and switching to that version.
  3. Starting the plugin - Plux retains a little bit of backwards compatibility with tpm, full compatibility is not guaranteed. From my (limited) understanding, tpm simply runs all .tmux files in plugins directory. Plux does that as well, with one exception. If plugin contains a top level plux_start.tmux file, then this file is sourced from tmux (e.g. tmux source <path-to-plugin>/plux_start.tmux). Otherwise all .tmux files are executed (e.g. tmux run-shell <path-to-file>.tmux).
Commit count: 0

cargo fmt