

Show HN: tmux.sh - pyre
https://github.com/bsandrow/tmux.sh

======
pyre
This spawned from a thread[1] in the "Workflow in tmux" story[2]. There seemed
to be a bunch of people that were frustrated because session grouping wasn't
the default operating mode in tmux, so I whipped together this shell script
that makes the behaviour the default.

[1] <https://news.ycombinator.com/item?id=5542227>

[2] <https://news.ycombinator.com/item?id=5541401>

~~~
emmelaich
BTW, this is beautifully tidy bit of shell programming.

------
eddie_the_head
Thanks, I was confused when tmux didn't act as gnu screen did when I first
tried to use it for pair programming.

------
maerten
Nice, although tmux -S /tmp/pairprog and tmux -S /tmp/pairprog attach isn't
that hard to type :-)

~~~
pyre
In this example, you are both connected to the same session. Each client can't
focus on a separate window. It looks something like this:

    
    
             +-------------+
             | tmux server |
             +-------------+
                /
           +---------+
           | session |
           +---------+
            /       \ 
      +---------+ +---------+
      | client0 | | client1 |
      +---------+ +---------+
    

\- `tmux server` is the 'backend' process listening on /tmp/pairprog

\- `client0` and `client1` are the 'frontend' processes connecting to the
socket /tmp/pairprog.

\- `session` is the collection of windows that you are using.

The issue is that the currently active/focused window is an attribute of the
session, meaning that all connected clients are always focused on the same
window. What if you want to have each client focus on a separate window? This
is behaviour that you get by default in screen, but you have to work a little
more for in tmux.

The script is just a simple way to use session grouping, which would look like
this:

    
    
             +-------------+
             | tmux server |
             +-------------+
                /        \
           +---------+ +-----------+
           | session |=| session-1 |
           +---------+ +-----------+
                |           |
           +---------+ +---------+
           | client0 | | client1 |
           +---------+ +---------+
    

Note the '=' between the sessions. I'm using this to denote that `session` and
`session-1` are grouped, meaning that they share the same windows. Since each
client is connected to a different session, they can switch windows
independently.

~~~
simcop2387
It's one reason I hadn't used tmux before, i couldn't figure out a nice way to
get this. I love to use screen this way on multimonitor setups, and tmux's
other windowing features would make this awesome.

