tmux fzf feature to kill sessions

This commit is contained in:
thek4n 2024-11-01 16:40:38 +03:00
parent f96b5fe783
commit 1947b3410b
5 changed files with 32 additions and 48 deletions

View File

@ -1,6 +1,6 @@
declare -r -A TARGETS=(
["colors"]=".config/terminal-colors.d"
["tmux"]=".config/tmux .tmux .config/systemd/user/tmux.service .local/bin/tmux_start_session.sh .local/bin/tmux_attach_session.sh .local/bin/tmux_kill_sessions.sh"
["tmux"]=".config/tmux .tmux .config/systemd/user/tmux.service .local/bin/tmux_start_session.sh .local/bin/tmux_list_sessions.sh .local/bin/tmux_attach_session.sh .local/bin/tmux_kill_sessions.sh"
["bash"]=".config/bash .bashrc .profile %tmux %colors"
["zsh"]="%bash .config/zsh .zshenv .inputrc"
["alacritty"]=".config/alacritty"

View File

@ -1,4 +1,4 @@
#!/usr/bin/env bash
#!/usr/bin/env sh
export FZF_DEFAULT_OPTS="\
@ -9,28 +9,13 @@ export FZF_DEFAULT_OPTS="\
ctrl-/:toggle-preview,\
ctrl-p:preview-up,\
ctrl-n:preview-down,\
ctrl-x:execute\(tmux\ kill-session\ -t\ {1}\)+reload\(~/.local/bin/tmux_list_sessions.sh\),\
ctrl-u:clear-query\
"
declare current_session
current_session="$(tmux display-message -p '#S')"
readonly current_session
session_to_attach="$(~/.local/bin/tmux_list_sessions.sh | fzf +m --preview-window 70%,follow --preview 'tmux capture-pane -p -e -t {1}' | awk '{printf $1}')"
readonly session_to_attach
declare last_session
last_session="$(tmux display-message -p '#{client_last_session}')"
readonly last_session
declare sessions
sessions="$(tmux list-session -F '#S#{?session_attached, (attached) , }')"
sessions="$(echo "${sessions}" | sed "s/^${current_session} /${current_session} (current) /")"
sessions="$(echo "${sessions}" | sed "s/^${last_session} /${last_session} (last) /")"
readonly sessions
declare session
session="$(echo "${sessions}" | fzf +m --preview-window 70%,follow --preview 'tmux capture-pane -p -e -t {1}' | awk '{printf $1}')"
readonly session
if [[ -n "${session}" ]]; then
tmux switch-client -t "${session}"
if [ -n "${session_to_attach}" ]; then
tmux switch-client -t "${session_to_attach}"
fi

View File

@ -1,4 +1,4 @@
#!/usr/bin/env bash
#!/usr/bin/env sh
export FZF_DEFAULT_OPTS="\
@ -10,29 +10,14 @@ export FZF_DEFAULT_OPTS="\
ctrl-/:toggle-preview,\
ctrl-p:preview-up,\
ctrl-n:preview-down,\
ctrl-x:execute\(tmux\ kill-session\ -t\ {1}\)+reload\(~/.local/bin/tmux_list_sessions.sh\),\
ctrl-u:clear-query,\
ctrl-o:toggle\
"
declare current_session
current_session="$(tmux display-message -p '#S')"
readonly current_session
declare last_session
last_session="$(tmux display-message -p '#{client_last_session}')"
readonly last_session
declare sessions
sessions="$(tmux list-session -F '#S#{?session_attached, (attached) , }')"
sessions="$(echo "${sessions}" | sed "s/^${current_session} /${current_session} (current) /")"
sessions="$(echo "${sessions}" | sed "s/^${last_session} /${last_session} (last) /")"
readonly sessions
declare sessions_to_kill
sessions_to_kill="$(echo "${sessions}" | fzf -m --preview-window 70%,follow --preview 'tmux capture-pane -p -e -t {1}' | awk '{printf $1"\n"}')"
sessions_to_kill="$(~/.local/bin/tmux_list_sessions.sh | fzf -m --preview-window 70%,follow --preview 'tmux capture-pane -p -e -t {1}' | awk '{printf $1"\n"}')"
readonly sessions_to_kill
if [[ -n "${sessions_to_kill}" ]]; then
if [ -n "${sessions_to_kill}" ]; then
echo "${sessions_to_kill}" | xargs -n 1 tmux kill-session -t
fi

View File

@ -0,0 +1,18 @@
#!/usr/bin/env bash
declare current_session
current_session="$(tmux display-message -p '#S')"
readonly current_session
declare last_session
last_session="$(tmux display-message -p '#{client_last_session}')"
readonly last_session
declare sessions
sessions="$(tmux list-session -F '#S#{?session_attached, (attached) , }')"
sessions="$(echo "${sessions}" | sed "s/^${current_session} /${current_session} (current) /")"
sessions="$(echo "${sessions}" | sed "s/^${last_session} /${last_session} (last) /")"
readonly sessions
echo "${sessions}"

View File

@ -1,4 +1,4 @@
#!/usr/bin/env bash
#!/usr/bin/env sh
export FZF_DEFAULT_OPTS="\
@ -12,18 +12,15 @@ ctrl-n:preview-down,\
ctrl-u:clear-query\
"
declare -r TMUX_SESSIONS="${HOME}/.tmux"
readonly TMUX_SESSIONS="${HOME}/.tmux"
declare current_session
current_session="$(tmux display-message -p '#S')"
readonly current_session
declare existing_sessions
existing_sessions="$(tmux list-session -F '#S')"
readonly existing_sessions
declare sessions
sessions="$(find "${TMUX_SESSIONS}/" -type f -executable -exec basename {} \;)"
sessions="$(echo "${sessions}" | sed "s/^${current_session}/${current_session} (current)/")"
@ -33,10 +30,9 @@ do
done
readonly sessions
declare session_file
session_file="$(echo "${sessions}" | fzf +m --preview-window 70% --preview "cat '${TMUX_SESSIONS}/{1}'" | awk '{printf $1}')"
readonly session_file
if [[ -n "${session_file}" ]]; then
if [ -n "${session_file}" ]; then
"${TMUX_SESSIONS}/${session_file}"
fi