diff --git a/.gitignore b/.gitignore index ec3c9b5..89a63b8 100644 --- a/.gitignore +++ b/.gitignore @@ -5,4 +5,5 @@ build/* dist/* *.egg-info/* *~ +.i3pystatus-* ci-build diff --git a/i3pystatus/mail/__init__.py b/i3pystatus/mail/__init__.py index ff69b50..7fae89d 100644 --- a/i3pystatus/mail/__init__.py +++ b/i3pystatus/mail/__init__.py @@ -6,6 +6,11 @@ class Backend(SettingsBase): """Handles the details of checking for mail""" unread = 0 + settings = ("account", "Account name") + # required = ("account", ) + + account = "Default account" + """Number of unread mails You'll probably implement that as a property""" @@ -34,11 +39,15 @@ class Mail(IntervalModule): color = "#ffffff" color_unread = "#ff0000" format = "{unread} new email" - format_plural = "{unread} new emails" + format_plural = "{account} : {current_unread}/{unread} new emails" hide_if_null = True email_client = None on_leftclick = "open_client" + on_upscroll = ["scroll_backend", 1] + on_downscroll = ["scroll_backend", -1] + + current_backend = 0 def init(self): for backend in self.backends: @@ -48,8 +57,13 @@ class Mail(IntervalModule): """ Returns the sum of unread messages across all registered backends """ - - unread = sum(map(lambda backend: backend.unread, self.backends)) + unread = 0 + current_unread = 0 + for id, backend in enumerate(self.backends): + temp = backend.unread + unread = unread + backend.unread + if id == self.current_backend: + current_unread = temp if not unread: color = self.color @@ -65,12 +79,17 @@ class Mail(IntervalModule): if unread > 1: format = self.format_plural + account_name = getattr(self.backends[self.current_backend], "account", "No name") + self.output = { - "full_text": format.format(unread=unread), + "full_text": format.format(unread=unread, current_unread=current_unread, account=account_name), "urgent": urgent, "color": color, } + def scroll_backend(self, step): + self.current_backend = (self.current_backend + step) % len(self.backends) + def open_client(self): if self.email_client: retcode, _, stderr = run_through_shell(self.email_client) diff --git a/i3pystatus/mail/notmuchmail.py b/i3pystatus/mail/notmuchmail.py index bd3ffe3..8953761 100644 --- a/i3pystatus/mail/notmuchmail.py +++ b/i3pystatus/mail/notmuchmail.py @@ -18,9 +18,11 @@ class Notmuch(Backend): settings = ( ("db_path", "Path to the directory of your notmuch database"), + ("query", "Same query notmuch would accept, by default 'tag:unread and tag:inbox'"), ) db_path = None + query = "tag:unread and tag:inbox" def init(self): if not self.db_path: @@ -38,7 +40,7 @@ class Notmuch(Backend): @property def unread(self): db = notmuch.Database(self.db_path) - result = notmuch.Query(db, "tag:unread and tag:inbox").count_messages() + result = notmuch.Query(db, self.query).count_messages() db.close() return result