aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorgxlin <[email protected]>2021-06-26 10:49:25 +0800
committergxlin <[email protected]>2021-06-26 10:49:25 +0800
commitd79b3e6c9a904d8fc4f28f85ea60cb6ab040164b (patch)
treefa385565b9964c28db1384e047b393b3050ae4fd
parent2aa3bd3b351aa99bee9e8bc905975744bf24a4bf (diff)
downloaddotfiles-d79b3e6c9a904d8fc4f28f85ea60cb6ab040164b.tar.gz
dotfiles-d79b3e6c9a904d8fc4f28f85ea60cb6ab040164b.tar.bz2
dotfiles-d79b3e6c9a904d8fc4f28f85ea60cb6ab040164b.zip
Notification of offlineimap
-rw-r--r--.aliases3
-rw-r--r--.gitattributes2
-rw-r--r--.offlineimaprcbin1063 -> 0 bytes
-rw-r--r--.zshrc1
-rw-r--r--offlineimap/.offlineimaprcbin0 -> 1140 bytes
-rw-r--r--offlineimap/offlineimap.py (renamed from .offlineimap.py)0
-rwxr-xr-xofflineimap/postsynchook.sh46
7 files changed, 51 insertions, 1 deletions
diff --git a/.aliases b/.aliases
new file mode 100644
index 0000000..5d4ad13
--- /dev/null
+++ b/.aliases
@@ -0,0 +1,3 @@
+#!/usr/bin/env bash
+
+alias mu4e='emacs -f mu4e'
diff --git a/.gitattributes b/.gitattributes
index 25a9039..f53df20 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -1,4 +1,4 @@
.emacs.d/init-mu4e.el filter=git-crypt diff=git-crypt
-.offlineimaprc filter=git-crypt diff=git-crypt
+offlineimap/.offlineimaprc filter=git-crypt diff=git-crypt
.muttrc filter=git-crypt diff=git-crypt
.authinfo filter=git-crypt diff=git-crypt
diff --git a/.offlineimaprc b/.offlineimaprc
deleted file mode 100644
index 87cfe5a..0000000
--- a/.offlineimaprc
+++ /dev/null
Binary files differ
diff --git a/.zshrc b/.zshrc
index ed96e66..39a53bb 100644
--- a/.zshrc
+++ b/.zshrc
@@ -64,3 +64,4 @@ if ! zplug check --verbose; then
fi
zplug load
+source $HOME/.dotfiles/.aliases
diff --git a/offlineimap/.offlineimaprc b/offlineimap/.offlineimaprc
new file mode 100644
index 0000000..918f26b
--- /dev/null
+++ b/offlineimap/.offlineimaprc
Binary files differ
diff --git a/.offlineimap.py b/offlineimap/offlineimap.py
index c304ef4..c304ef4 100644
--- a/.offlineimap.py
+++ b/offlineimap/offlineimap.py
diff --git a/offlineimap/postsynchook.sh b/offlineimap/postsynchook.sh
new file mode 100755
index 0000000..7262a50
--- /dev/null
+++ b/offlineimap/postsynchook.sh
@@ -0,0 +1,46 @@
+#!/usr/bin/env bash
+
+clean () {
+ sed "s/^\[/\\\[/g" | sed "s/\"/'/g" | sed 's/\!/❕/g'
+}
+
+get_sender () {
+ grep -o '^From: \(.*\)$' $1 | sed "s/^From: //g" | clean
+}
+
+get_subject () {
+ grep -o '^Subject: \(.*\)$' $1 | sed "s/^Subject: //g" | perl -pe 'use MIME::Words(decode_mimewords); $_=decode_mimewords($_);' | clean
+}
+
+notify () {
+ account=$1
+ previous_messages=/tmp/offlineimap-$account-messages
+ maildir="$HOME/.mail/$account/inbox/new"
+
+ if [ ! -e $previous_messages ]; then
+ touch $previous_messages
+ fi
+
+ for file in $maildir/*; do
+ if [ ! -f $file ]; then
+ continue
+ fi
+
+ filename=$(basename $file)
+ if grep -Fxq $filename $previous_messages; then
+ : echo "seen"
+ else
+ echo $filename >> $previous_messages
+ sender="`get_sender $file`"
+ subject=`get_subject $file`
+ message="New message for $account"
+
+ if [ -e /usr/local/bin/terminal-notifier ]; then
+ terminal-notifier -title $subject -subtitle $sender -message $message -sender 'org.gnu.Emacs' -activate 'org.gnu.Emacs'
+ fi
+ fi
+ done
+}
+
+mu index
+notify $1