tmux fzf feature to kill sessions
This commit is contained in:
parent
f96b5fe783
commit
1947b3410b
@ -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"
|
||||
|
||||
@ -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
|
||||
@ -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
|
||||
18
home/user/.local/bin/tmux_list_sessions.sh
Executable file
18
home/user/.local/bin/tmux_list_sessions.sh
Executable 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}"
|
||||
@ -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
|
||||
Loading…
x
Reference in New Issue
Block a user