tsess ===== The purpose of tsess is to manage tmux [1] sessions using a declarative configuration. Its goal was to replace tmuxinator [2] to move away from its YAML-based configuration which is effectively an ERB [3] template that brings along a complete Ruby [4] stack. tsess is written in Hare [5] and while that should not matter, this has several consequences. For example tmuxinator is written in Ruby and that creates a runtime dependency on Ruby. Until Hare reaches 1.0, tsess code may fail to build with newer Hare releases. There are features or design choices that are completely arbitrary because tsess served as a learning material for Hare. Nevertheless, tsess is a usable, simple and self-contained tmux session manager. Tutorial -------- To start using tsess, create a new session: $ tsess edit tutorial-session This will prompt a text editor with the following contents: name = tutorial-session The session will effectively be created once the editor terminates. Let's add a couple windows to this empty session: # BEGIN readme.tsess name = tutorial-session root = '~/tutorial' [@template@] root = "@template@" layout = main-horizontal pane.editor.send-keys = "vim $(git ls-files)" pane.prompt.send-keys = << EOF git fetch git status EOF [template:tmux] env[CC] = clang [template:tsess] # END readme.tsess This creates a tmux session called tutorial-session with two windows called tmux and tsess. Both windows share the same template that will create a first pane called editor where vim is executed to open all the files tracked by a git repository and another pane called prompt that will run 'git fetch' and 'git status' when the session is created. The working directories of panes is ~/tutorial/tmux or ~/tutorial/tsess in their respective windows. In the tmux window, CC=clang is exported to the environment for both panes. In other words, tutorial-session configuration will bring up a development environment to work on both tmux and tsess. To enter this newly-configured workspace, let's ask tsess again: $ tsess attach tutorial-session It will attach to the session after creating it if necessary. It may fail to create the session, for example when one of the working directories does not exist. To learn more about tsess commands and configuration capabilities, read the comprehensive manuals: $ man tsess $ man 5 tsess For installation instructions, refer to the INSTALL file. [1] https://github.com/tmux/tmux/wiki [2] https://github.com/tmuxinator/tmuxinator [3] https://github.com/ruby/erb [4] https://www.ruby-lang.org/ [5] https://harelang.org/