Files

24 lines
798 B
Bash
Raw Permalink Normal View History

2026-04-25 15:57:34 +03:00
#!/bin/sh
# dmux: a simple terminal session switcher on top of dtach and fzf
# Created by Luxferre in 2026, released into the public domain
SDIR="$HOME/.dtsess"
SPFILE="$SDIR/.list"
mkdir -p "$SDIR"
touch "$SPFILE"
if [ -z "$(ls -1 "$SDIR")" ]; then
cat "$SPFILE" | while read -r sess; do
dtach -n "$SDIR/$sess" $SHELL
done
fi
FTR='Select a session or create a new one'
while true; do
ls -1 "$SDIR" > "$SPFILE"
slist="$(nl -nln -w1 -s' - ' "$SPFILE")"
sname="$(printf '%s\nNew\nQuit\n' "$slist" | grep . | fzf --tac --footer="$FTR")"
[ "$sname" = 'Quit' ] && printf '\033[0m' && break
2026-04-25 15:57:34 +03:00
[ "$sname" = 'New' ] && read -r -p 'New session name: ' sname
sname="$(echo "$sname" | sed -E 's/^[0-9]+\ -\ //')"
[ -n "$sname" ] && printf '\033[0m' && dtach -A "$SDIR/$sname" $SHELL
done