packages/tmux-sessionizer: tmux-last

This commit is contained in:
Primrose 2025-05-29 15:00:21 +02:00
parent b69c80497f
commit db5a9ce92d
Signed by: primrose
GPG key ID: 4E887A4CA9714ADA

View file

@ -2,6 +2,7 @@
writeShellApplication,
tmux,
procps,
lib,
symlinkJoin,
}: let
tmux-register-session = writeShellApplication {
@ -9,6 +10,12 @@
runtimeInputs = [tmux];
text = ''
last=/tmp/TMUX_LAST
# bail if tmux not running
if ! pgrep tmux >/dev/null 2>&1; then
exit 1
fi
this="$(tmux display-message -p '#S')"
if [ ! -f "$last" ] || [ "$(cat "$last")" != "$this" ]; then
echo "$this" >"$last"
@ -43,6 +50,28 @@
fi
'';
};
tmux-last = writeShellApplication {
name = "tmux-last";
text = ''
tmux_last=/tmp/TMUX_LAST
if [ ! -f $tmux_last ]; then
echo "Last session is not yet set"
return 1
fi
session_name="$(cat $tmux_last)"
session_path="$session_name"
if [ ! -d "$session_path" ]; then
session_path="/tmp"
fi
# bail if not in tmux, nothing to register
${lib.getExe tmux-register-session} || :
${lib.getExe tmux-maybe-create} "$session_name" "$session_path"
${lib.getExe tmux-attach-or-switch} "$session_name"
'';
};
in
symlinkJoin {
name = "tmux-sessionizer";
@ -50,5 +79,6 @@ in
tmux-register-session
tmux-maybe-create
tmux-attach-or-switch
tmux-last
];
}