tmux: Fix session chooser without fzf

If no fzf is installed, session chooser will now be the old manual
session name input. `tm session-name` will attach or create a session of
the same name, whether fzf is installed or not.

If invoked without argument, and fzf is installed will show a list of
sessions to choose from. If fzf is missing, will create new session
based on current directory.

`tl` has been changed to display the old non-interactive list if no fzf
exists. If fzf has been found however, it points to `tm` instead, since
invoking it without arguments fulfills the same function.
This commit is contained in:
Marty Oehme 2020-07-23 15:29:05 +02:00
parent 0487042d7e
commit d91adbfc13
No known key found for this signature in database
GPG Key ID: 0CCB0526EFB9611A
1 changed files with 19 additions and 15 deletions

View File

@ -6,27 +6,31 @@ exist() { type "$1" >/dev/null 2>&1; }
# shellcheck disable=2139
alias tmux="tmux -f ${XDG_CONFIG_HOME:-$HOME/.config}/tmux/tmux.conf"
# show a list of running tmux sessions
alias tl='tmux list-sessions -F "#{session_name}" 2>/dev/null'
# fzf
if exist fzf; then
# fzf select a tmux session to connect to, with pane preview
alias tm='fzf_tmux_session'
alias tm='_fzf_tmux_attach_start_session'
alias tl=tm
else
alias tm='tmux_attach_start'
# show a list of running tmux sessions
alias tl='tmux list-sessions -F "#{session_name}" 2>/dev/null '
fi
fzf_tmux_session() {
_fzf_tmux_list_sessions() {
tmux list-sessions -F "#{session_name}" 2>/dev/null | fzf \
--layout=reverse \
--height=50% \
--border \
--prompt="Session> " \
--preview="tmux_pane_tree {}" \
--preview-window=right:99% \
--print-query
}
_fzf_tmux_attach_start_session() {
if [ -z "$1" ]; then
result=$(
tl | fzf \
--layout=reverse \
--height=50% \
--border \
--prompt="Session> " \
--preview="tmux_pane_tree {}" \
--preview-window=right:99% \
--print-query
)
result=$(_fzf_tmux_list_sessions)
case "$?" in
0)
# found a session, attaching