48 lines
1.3 KiB
Bash
Executable File
48 lines
1.3 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# Save the piped message to temp file
|
|
TEMP_MSG=$(mktemp)
|
|
cat > "$TEMP_MSG"
|
|
|
|
# Extract Message-ID more robustly
|
|
MESSAGE_ID=$(grep -i "^Message-ID:" "$TEMP_MSG" | head -1 | sed 's/^[Mm]essage-[Ii][Dd]: *//; s/^<//; s/>$//' | tr -d '\r\n ')
|
|
|
|
# Cleanup temp file
|
|
rm "$TEMP_MSG"
|
|
|
|
if [ -z "$MESSAGE_ID" ]; then
|
|
notify-send "Error" "Could not find Message-ID"
|
|
exit 1
|
|
fi
|
|
|
|
# Get file path from notmuch
|
|
FILEPATH=$(notmuch search --output=files "id:$MESSAGE_ID" 2>/dev/null | head -1)
|
|
|
|
if [ -z "$FILEPATH" ] || [ ! -f "$FILEPATH" ]; then
|
|
# Try alternative search
|
|
FILEPATH=$(notmuch search --output=files --exclude=false "*" 2>/dev/null | xargs grep -l "Message-ID.*$MESSAGE_ID" 2>/dev/null | head -1)
|
|
fi
|
|
|
|
if [ -z "$FILEPATH" ] || [ ! -f "$FILEPATH" ]; then
|
|
notify-send "Error" "File not found for Message-ID: $MESSAGE_ID"
|
|
exit 1
|
|
fi
|
|
|
|
# Move to Trash folder
|
|
TRASH_DIR="$HOME/.local/share/mail/Trash/cur"
|
|
mkdir -p "$TRASH_DIR"
|
|
|
|
FILENAME=$(basename "$FILEPATH")
|
|
mv "$FILEPATH" "$TRASH_DIR/$FILENAME"
|
|
|
|
# Update notmuch database
|
|
notmuch new --no-hooks >/dev/null 2>&1
|
|
|
|
# Tag as deleted
|
|
notmuch tag +deleted +trash -inbox -unread -- "id:$MESSAGE_ID" >/dev/null 2>&1
|
|
|
|
# Trigger sync in background
|
|
(sleep 2 && mbsync -a 2>&1 | grep -v CLOSE >/dev/null) &
|
|
|
|
notify-send "📧 Aerc" "Moved to Trash"
|