diff --git a/powerline/config_files/colorschemes/tmux/default.json b/powerline/config_files/colorschemes/tmux/default.json index 81386ae9..35686d32 100644 --- a/powerline/config_files/colorschemes/tmux/default.json +++ b/powerline/config_files/colorschemes/tmux/default.json @@ -7,6 +7,7 @@ "time": { "fg": "gray10", "bg": "gray2", "attr": ["bold"] }, "time:divider": { "fg": "gray5", "bg": "gray2" }, "email_alert": { "fg": "white", "bg": "brightred", "attr": ["bold"] }, + "email_alert_gradient": { "fg": "white", "bg": "yellow_orange_red", "attr": ["bold"] }, "hostname": { "fg": "black", "bg": "gray10", "attr": ["bold"] }, "weather": { "fg": "gray8", "bg": "gray0" }, "weather_temp_gradient": { "fg": "blue_red", "bg": "gray0" }, diff --git a/powerline/config_files/colorschemes/wm/default.json b/powerline/config_files/colorschemes/wm/default.json index ab1ee74b..d71d4e3c 100644 --- a/powerline/config_files/colorschemes/wm/default.json +++ b/powerline/config_files/colorschemes/wm/default.json @@ -7,6 +7,7 @@ "time": { "fg": "gray10", "bg": "gray2", "attr": ["bold"] }, "time:divider": { "fg": "gray5", "bg": "gray2" }, "email_alert": { "fg": "white", "bg": "brightred", "attr": ["bold"] }, + "email_alert_gradient": { "fg": "white", "bg": "yellow_orange_red", "attr": ["bold"] }, "hostname": { "fg": "black", "bg": "gray10", "attr": ["bold"] }, "weather": { "fg": "gray8", "bg": "gray0" }, "weather_temp_gradient": { "fg": "blue_red", "bg": "gray0" }, diff --git a/powerline/segments/common.py b/powerline/segments/common.py index 34917af8..21a11600 100644 --- a/powerline/segments/common.py +++ b/powerline/segments/common.py @@ -693,12 +693,23 @@ class EmailIMAPSegment(KwThreadedSegment): return None except imaplib.IMAP4.error as e: unread_count = str(e) + return unread_count + + @staticmethod + def render_one(unread_count, max_msgs=None, **kwargs): if not unread_count: return None - return [{ - 'highlight_group': 'email_alert', - 'contents': str(unread_count), - }] + elif type(unread_count) != int or not max_msgs: + return [{ + 'contents': str(unread_count), + 'highlight_group': 'email_alert', + }] + else: + return [{ + 'contents': str(unread_count), + 'highlight_group': ['email_alert_gradient', 'email_alert'], + 'gradient_level': unread_count * 100.0 / max_msgs, + }] email_imap_alert = with_docstring(EmailIMAPSegment(), @@ -714,8 +725,12 @@ email_imap_alert = with_docstring(EmailIMAPSegment(), e-mail server port :param str folder: folder to check for e-mails +:param int max_msgs: + Maximum number of messages. If there are more messages then max_msgs then it + will use gradient level equal to 100, otherwise gradient level is equal to + ``100 * msgs_num / max_msgs``. If not present gradient is not computed. -Highlight groups used: ``email_alert``. +Highlight groups used: ``email_alert_gradient`` (gradient), ``email_alert``. ''')