Need help with smug?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

ivaaaan
267 Stars 15 Forks MIT License 100 Commits 1 Opened issues

Description

A session manager for tmux written in Go

Services available

!
?

Need anything else?

Contributors list

Smug - tmux session manager

Actions Status Go Report Card

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.

gif

The configuration used in this GIF can be found here.

Installation

Download from the releases page

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.gz
with the archive that you've downloaded.

Git

Prerequisite Tools

Fetch from GitHub

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

MacPorts (macOS)

On macOS, you can install Smug using MacPorts. Once MacPorts is installed, simply issue the following commands:

sudo port selfupdate
sudo port install smug

Usage

smug  [] [-f, --file ] [-w, --windows ]... [-a, --attach] [-d, --debug]

Options:

-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
--detach Detach session. The same as `-d` flag in the tmux

Custom settings

You can pass custom settings into your configuration file. Use

${variable_name}
syntax in your config and then pass key-value args:
[email protected]:~$ smug start project variable_name=value

Examples

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/smug
directory. You can use a custom path in the
-f
flag:
[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

Configuration files stored in the

~/.config/smug
directory in the
YAML
format, e.g
~/.config/smug/your_project.yml
.

Examples

Example 1

session: blog

root: ~/Developer/blog

before_start:

  • docker-compose -f my-microservices/docker-compose.yml up -d # my-microservices/docker-compose.yml is a relative to root

env: FOO: BAR

stop:

  • docker stop $(docker ps -q)

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:

    • docker-compose start panes:
    • type: horizontal root: . commands:
      • docker-compose exec php /bin/sh
      • clear
  • name: infrastructure root: ~/Developer/blog/my-microservices layout: tiled panes:

    • type: horizontal root: . commands:
      • docker-compose up -d
      • docker-compose exec php /bin/sh
      • clear

Example 2

session: blog







root: ~/Code/blog

before_start:

  • docker-compose up -d

stop:

  • docker-compose stop

windows:

  • name: code layout: main-horizontal commands:
    • $EDITOR app/dependencies.php panes:
    • type: horizontal commands:
      • make run-tests
  • name: ssh commands:

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.