From b9bbc9d1ae906b5603d96b1f747aae2f114cc797 Mon Sep 17 00:00:00 2001 From: Felix Van der Jeugt Date: Wed, 16 Oct 2019 14:47:22 +0200 Subject: [PATCH] Add hooks for muting and spamming mails --- config/alot/config | 20 ++++++++++++++++++++ config/alot/hooks.py | 23 +++++++++++++++++++++++ notmuch-hooks/post-new | 14 ++++++++++++++ 3 files changed, 57 insertions(+) diff --git a/config/alot/config b/config/alot/config index 715b6e7..87c14ee 100644 --- a/config/alot/config +++ b/config/alot/config @@ -87,6 +87,16 @@ theme = "mutt" x = toggletags spam,inbox a = untag inbox A = tag inbox + 1 = call hooks.mute(ui,1) + 2 = call hooks.mute(ui,2) + 3 = call hooks.mute(ui,3) + 4 = call hooks.mute(ui,4) + 5 = call hooks.mute(ui,5) + 6 = call hooks.mute(ui,6) + 7 = call hooks.mute(ui,7) + 8 = call hooks.mute(ui,8) + 9 = call hooks.mute(ui,9) + i = call hooks.spam(ui) [[thread]] a = untag inbox ; fold @@ -94,6 +104,16 @@ theme = "mutt" n = nextpart p = prevpart u = pipeto --background selecturl + 1 = call hooks.mute(ui,1) + 2 = call hooks.mute(ui,2) + 3 = call hooks.mute(ui,3) + 4 = call hooks.mute(ui,4) + 5 = call hooks.mute(ui,5) + 6 = call hooks.mute(ui,6) + 7 = call hooks.mute(ui,7) + 8 = call hooks.mute(ui,8) + 9 = call hooks.mute(ui,9) + i = call hooks.spam(ui) [tags] diff --git a/config/alot/hooks.py b/config/alot/hooks.py index e69de29..331d1d3 100644 --- a/config/alot/hooks.py +++ b/config/alot/hooks.py @@ -0,0 +1,23 @@ +#!/usr/bin/env python3 + +async def mute(ui, days): + from datetime import date, timedelta + datestr = str(date.today() + timedelta(days=days)) + await ui.apply_commandline(f'toggletags inbox,muted,muted/{datestr}') + +async def spam(ui): + from alot.buffers import EnvelopeBuffer + from alot.db.envelope import Envelope + message = ui.current_buffer.get_selected_message() + message.add_tags(['spam']) + message.remove_tags(['unread']) + envelope = Envelope( + headers=dict( + From=['Felix Van der Jeugt '], + To=['spam@ugent.be'], + Subject=['spam'], + References=['<' + message.get_message_id() + '>']), + bodytext='spam', + tags=['spam']) + envelope.attach(message.get_filename()) + ui.buffer_open(EnvelopeBuffer(ui, envelope)) diff --git a/notmuch-hooks/post-new b/notmuch-hooks/post-new index c588c49..abdd29c 100755 --- a/notmuch-hooks/post-new +++ b/notmuch-hooks/post-new @@ -50,6 +50,11 @@ for mid in $(notmuch search --output=messages tag:new); do done done +# Unmute threads with new messages +for mutetag in $(notmuch search --output=tags -- tag:muted and thread:{tag:new} | grep 'muted/'); do + notmuch tag -muted -"$mutetag" +inbox -- tag:"$mutetag" and thread:{tag:new} +done + # Github notifications addtag github "from:notifications@github.com" @@ -66,3 +71,12 @@ notmuch search tag:new | cut -d' ' --complement -f1 | xargs -0 --no-run-if-empty # Inbox remaining not-spam addtag inbox "not tag:spam" notmuch tag -new -- tag:new + +# Unmute threads on their day of unmuting +today="$(date +'%s')" +for mutetag in $(notmuch search --output=tags tag:muted | grep 'muted/'); do + until="$(date -d "${mutetag#*/}" +'%s')" + if [ "$today" -gt "$until" ]; then + notmuch tag -muted -"$mutetag" +inbox -- tag:"$mutetag" + fi +done