From 39316c429ba63496eeb15436fb98008d126fc758 Mon Sep 17 00:00:00 2001 From: ZyX Date: Mon, 7 Jul 2014 19:37:59 +0400 Subject: [PATCH 1/5] Reverse the gradient in battery segment Closes #910 --- powerline/segments/common.py | 10 +++++++--- tests/test_segments.py | 14 +++++++------- 2 files changed, 14 insertions(+), 10 deletions(-) diff --git a/powerline/segments/common.py b/powerline/segments/common.py index 775b38e2..e69e0bf6 100644 --- a/powerline/segments/common.py +++ b/powerline/segments/common.py @@ -1162,18 +1162,22 @@ def battery(pl, format='{capacity:3.0%}', steps=5, gamify=False, full_heart='♥ 'contents': full_heart * numer, 'draw_inner_divider': False, 'highlight_group': ['battery_gradient', 'battery'], - 'gradient_level': 99, + # Using zero as “nothing to worry about”: it is least alert color. + 'gradient_level': 0, }) ret.append({ 'contents': empty_heart * (denom - numer), 'draw_inner_divider': False, 'highlight_group': ['battery_gradient', 'battery'], - 'gradient_level': 1, + # Using a hundred as it is most alert color. + 'gradient_level': 100, }) else: ret.append({ 'contents': format.format(capacity=(capacity / 100.0)), 'highlight_group': ['battery_gradient', 'battery'], - 'gradient_level': capacity, + # Gradients are “least alert – most alert” by default, capacity has + # the opposite semantics. + 'gradient_level': 100 - capacity, }) return ret diff --git a/tests/test_segments.py b/tests/test_segments.py index 497a58ab..5a370460 100644 --- a/tests/test_segments.py +++ b/tests/test_segments.py @@ -533,30 +533,30 @@ class TestCommon(TestCase): self.assertEqual(common.battery(pl=pl), [{ 'contents': '86%', 'highlight_group': ['battery_gradient', 'battery'], - 'gradient_level': 86 + 'gradient_level': 14, }]) self.assertEqual(common.battery(pl=pl, format='{capacity:.2f}'), [{ 'contents': '0.86', 'highlight_group': ['battery_gradient', 'battery'], - 'gradient_level': 86 + 'gradient_level': 14, }]) self.assertEqual(common.battery(pl=pl, steps=7), [{ 'contents': '86%', 'highlight_group': ['battery_gradient', 'battery'], - 'gradient_level': 86 + 'gradient_level': 14, }]) self.assertEqual(common.battery(pl=pl, gamify=True), [ { 'contents': '♥♥♥♥', 'draw_inner_divider': False, 'highlight_group': ['battery_gradient', 'battery'], - 'gradient_level': 99 + 'gradient_level': 0 }, { 'contents': '♥', 'draw_inner_divider': False, 'highlight_group': ['battery_gradient', 'battery'], - 'gradient_level': 1 + 'gradient_level': 100 } ]) self.assertEqual(common.battery(pl=pl, gamify=True, full_heart='+', empty_heart='-', steps='10'), [ @@ -564,13 +564,13 @@ class TestCommon(TestCase): 'contents': '++++++++', 'draw_inner_divider': False, 'highlight_group': ['battery_gradient', 'battery'], - 'gradient_level': 99 + 'gradient_level': 0 }, { 'contents': '--', 'draw_inner_divider': False, 'highlight_group': ['battery_gradient', 'battery'], - 'gradient_level': 1 + 'gradient_level': 100 } ]) From 2f7c44c29cf388d3ade7f760783ce06ceb93256b Mon Sep 17 00:00:00 2001 From: ZyX Date: Mon, 7 Jul 2014 19:38:12 +0400 Subject: [PATCH 2/5] Document how to create gradient colors --- docs/source/configuration.rst | 3 +++ 1 file changed, 3 insertions(+) diff --git a/docs/source/configuration.rst b/docs/source/configuration.rst index b8e70ce6..9517d7a7 100644 --- a/docs/source/configuration.rst +++ b/docs/source/configuration.rst @@ -240,6 +240,9 @@ Color definitions * A list of cterm color indicies. * A list of hex color strings. + It is expected that you define gradients from least alert color to most + alert or use non-alert colors. + .. _config-colorschemes: Colorschemes From a0a5b44173ad7767b02f4a6e6b6d3d284b77c96a Mon Sep 17 00:00:00 2001 From: ZyX Date: Mon, 7 Jul 2014 19:57:28 +0400 Subject: [PATCH 3/5] Use battery_full and battery_empty for displaying hearts Red hearts for battery full are still more optimal in case white hearts are for empty (though I do not understand why they have to be red). Cannot agree about per cents though: red is better for empty then white is if there are no related parts to compare. --- .../config_files/colorschemes/tmux/default.json | 2 ++ powerline/segments/common.py | 17 ++++++++++++----- tests/test_segments.py | 8 ++++---- 3 files changed, 18 insertions(+), 9 deletions(-) diff --git a/powerline/config_files/colorschemes/tmux/default.json b/powerline/config_files/colorschemes/tmux/default.json index b718a2ed..20b122d7 100644 --- a/powerline/config_files/colorschemes/tmux/default.json +++ b/powerline/config_files/colorschemes/tmux/default.json @@ -25,6 +25,8 @@ "environment": { "fg": "gray8", "bg": "gray0" }, "battery": { "fg": "gray8", "bg": "gray0" }, "battery_gradient": { "fg": "white_red", "bg": "gray0" }, + "battery_full": { "fg": "red", "bg": "gray0" }, + "battery_empty": { "fg": "white", "bg": "gray0" }, "now_playing": { "fg": "gray10", "bg": "black" } } } diff --git a/powerline/segments/common.py b/powerline/segments/common.py index e69e0bf6..79b24c52 100644 --- a/powerline/segments/common.py +++ b/powerline/segments/common.py @@ -1140,14 +1140,21 @@ def battery(pl, format='{capacity:3.0%}', steps=5, gamify=False, full_heart='♥ Number of discrete steps to show between 0% and 100% capacity if gamify is True. :param bool gamify: - Measure in hearts (♥) instead of percentages. + Measure in hearts (♥) instead of percentages. For full hearts + ``battery_full`` highlighting group is preferred, for empty hearts there + is ``battery_empty``. :param str full_heart: Heart displayed for “full” part of battery. :param str empty_heart: Heart displayed for “used” part of battery. It is also displayed using - another gradient level, so it is OK for it to be the same as full_heart. + another gradient level and highlighting group, so it is OK for it to be + the same as full_heart as long as necessary highlighting groups are + defined. - Highlight groups used: ``battery_gradient`` (gradient), ``battery``. + ``battery_gradient`` and ``battery`` groups are used in any case, first is + preferred. + + Highlight groups used: ``battery_full`` or ``battery_gradient`` (gradient) or ``battery``, ``battery_empty`` or ``battery_gradient`` (gradient) or ``battery``. ''' try: capacity = _get_capacity(pl) @@ -1161,14 +1168,14 @@ def battery(pl, format='{capacity:3.0%}', steps=5, gamify=False, full_heart='♥ ret.append({ 'contents': full_heart * numer, 'draw_inner_divider': False, - 'highlight_group': ['battery_gradient', 'battery'], + 'highlight_group': ['battery_full', 'battery_gradient', 'battery'], # Using zero as “nothing to worry about”: it is least alert color. 'gradient_level': 0, }) ret.append({ 'contents': empty_heart * (denom - numer), 'draw_inner_divider': False, - 'highlight_group': ['battery_gradient', 'battery'], + 'highlight_group': ['battery_empty', 'battery_gradient', 'battery'], # Using a hundred as it is most alert color. 'gradient_level': 100, }) diff --git a/tests/test_segments.py b/tests/test_segments.py index 5a370460..95a38782 100644 --- a/tests/test_segments.py +++ b/tests/test_segments.py @@ -549,13 +549,13 @@ class TestCommon(TestCase): { 'contents': '♥♥♥♥', 'draw_inner_divider': False, - 'highlight_group': ['battery_gradient', 'battery'], + 'highlight_group': ['battery_full', 'battery_gradient', 'battery'], 'gradient_level': 0 }, { 'contents': '♥', 'draw_inner_divider': False, - 'highlight_group': ['battery_gradient', 'battery'], + 'highlight_group': ['battery_empty', 'battery_gradient', 'battery'], 'gradient_level': 100 } ]) @@ -563,13 +563,13 @@ class TestCommon(TestCase): { 'contents': '++++++++', 'draw_inner_divider': False, - 'highlight_group': ['battery_gradient', 'battery'], + 'highlight_group': ['battery_full', 'battery_gradient', 'battery'], 'gradient_level': 0 }, { 'contents': '--', 'draw_inner_divider': False, - 'highlight_group': ['battery_gradient', 'battery'], + 'highlight_group': ['battery_empty', 'battery_gradient', 'battery'], 'gradient_level': 100 } ]) From 551c9f8bed936af23e543fce8ad01856231c1d82 Mon Sep 17 00:00:00 2001 From: ZyX Date: Mon, 7 Jul 2014 20:00:33 +0400 Subject: [PATCH 4/5] Add two more colors to white_red gradient cterm colors Picked up with tools/generate_gradients.py 231 223 216 209 196 --- powerline/config_files/colors.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/powerline/config_files/colors.json b/powerline/config_files/colors.json index e1c484c4..4a357ac0 100644 --- a/powerline/config_files/colors.json +++ b/powerline/config_files/colors.json @@ -103,7 +103,7 @@ ["19b4fe", "1bb2fc", "1db1fa", "1faff8", "22aef6", "24adf4", "26abf2", "29aaf0", "2ba9ee", "2da7ec", "30a6ea", "32a5e8", "34a3e6", "36a2e4", "39a0e2", "3b9fe1", "3d9edf", "409cdd", "429bdb", "449ad9", "4798d7", "4997d5", "4b96d3", "4d94d1", "5093cf", "5292cd", "5490cb", "578fc9", "598dc7", "5b8cc6", "5e8bc4", "6089c2", "6288c0", "6487be", "6785bc", "6984ba", "6b83b8", "6e81b6", "7080b4", "727eb2", "757db0", "777cae", "797aac", "7b79ab", "7e78a9", "8076a7", "8275a5", "8574a3", "8772a1", "89719f", "8c709d", "8e6e9b", "906d99", "926b97", "956a95", "976993", "996791", "9c668f", "9e658e", "a0638c", "a3628a", "a56188", "a75f86", "a95e84", "ac5c82", "ae5b80", "b05a7e", "b3587c", "b5577a", "b75678", "ba5476", "bc5374", "be5273", "c05071", "c34f6f", "c54e6d", "c74c6b", "ca4b69", "cc4967", "ce4865", "d14763", "d34561", "d5445f", "d7435d", "da415b", "dc4059", "de3f58", "e13d56", "e33c54", "e53a52", "e83950", "ea384e", "ec364c", "ee354a", "f13448", "f33246", "f53144", "f83042", "fa2e40"] ], "white_red": [ - [231, 223, 216, 209, 196], + [231, 255, 223, 216, 209, 202, 196], ["ffffff", "fffe61", "fffcc4", "fffb28", "fff98b", "fff7ef", "fff651", "fff4b4", "fff318", "fff17b", "ffefdf", "ffee41", "ffeca4", "ffeb08", "ffe96b", "ffe7cf", "ffe631", "ffe494", "ffe2f8", "ffe15b", "ffdfbf", "ffde21", "ffdc84", "ffdae8", "ffd94b", "ffd7af", "ffd602", "ffd455", "ffd2aa", "ffd0fd", "ffcf50", "ffcda5", "ffcbf8", "ffca4b", "ffc8a0", "ffc6f3", "ffc546", "ffc39b", "ffc1ee", "ffc041", "ffbe96", "ffbce9", "ffbb3c", "ffb991", "ffb7e4", "ffb637", "ffb48c", "ffb2df", "ffb132", "ffaf87", "ffadda", "ffac2d", "ffaa82", "ffa8d5", "ffa728", "ffa57d", "ffa3d0", "ffa223", "ffa078", "ff9ecb", "ff9d1e", "ff9b73", "ff99c6", "ff9819", "ff966e", "ff94c1", "ff9314", "ff9169", "ff8fbc", "ff8e0f", "ff8c64", "ff8ab7", "ff890a", "ff875f", "ff81f4", "ff7c8a", "ff771f", "ff71b5", "ff6c4c", "ff66e1", "ff6177", "ff5c0c", "ff56a2", "ff5139", "ff4bce", "ff4664", "ff40f9", "ff3b8f", "ff3626", "ff30bb", "ff2b51", "ff25e6", "ff207c", "ff1b13", "ff15a8", "ff103e", "ff0ad3", "ff0569", "ff0000"] ] } From af2d73ad7bda63c57aa601d951c43237403814ca Mon Sep 17 00:00:00 2001 From: ZyX Date: Mon, 7 Jul 2014 20:37:07 +0400 Subject: [PATCH 5/5] Regenerate gui colors for white_red gradient Command used to generate colors: tools/generate_gradients.py -C 231 255 223 216 209 202 196 --weights='1 1 1 1 1 1 3' --- powerline/config_files/colors.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/powerline/config_files/colors.json b/powerline/config_files/colors.json index 4a357ac0..6a8283b9 100644 --- a/powerline/config_files/colors.json +++ b/powerline/config_files/colors.json @@ -104,7 +104,7 @@ ], "white_red": [ [231, 255, 223, 216, 209, 202, 196], - ["ffffff", "fffe61", "fffcc4", "fffb28", "fff98b", "fff7ef", "fff651", "fff4b4", "fff318", "fff17b", "ffefdf", "ffee41", "ffeca4", "ffeb08", "ffe96b", "ffe7cf", "ffe631", "ffe494", "ffe2f8", "ffe15b", "ffdfbf", "ffde21", "ffdc84", "ffdae8", "ffd94b", "ffd7af", "ffd602", "ffd455", "ffd2aa", "ffd0fd", "ffcf50", "ffcda5", "ffcbf8", "ffca4b", "ffc8a0", "ffc6f3", "ffc546", "ffc39b", "ffc1ee", "ffc041", "ffbe96", "ffbce9", "ffbb3c", "ffb991", "ffb7e4", "ffb637", "ffb48c", "ffb2df", "ffb132", "ffaf87", "ffadda", "ffac2d", "ffaa82", "ffa8d5", "ffa728", "ffa57d", "ffa3d0", "ffa223", "ffa078", "ff9ecb", "ff9d1e", "ff9b73", "ff99c6", "ff9819", "ff966e", "ff94c1", "ff9314", "ff9169", "ff8fbc", "ff8e0f", "ff8c64", "ff8ab7", "ff890a", "ff875f", "ff81f4", "ff7c8a", "ff771f", "ff71b5", "ff6c4c", "ff66e1", "ff6177", "ff5c0c", "ff56a2", "ff5139", "ff4bce", "ff4664", "ff40f9", "ff3b8f", "ff3626", "ff30bb", "ff2b51", "ff25e6", "ff207c", "ff1b13", "ff15a8", "ff103e", "ff0ad3", "ff0569", "ff0000"] + ["ffffff", "fefefe", "fdfdfd", "fdfdfd", "fcfcfc", "fbfbfb", "fafafa", "fafafa", "f9f9f9", "f8f8f8", "f7f7f7", "f7f7f7", "f6f6f6", "f5f5f5", "f4f4f4", "f4f3f4", "f3f3f3", "f2f2f2", "f1f1f1", "f0f0f0", "f0f0f0", "efefef", "eeeeee", "efecea", "f1eae4", "f2e8de", "f3e6d8", "f5e4d3", "f6e2cd", "f7e0c7", "f8dec2", "f9dcbc", "fadab6", "fad8b1", "fbd5ac", "fbd2a9", "fbcea5", "fbcaa1", "fbc79e", "fbc39a", "fbc097", "fbbc93", "fbb88f", "fbb58c", "fab188", "faad85", "faaa81", "fba67e", "fba37a", "fb9f76", "fb9c73", "fb986f", "fb946c", "fb9168", "fa8d65", "fa8961", "fa865c", "fa8256", "fb7f4f", "fb7b48", "fb7841", "fb743a", "fb7133", "fb6d2c", "fa6a23", "fa661a", "fa620e", "fa5f03", "fa5d03", "fa5b03", "fa5a03", "fa5803", "fa5703", "fa5503", "fa5303", "fa5103", "fa4f03", "fa4e03", "fa4c03", "fa4a04", "fa4804", "fa4604", "fa4404", "fa4204", "fa3f04", "fa3d04", "fa3b04", "fa3805", "fa3605", "fa3305", "fb3105", "fb2e05", "fb2a05", "fb2705", "fb2306", "fb1f06", "fb1b06", "fb1506", "fb0e06", "fa0506", "fa0007"] ] } }