43 lines
1.2 KiB
Bash
Executable file
43 lines
1.2 KiB
Bash
Executable file
# Run fzf-tmux in the background and serialize the input
|
|
(
|
|
current_session=$(tmux display-message -p '#S')
|
|
selected=$(tmux list-sessions -F '#S' | grep -v "$current_session" | fzf-tmux -p --expect=enter,del --header="Tmux Sessions (Ent/Del)")
|
|
echo "$selected" > /tmp/fzf-tmux-target
|
|
tmux refresh-client -S
|
|
) &
|
|
|
|
# Give some time for fzf to initiate and display
|
|
sleep 0.1
|
|
tmux refresh-client -S
|
|
|
|
# Wait for the fzf-tmux process to complete
|
|
wait
|
|
|
|
# Read the serialized input
|
|
selected=$(cat /tmp/fzf-tmux-target)
|
|
rm /tmp/fzf-tmux-target
|
|
key=$(head -n1 <<< "$selected")
|
|
target=$(tail -n +2 <<< "$selected")
|
|
|
|
# Check the pressed key and take appropriate action
|
|
case "$key" in
|
|
enter)
|
|
if [ -n "$target" ]; then
|
|
tmux switch-client -t "$target"
|
|
tmux display-message "Switched to session: $target"
|
|
else
|
|
tmux display-message "No session selected"
|
|
fi
|
|
;;
|
|
del)
|
|
if [ -n "$target" ]; then
|
|
tmux kill-session -t "$target"
|
|
tmux display-message "Deleted session: $target"
|
|
else
|
|
tmux display-message "No session selected"
|
|
fi
|
|
;;
|
|
*)
|
|
tmux display-message "Action cancelled"
|
|
;;
|
|
esac
|