TITLE: tmux grouped sessions
DATE: 2023-09-23
AUTHOR: John L. Godlee
====================================================================


I have two monitors at work. Normally I have a terminal running 
tmux open full screen on the right-hand monitor, in portrait, and 
use the left monitor in landscape for everything else. Occasionally 
however, I want to also have a terminal open on the left monitor, 
and to move windows easily between terminals. To make it easier to 
share windows across terminals, I have adjusted my tmux setup to 
take advantage of the grouped-sessions feature.

At the bottom of my .tmux.conf I have this chunk, which starts a 
new session called "main", as a daemon.

    new-session -s main -d

Then, at the bottom of my .bashrc I have this chunk. First it 
checks if tmux is already running (if [ -z "$TMUX" ]). Then if tmux 
isn't running, it creates a new session within the same group as 
session "main" (new-session -t main). It then sets the option 
destroy-unnattached, which removes clients when you detach from 
them, ensuring that the automatically created sessions don't pile 
up when they are detached from.

    if [ -z "$TMUX" ]; then
        /usr/local/bin/tmux new-session -t main \; set-option 
destroy-unattached
    fi

The result is that when I open a terminal, tmux checks if the 
"main" session exists, creates it if it doesn't and attaches a 
client to that session.

All sessions in the same group share the same set of windows, but 
you can move freely between windows in each session.

{{< video src="/vid/tmux_sessions/tmux_sessions.mp4" >}}