From 8c003c2683a30566ee6fa296138cd0f627b67322 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kim=20Silkeb=C3=A6kken?= Date: Mon, 28 Jan 2013 13:55:36 +0100 Subject: [PATCH] Add e-mail alert segment --- .../colorschemes/awesome/default.json | 3 +++ .../colorschemes/tmux/default.json | 3 +++ .../config_files/themes/awesome/default.json | 9 +++++++++ .../config_files/themes/tmux/default.json | 9 +++++++++ powerline/segments/common.py | 20 +++++++++++++++++++ 5 files changed, 44 insertions(+) diff --git a/powerline/config_files/colorschemes/awesome/default.json b/powerline/config_files/colorschemes/awesome/default.json index e4c96b02..9e12df82 100644 --- a/powerline/config_files/colorschemes/awesome/default.json +++ b/powerline/config_files/colorschemes/awesome/default.json @@ -4,6 +4,8 @@ "black": 16, "white": 231, + "brightred": 160, + "darkestblue": 24, "darkblue": 31, "mediumblue": 38, @@ -37,6 +39,7 @@ "date": { "fg": "gray8", "bg": "gray2" }, "time": { "fg": "gray10", "bg": "gray2", "attr": ["bold"] }, "time:divider": { "fg": "gray5", "bg": "gray2" }, + "email_alert": { "fg": "white", "bg": "brightred", "attr": ["bold"] }, "hostname": { "fg": "black", "bg": "gray10", "attr": ["bold"] }, "weather": { "fg": "gray8", "bg": "gray0" }, "weather_temp_cold": { "fg": "weather_temp_cold", "bg": "gray0" }, diff --git a/powerline/config_files/colorschemes/tmux/default.json b/powerline/config_files/colorschemes/tmux/default.json index 831747f5..0491b021 100644 --- a/powerline/config_files/colorschemes/tmux/default.json +++ b/powerline/config_files/colorschemes/tmux/default.json @@ -4,6 +4,8 @@ "black": 16, "white": 231, + "brightred": 160, + "darkestblue": 24, "darkblue": 31, "mediumblue": 38, @@ -37,6 +39,7 @@ "date": { "fg": "gray8", "bg": "gray2" }, "time": { "fg": "gray10", "bg": "gray2", "attr": ["bold"] }, "time:divider": { "fg": "gray5", "bg": "gray2" }, + "email_alert": { "fg": "white", "bg": "brightred", "attr": ["bold"] }, "hostname": { "fg": "black", "bg": "gray10", "attr": ["bold"] }, "weather": { "fg": "gray8", "bg": "gray0" }, "weather_temp_cold": { "fg": "weather_temp_cold", "bg": "gray0" }, diff --git a/powerline/config_files/themes/awesome/default.json b/powerline/config_files/themes/awesome/default.json index 18d818d9..2c1ad292 100644 --- a/powerline/config_files/themes/awesome/default.json +++ b/powerline/config_files/themes/awesome/default.json @@ -39,6 +39,15 @@ "highlight_group": ["time", "date"], "divider_highlight_group": "time:divider" }, + { + "name": "email_imap_alert", + "before": "✉ ", + "priority": 10, + "args": { + "username": "", + "password": "" + } + }, { "name": "hostname" } diff --git a/powerline/config_files/themes/tmux/default.json b/powerline/config_files/themes/tmux/default.json index 18d818d9..2c1ad292 100644 --- a/powerline/config_files/themes/tmux/default.json +++ b/powerline/config_files/themes/tmux/default.json @@ -39,6 +39,15 @@ "highlight_group": ["time", "date"], "divider_highlight_group": "time:divider" }, + { + "name": "email_imap_alert", + "before": "✉ ", + "priority": 10, + "args": { + "username": "", + "password": "" + } + }, { "name": "hostname" } diff --git a/powerline/segments/common.py b/powerline/segments/common.py index 217b59ee..ed94e65a 100644 --- a/powerline/segments/common.py +++ b/powerline/segments/common.py @@ -229,3 +229,23 @@ def network_load(interface='eth0', measure_interval=1, suffix='B/s', binary_pref def virtualenv(): return os.path.basename(os.environ.get('VIRTUAL_ENV', '')) or None + + +@memoize(60, persistent=True) +def email_imap_alert(username, password, server='imap.gmail.com', port=993, folder='INBOX'): + import imaplib + import re + + try: + mail = imaplib.IMAP4_SSL(server, port) + mail.login(username, password) + rc, message = mail.status(folder, "(UNSEEN)") + unread_count = re.search("UNSEEN (\d+)", message[0]).group(1) + except (imaplib.error, AttributeError): + return None + if not unread_count: + return None + return [{ + 'highlight_group': 'email_alert', + 'contents': unread_count, + }]