[TASK] Better handle when spectacle is active for a long time

This commit is contained in:
2026-03-26 17:40:09 +01:00
parent a1c7ac7902
commit 3e9e0e8a0e
+23 -1
View File
@@ -5,6 +5,10 @@ FORMAT="png"
SIMILARITY_DELETE_TRESHOLD=100
HTML_THUMB_WIDTH=200
SCALE="50%"
# Max time (in seconds) to wait before forcing a screenshot even if spectacle is running
SPECTACLE_BLOCKED_TIMEOUT=600 # 10 minutes
SPECTACLE_BLOCKED_FILE="$HOME/.cache/screenshot-spectacle-blocked"
DAY=`date +%Y-%m-%d`
TIME=`date +%H.%M.%S.%3N`
@@ -16,9 +20,24 @@ SCR_LAST=`ls -t $DIR/$DAY/*.png | head -n1`
if [ "$XDG_CURRENT_DESKTOP" = "KDE" ]
then
if pgrep -x spectacle > /dev/null; then
echo "`date`: Spectacle is already running; skipping screenshot"
# Spectacle is running; check if we've been blocked for too long
if [ -f "$SPECTACLE_BLOCKED_FILE" ]; then
BLOCKED_SINCE=`cat "$SPECTACLE_BLOCKED_FILE"`
NOW=`date +%s`
BLOCKED_FOR=$(( NOW - BLOCKED_SINCE ))
if [ "$BLOCKED_FOR" -ge "$SPECTACLE_BLOCKED_TIMEOUT" ]; then
echo "`date`: Spectacle has been blocking screenshot for ${BLOCKED_FOR}s (>= ${SPECTACLE_BLOCKED_TIMEOUT}s); forcing screenshot"
else
echo "`date`: Spectacle is already running (blocked for ${BLOCKED_FOR}s); skipping screenshot"
exit 0
fi
else
# First time we're being blocked; record the timestamp
date +%s > "$SPECTACLE_BLOCKED_FILE"
echo "`date`: Spectacle is already running; skipping screenshot (recording block time)"
exit 0
fi
fi
spectacle -bn -o $SCR_NEW
else
import -window root $SCR_NEW
@@ -38,6 +57,9 @@ fi
echo $DISTANCE between $SCR_LAST and $SCR_NEW
IS_SIMILAR=`echo "$DISTANCE < $SIMILARITY_DELETE_TRESHOLD" | bc`
# Clean up the blocked-file now that a screenshot succeeded
rm -f "$SPECTACLE_BLOCKED_FILE"
if [ "$IS_SIMILAR" = "1" ]
then
rm $SCR_NEW