diff --git a/TARGETS.sh b/TARGETS.sh index 247b6ae..78f2b1c 100644 --- a/TARGETS.sh +++ b/TARGETS.sh @@ -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" diff --git a/home/user/.local/bin/tmux_attach_session.sh b/home/user/.local/bin/tmux_attach_session.sh index 8de6205..77d5cad 100755 --- a/home/user/.local/bin/tmux_attach_session.sh +++ b/home/user/.local/bin/tmux_attach_session.sh @@ -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 \ No newline at end of file diff --git a/home/user/.local/bin/tmux_kill_sessions.sh b/home/user/.local/bin/tmux_kill_sessions.sh index 6ecca07..3fe9c69 100755 --- a/home/user/.local/bin/tmux_kill_sessions.sh +++ b/home/user/.local/bin/tmux_kill_sessions.sh @@ -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 \ No newline at end of file diff --git a/home/user/.local/bin/tmux_list_sessions.sh b/home/user/.local/bin/tmux_list_sessions.sh new file mode 100755 index 0000000..83aaf91 --- /dev/null +++ b/home/user/.local/bin/tmux_list_sessions.sh @@ -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}" \ No newline at end of file diff --git a/home/user/.local/bin/tmux_start_session.sh b/home/user/.local/bin/tmux_start_session.sh index 974865c..8e06a0a 100755 --- a/home/user/.local/bin/tmux_start_session.sh +++ b/home/user/.local/bin/tmux_start_session.sh @@ -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 \ No newline at end of file