]> danix's work - my-dotfiles.git/commitdiff
added mail script to polybar master
authordanix <redacted>
Sat, 1 Mar 2025 17:08:08 +0000 (18:08 +0100)
committerdanix <redacted>
Sat, 1 Mar 2025 17:08:08 +0000 (18:08 +0100)
home-config/polybar/config
home-config/polybar/modules/mail.ini [new file with mode: 0644]
home-config/polybar/scripts/mailread.py [new file with mode: 0755]

index b5af431fc29feef8a7b0ffc7b36a26d67b83f770..327f5dbbc7040e57da4463bd59ccd6a3fdd39453 100644 (file)
@@ -24,9 +24,9 @@ separator-padding = 1
 separator-foreground = ${colors.secondary}
 font-0 = "Inconsolata Nerd Font:weight=regular;2"
 padding = 1
-modules-left = slackware gmail-0 gmail-2 gmail-1 pulseaudio 
+modules-left = slackware gmail-0 gmail-2 gmail-1 mail
 modules-center = xworkspaces
-modules-right = info-airqualityindex weather xkeyboard
+modules-right = info-airqualityindex weather pulseaudio xkeyboard
 dpi = 96
 enable-ipc = true
 
@@ -43,7 +43,7 @@ separator-foreground = ${colors.secondary}
 font-0 = "Inconsolata Nerd Font:weight=regular;2"
 padding = 1px
 modules-left = duckstation dunst-snooze windowlist
-modules-center = spotify spotify-prev spotify-play-pause spotify-next
+modules-center = spotify spotify-song spotify-prev spotify-play-pause spotify-next
 modules-right = date
 dpi = 96
 enable-ipc = true
@@ -86,6 +86,9 @@ include-file = /home/danix/.config/polybar/modules/slackware.ini
 # kdeconnect
 # include-file = /home/danix/.config/polybar/modules/kdeconnect.ini
 
+# mail danix@danix.xyz
+include-file = /home/danix/.config/polybar/modules/mail.ini
+
 # gmail-0
 include-file = /home/danix/.config/polybar/modules/gmail-0.ini
 
diff --git a/home-config/polybar/modules/mail.ini b/home-config/polybar/modules/mail.ini
new file mode 100644 (file)
index 0000000..258cf75
--- /dev/null
@@ -0,0 +1,10 @@
+[module/mail]
+type = custom/script
+exec = python3 ~/.config/polybar/scripts/mailread.py -p  -c e88ced -i 300
+tail = true
+click-left = xdg-open https://privateemail.com/appsuite/#!!&app=io.ox/mail&folder=default0/INBOX&storeLocale=true
+
+format = <label>
+#format-background = ${colors.background}
+format-foreground = ${colors.foreground}
+format-padding = 2
diff --git a/home-config/polybar/scripts/mailread.py b/home-config/polybar/scripts/mailread.py
new file mode 100755 (executable)
index 0000000..a974fb5
--- /dev/null
@@ -0,0 +1,62 @@
+#! /usr/bin/env python
+
+# account and server details
+USER = "danix@danix.xyz"
+PWD = "I1SmsmcA."
+SERVER = "mail.privateemail.com"
+
+# imports
+import sys, traceback
+import time
+import imaplib
+import argparse
+import subprocess
+
+# command line arguments
+parser = argparse.ArgumentParser()
+parser.add_argument('-i', '--interval', default=3600)
+parser.add_argument('-l', '--label', default='INBOX')
+parser.add_argument('-p', '--prefix', default='\uf0e0')
+parser.add_argument('-c', '--color', default='#e06c75')
+args = parser.parse_args()
+
+unread_prefix = '%{F' + args.color + '}' + args.prefix + ' %{F-}'
+error_prefix = '%{F' + args.color + '}\uf06a %{F-}'
+count_was = 0
+
+def print_count(count, is_odd=False):
+       tilde = '~' if is_odd else ''
+       output = ''
+       if count > 0:
+               output = unread_prefix + tilde + str(count)
+       else:
+               output = (args.prefix + ' ' + tilde).strip()
+       print(output, flush=True)
+
+def update_count(count_was):
+       imap = imaplib.IMAP4_SSL(SERVER)
+       imap.login(USER, PWD)
+       status, messages = imap.select(args.label)
+       total = imap.search(None, 'UNSEEN')
+       count = len(total[1][0].split())
+       if count_was < count and count > 0:
+               subprocess.run(['canberra-gtk-play', '-i', 'message'])
+       imap.close()
+       imap.logout()
+       return count
+
+def main(count_was):
+       try:
+               while True:
+                       count_was = update_count(count_was)
+                       print_count(count_was, False)
+                       i = int(args.interval)
+                       time.sleep(i)
+       except KeyboardInterrupt:
+               print("Shutdown requested...exiting")
+       except Exception:
+               traceback.print_exc(file=sys.stdout)
+       sys.exit(0)
+
+if __name__ == "__main__":
+       main(count_was)