2022-10-20 08:00:10 +00:00
|
|
|
reset-elapsed() {
|
|
|
|
(( last_cmd_at = SECONDS ))
|
|
|
|
}
|
|
|
|
|
|
|
|
ping-timer() {
|
2022-10-21 21:33:20 +00:00
|
|
|
kill -USR1 "$reaper_pid"
|
2022-10-20 08:00:10 +00:00
|
|
|
}
|
|
|
|
|
2022-10-21 21:33:20 +00:00
|
|
|
slay-reaper() {
|
2022-10-20 08:00:10 +00:00
|
|
|
kill -KILL "$reaper_pid"
|
|
|
|
}
|
|
|
|
|
2022-10-24 09:23:06 +00:00
|
|
|
cd() {
|
|
|
|
command cd "$@"
|
|
|
|
printf %s "$PWD" > /tmp/iterm2-prev-dir.txt
|
|
|
|
}
|
|
|
|
|
2022-10-20 08:00:10 +00:00
|
|
|
{
|
2022-10-24 08:50:38 +00:00
|
|
|
trap "" INT
|
2022-10-20 08:00:10 +00:00
|
|
|
trap reset-elapsed USR1
|
|
|
|
last_cmd_at=0
|
|
|
|
|
|
|
|
while sleep 1; do
|
|
|
|
(( elapsed = SECONDS - last_cmd_at ))
|
|
|
|
|
|
|
|
if (( elapsed > 600 )); then
|
|
|
|
kill -KILL "$$"
|
|
|
|
exit
|
|
|
|
fi
|
|
|
|
done
|
|
|
|
} &
|
|
|
|
|
2022-10-20 20:51:26 +00:00
|
|
|
reaper_pid=$! PROMPT_COMMAND+=(ping-timer)
|
2022-10-21 21:33:20 +00:00
|
|
|
trap slay-reaper EXIT
|
2022-10-24 09:23:06 +00:00
|
|
|
|
|
|
|
if [[ -f /tmp/iterm2-prev-dir.txt ]]; then
|
2022-10-24 10:23:52 +00:00
|
|
|
cur_time=$(date +%s)
|
|
|
|
last_mod=$(stat -f%c /tmp/iterm2-prev-dir.txt)
|
2022-10-24 09:23:06 +00:00
|
|
|
|
2022-10-24 10:23:52 +00:00
|
|
|
if (( cur_time - last_mod > 1200 )); then
|
|
|
|
rm -f /tmp/iterm2-prev-dir.txt
|
|
|
|
else
|
|
|
|
dir=$(</tmp/iterm2-prev-dir.txt)
|
|
|
|
|
|
|
|
if [[ -d $dir ]]; then
|
|
|
|
command cd "$dir"
|
|
|
|
fi
|
|
|
|
|
|
|
|
unset dir
|
2022-10-24 09:23:06 +00:00
|
|
|
fi
|
|
|
|
|
2022-10-24 10:23:52 +00:00
|
|
|
unset cur_time last_mod
|
2022-10-24 09:23:06 +00:00
|
|
|
fi
|