diff options
Diffstat (limited to 'tmux/.local/bin/tmux-sessions')
-rwxr-xr-x | tmux/.local/bin/tmux-sessions | 29 |
1 files changed, 20 insertions, 9 deletions
diff --git a/tmux/.local/bin/tmux-sessions b/tmux/.local/bin/tmux-sessions index 4b68929..6d04f5f 100755 --- a/tmux/.local/bin/tmux-sessions +++ b/tmux/.local/bin/tmux-sessions @@ -1,11 +1,22 @@ -#!/usr/bin/env bash +#!/bin/sh -[[ -n "$TMUX" ]] && change="switch-client" || change="attach-session" +if [ "$#" -eq 0 ]; then + # shellcheck disable=2016,2046 + set -- $( + tmux list-sessions -F '#{session_last_attached}0:#{session_name}' 2>/dev/null | + sort -t':' -r -k1 | cut -d':' -f2 | sed "/^$(tmux display-message -p '#S')$/d" | + fzf-tmux "$FZF_TMUX_OPTS" -- --select-1 --exit-0 --preview-window=right,80% --preview='tmux capture-pane -ep -t {}' \ + --bind 'ctrl-q:execute(tmux kill-session -t{})+reload(tmux list-sessions -F "#{session_name}" 2>/dev/null | + sed "/$(tmux display-message -p "#S")/d" )' + ) +fi -# shellcheck disable=2016 -session=$(tmux list-sessions -F '#{session_last_attached}0:#{session_name}' 2>/dev/null | - sort -t':' -r -k1 | cut -d':' -f2 | sed "/^$(tmux display-message -p '#S')$/d" | - fzf-tmux -p -- --select-1 --exit-0 --preview-window=right,80% --preview='tmux capture-pane -ep -t {}' \ - --bind 'ctrl-q:execute(tmux kill-session -t{})+reload(tmux list-sessions -F "#{session_name}" 2>/dev/null | - sed "/$(tmux display-message -p "#S")/d" )') && - tmux $change -t "$session" || exit 0 +if [ "$#" -eq 0 ]; then + exit 1 +fi + +if [ -z "$TMUX" ]; then + tmux attach-session -t "$1" +else + tmux switch-client -t "$1" +fi |