A session manager for tmux written in Go
Inspired by tmuxinator and tmuxp.
Smug automates your tmux workflow. You can create a single configuration file, and Smug will create all the required windows and panes from it.
The configuration used in this GIF can be found here.
Download the latest version of Smug from the releases page and then run:
mkdir smug && tar -xzf smug_0.1.0_Darwin_x86_64.tar.gz -C ./smug && sudo mv smug/smug /usr/local/bin && rm -rf smug
Don't forget to replace
smug_0.1.0_Darwin_x86_64.tar.gzwith the archive that you've downloaded.
The easiest way is to clone Smug from GitHub and install it using
go-cli:
cd /tmp git clone https://github.com/ivaaaan/smug.git cd smug go install
smug [] [-f, --file ] [-w, --windows ]... [-a, --attach] [-d, --debug]
-f, --file A custom path to a config file -w, --windows List of windows to start. If session exists, those windows will be attached to current session. -a, --attach Force switch client for a session -d, --debug Print all commands to ~/.config/smug/smug.log
To create a new project, or edit an existing one in the
$EDITOR:
[email protected]:~$ smug new project[email protected]:~$ smug edit project
To start/stop a project and all windows, run:
[email protected]:~$ smug start project[email protected]:~$ smug stop project
When you already have a running session, and you want only to create some windows from the configuration file, you can do something like this:
[email protected]:~$ smug start project:window1[email protected]:~$ smug start project:window1,window2
[email protected]:~$ smug start project -w window1
[email protected]:~$ smug start project -w window1 -w window2
[email protected]:~$ smug stop project:window1
[email protected]:~$ smug stop project -w window1 -w window2
Also, you are not obliged to put your files in the
~/.config/smugdirectory. You can use a custom path in the
-fflag:
[email protected]:~$ smug start -f ./project.yml[email protected]:~$ smug stop -f ./project.yml
[email protected]:~$ smug start -f ./project.yml -w window1 -w window2
Configuration files stored in the
~/.config/smugdirectory in the
YAMLformat, e.g
~/.config/smug/your_project.yml.
session: blogroot: ~/Developer/blog
before_start:
root
stop:
windows:
name: code root: blog # a relative path to root manual: true # you can start this window only manually, using the -w arg layout: main-vertical commands:
name: infrastructure root: ~/Developer/blog/my-microservices layout: tiled panes:
session: blogroot: ~/Code/blog
before_start:
stop:
windows: