Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Added tmx from brandur's tmux-extra repo
- Loading branch information
Benjamin Cahill
committed
Mar 30, 2012
1 parent
f06db57
commit b5e9d44
Showing
1 changed file
with
55 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,55 @@ | ||
#!/bin/bash | ||
|
||
# | ||
# Tmux launcher | ||
# | ||
# See: | ||
# http://github.com/brandur/tmux-extra | ||
# | ||
# Modified version of a script orginally found at: | ||
# http://forums.gentoo.org/viewtopic-t-836006-start-0.html | ||
# | ||
|
||
# Works because bash automatically trims by assigning to variables and by | ||
# passing arguments | ||
trim() { echo $1; } | ||
|
||
if [[ -z "$1" ]]; then | ||
echo "Specify session name as the first argument" | ||
exit | ||
fi | ||
|
||
# Only because I often issue `ls` to this script by accident | ||
if [[ "$1" == "ls" ]]; then | ||
tmux ls | ||
exit | ||
fi | ||
|
||
base_session="$1" | ||
# This actually works without the trim() on all systems except OSX | ||
tmux_nb=$(trim `tmux ls | grep "^$base_session" | wc -l`) | ||
if [[ "$tmux_nb" == "0" ]]; then | ||
echo "Launching tmux base session $base_session ..." | ||
tmux new-session -s $base_session | ||
else | ||
# Make sure we are not already in a tmux session | ||
if [[ -z "$TMUX" ]]; then | ||
# Kill defunct sessions first | ||
old_sessions=$(tmux ls 2>/dev/null | egrep "^[0-9]{14}.*[0-9]+\)$" | cut -f 1 -d:) | ||
for old_session_id in $old_sessions; do | ||
tmux kill-session -t $old_session_id | ||
done | ||
|
||
echo "Launching copy of base session $base_session ..." | ||
# Session is is date and time to prevent conflict | ||
session_id=`date +%Y%m%d%H%M%S` | ||
# Create a new session (without attaching it) and link to base session | ||
# to share windows | ||
tmux new-session -d -t $base_session -s $session_id | ||
# Attach to the new session | ||
tmux attach-session -t $session_id | ||
# When we detach from it, kill the session | ||
tmux kill-session -t $session_id | ||
fi | ||
fi | ||
|