Back in 2014 I wrote a Bash script called
tm that made creating and connecting to tmux sessions and windows a bit easier. I’ve been using it ever since, pretty much daily, with a few revisions. I thought it was probably about time I shared the updates.
As a recap,
tm lets you quickly create named tmux sessions like this:
# create new or connect to existing session named "mmc"
$ tm mmc
# Create new or connect to existing window named "remote"
$ tm mmc remote
Here’s what’s new:
- Case insensitive session/window matching
- Allow numeric index for window argument (zero-indexed)
- Create new named window if second argument is passed but no existing match is found
- Replace a bunch of sed and awk crud with -F params
- Add select menus when running without arguments (just
tm), using fzf if available
- Exit gracefully (with error) if run within a tmux session
There are probably other little changes I made along the way, but that’s what I gathered from a quick diff. The updated script can be found in this gist.
Running with Fish
tm is written in Bash, but works fine in other shells with the
/bin/bash hashbang. So in Fish, for example, I just make sure that the script is saved as
tm, is executable, and is located in my
When I first published it, I included some bash completion scripts. I’ve added a Fish completion script that you can install in
~/.config/fish/completions/tm.fish. Once installed, you can type
tm [tab] it will complete from all open sessions, and running
tm session_name [tab] will complete windows for the named session (including indexes for unnamed windows). Nifty.