summaryrefslogtreecommitdiff
path: root/bin/dmenu/terminal_tmux
diff options
context:
space:
mode:
Diffstat (limited to 'bin/dmenu/terminal_tmux')
-rwxr-xr-xbin/dmenu/terminal_tmux23
1 files changed, 23 insertions, 0 deletions
diff --git a/bin/dmenu/terminal_tmux b/bin/dmenu/terminal_tmux
new file mode 100755
index 0000000..550167f
--- /dev/null
+++ b/bin/dmenu/terminal_tmux
@@ -0,0 +1,23 @@
+#!/usr/bin/env sh
+
+# A script to open a terminal emulator with a tmux session attached.
+# The session name can be supplied, otherwise it is chosen using dmenu.
+# If the chosen option is listed as a session, that session is attached.
+# If the chosen option is not listed, a new session with that name is created.
+
+# The default terminal is st.
+TERMINAL="${TERMINAL:-st}"
+
+if [ -n "$1" ]; then
+ chosen="$1"
+else
+ chosen="$(tmux list-sessions -F \#\{session_name\} | dmenu -p "Choose which tmux session to use")"
+fi
+
+[ -z "$chosen" ] && exit
+
+if tmux has-session -t "$chosen"; then
+ exec $TERMINAL -T "tmux: $chosen" zshrc tmux attach -t "$chosen"
+else
+ exec $TERMINAL -T "tmux: $chosen" zshrc tmux new -s "$chosen"
+fi