Skip to content

Commit

Permalink
fzf/tmux: add tmux session tree preview
Browse files Browse the repository at this point in the history
  • Loading branch information
petobens committed Mar 19, 2019
1 parent 07bbc3b commit c21c306
Show file tree
Hide file tree
Showing 3 changed files with 29 additions and 6 deletions.
16 changes: 10 additions & 6 deletions fzf_bash.sh
Original file line number Diff line number Diff line change
Expand Up @@ -306,11 +306,17 @@ bind -m vi-command '"\C-r": "i\C-r"'
# }}}
# Tmux {{{

__tmux_fzf_get_session__() {
session=$(tmux list-sessions -F "#{session_name}" 2>/dev/null |
fzf --exit-0 --preview='tmux_tree {} | bat --theme TwoDark --style plain')
echo "$session"
}

# Tmux session switcher (`tms foo` attaches to `foo` if exists, else creates
# it)
tms() {
[[ -n "$TMUX" ]] && change="switch-client" || change="attach-session"
if [[ "$1" ]]; then
if [[ -n "$1" ]]; then
if [[ "$1" == "-ask" ]]; then
read -r -p "New tmux session name: " session_name
else
Expand All @@ -321,14 +327,12 @@ tms() {
tmux $change -t "$session_name");
return
fi
session=$(tmux list-sessions -F \
"#{session_name}" 2>/dev/null | fzf --exit-0) && \
tmux $change -t "$session" || echo "No sessions found."
session=$(eval __tmux_fzf_get_session__)
tmux $change -t "$session" || echo "No sessions found."
}
# Tmux session killer
tmk() {
session=$(tmux list-sessions -F "#{session_name}" | \
fzf --query="$1" --exit-0) &&
session=$(eval __tmux_fzf_get_session__)
tmux kill-session -t "$session"
}

Expand Down
2 changes: 2 additions & 0 deletions setup-new/symlinks.sh
Original file line number Diff line number Diff line change
Expand Up @@ -111,6 +111,8 @@ fi
if type "tmux" > /dev/null 2>&1; then
$ln_cmd -fTs "$dotfiles_dir/tmux" "$HOME/.tmux"
echo Created .tmux folder symlink
$ln_cmd -fTs "$dotfiles_dir/tmux/tmux_tree" "$HOME/bin/tmux_tree"
echo Created bin/tmux_tree symlink
fi
if type "powerline-daemon" > /dev/null 2>&1; then
$ln_cmd -fTs "$dotfiles_dir/config/powerline" "$HOME/.config/powerline"
Expand Down
17 changes: 17 additions & 0 deletions tmux/tmux_tree
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
#!/usr/bin/env bash

tmux ls -F'#{session_id}' | while read -r s; do
S=$(tmux ls -F'#{session_id}#{session_name}: #{T:tree_mode_format}' | grep ^"$s")
session_info=${S##$s}
session_name=$(echo "$session_info" | cut -d ':' -f 1)
if [[ -n "$1" ]] && [[ "$1" == "$session_name" ]]; then
echo -e "\033[1;34m$session_info\033[0m"
else
echo -e "\033[1m$session_info\033[0m"
fi
tmux lsw -t"$s" -F'#{window_id}' | while read -r w; do
W=$(tmux lsw -t"$s" -F'#{window_id}#{T:tree_mode_format}' | grep ^"$w")
echo "${W##$w}"
done
done

0 comments on commit c21c306

Please sign in to comment.