tmux fzf feature to kill sessions
This commit is contained in:
parent
f96b5fe783
commit
1947b3410b
@ -1,6 +1,6 @@
|
|||||||
declare -r -A TARGETS=(
|
declare -r -A TARGETS=(
|
||||||
["colors"]=".config/terminal-colors.d"
|
["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"
|
["bash"]=".config/bash .bashrc .profile %tmux %colors"
|
||||||
["zsh"]="%bash .config/zsh .zshenv .inputrc"
|
["zsh"]="%bash .config/zsh .zshenv .inputrc"
|
||||||
["alacritty"]=".config/alacritty"
|
["alacritty"]=".config/alacritty"
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env sh
|
||||||
|
|
||||||
|
|
||||||
export FZF_DEFAULT_OPTS="\
|
export FZF_DEFAULT_OPTS="\
|
||||||
@ -9,28 +9,13 @@ export FZF_DEFAULT_OPTS="\
|
|||||||
ctrl-/:toggle-preview,\
|
ctrl-/:toggle-preview,\
|
||||||
ctrl-p:preview-up,\
|
ctrl-p:preview-up,\
|
||||||
ctrl-n:preview-down,\
|
ctrl-n:preview-down,\
|
||||||
|
ctrl-x:execute\(tmux\ kill-session\ -t\ {1}\)+reload\(~/.local/bin/tmux_list_sessions.sh\),\
|
||||||
ctrl-u:clear-query\
|
ctrl-u:clear-query\
|
||||||
"
|
"
|
||||||
|
|
||||||
declare 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}')"
|
||||||
current_session="$(tmux display-message -p '#S')"
|
readonly session_to_attach
|
||||||
readonly current_session
|
|
||||||
|
|
||||||
declare last_session
|
if [ -n "${session_to_attach}" ]; then
|
||||||
last_session="$(tmux display-message -p '#{client_last_session}')"
|
tmux switch-client -t "${session_to_attach}"
|
||||||
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}"
|
|
||||||
fi
|
fi
|
||||||
@ -1,4 +1,4 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env sh
|
||||||
|
|
||||||
|
|
||||||
export FZF_DEFAULT_OPTS="\
|
export FZF_DEFAULT_OPTS="\
|
||||||
@ -10,29 +10,14 @@ export FZF_DEFAULT_OPTS="\
|
|||||||
ctrl-/:toggle-preview,\
|
ctrl-/:toggle-preview,\
|
||||||
ctrl-p:preview-up,\
|
ctrl-p:preview-up,\
|
||||||
ctrl-n:preview-down,\
|
ctrl-n:preview-down,\
|
||||||
|
ctrl-x:execute\(tmux\ kill-session\ -t\ {1}\)+reload\(~/.local/bin/tmux_list_sessions.sh\),\
|
||||||
ctrl-u:clear-query,\
|
ctrl-u:clear-query,\
|
||||||
ctrl-o:toggle\
|
ctrl-o:toggle\
|
||||||
"
|
"
|
||||||
|
|
||||||
declare current_session
|
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"}')"
|
||||||
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"}')"
|
|
||||||
readonly sessions_to_kill
|
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
|
echo "${sessions_to_kill}" | xargs -n 1 tmux kill-session -t
|
||||||
fi
|
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="\
|
export FZF_DEFAULT_OPTS="\
|
||||||
@ -12,18 +12,15 @@ ctrl-n:preview-down,\
|
|||||||
ctrl-u:clear-query\
|
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')"
|
current_session="$(tmux display-message -p '#S')"
|
||||||
readonly current_session
|
readonly current_session
|
||||||
|
|
||||||
declare existing_sessions
|
|
||||||
existing_sessions="$(tmux list-session -F '#S')"
|
existing_sessions="$(tmux list-session -F '#S')"
|
||||||
readonly existing_sessions
|
readonly existing_sessions
|
||||||
|
|
||||||
declare sessions
|
|
||||||
sessions="$(find "${TMUX_SESSIONS}/" -type f -executable -exec basename {} \;)"
|
sessions="$(find "${TMUX_SESSIONS}/" -type f -executable -exec basename {} \;)"
|
||||||
sessions="$(echo "${sessions}" | sed "s/^${current_session}/${current_session} (current)/")"
|
sessions="$(echo "${sessions}" | sed "s/^${current_session}/${current_session} (current)/")"
|
||||||
|
|
||||||
@ -33,10 +30,9 @@ do
|
|||||||
done
|
done
|
||||||
readonly sessions
|
readonly sessions
|
||||||
|
|
||||||
declare session_file
|
|
||||||
session_file="$(echo "${sessions}" | fzf +m --preview-window 70% --preview "cat '${TMUX_SESSIONS}/{1}'" | awk '{printf $1}')"
|
session_file="$(echo "${sessions}" | fzf +m --preview-window 70% --preview "cat '${TMUX_SESSIONS}/{1}'" | awk '{printf $1}')"
|
||||||
readonly session_file
|
readonly session_file
|
||||||
|
|
||||||
if [[ -n "${session_file}" ]]; then
|
if [ -n "${session_file}" ]; then
|
||||||
"${TMUX_SESSIONS}/${session_file}"
|
"${TMUX_SESSIONS}/${session_file}"
|
||||||
fi
|
fi
|
||||||
Loading…
x
Reference in New Issue
Block a user