Merge pull request #914 from ZyX-I/better-battery-colors

Improve battery segment colors
This commit is contained in:
Nikolai Aleksandrovich Pavlov 2014-07-10 18:55:06 +04:00
commit ce75d0575e
5 changed files with 37 additions and 21 deletions

View File

@ -240,6 +240,9 @@ Color definitions
* A list of cterm color indicies. * A list of cterm color indicies.
* A list of hex color strings. * 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: .. _config-colorschemes:
Colorschemes Colorschemes

View File

@ -103,8 +103,8 @@
["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"] ["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": [ "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"] ["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"]
] ]
} }
} }

View File

@ -25,6 +25,8 @@
"environment": { "fg": "gray8", "bg": "gray0" }, "environment": { "fg": "gray8", "bg": "gray0" },
"battery": { "fg": "gray8", "bg": "gray0" }, "battery": { "fg": "gray8", "bg": "gray0" },
"battery_gradient": { "fg": "white_red", "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" } "now_playing": { "fg": "gray10", "bg": "black" }
} }
} }

View File

@ -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 Number of discrete steps to show between 0% and 100% capacity if gamify
is True. is True.
:param bool gamify: :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: :param str full_heart:
Heart displayed for full part of battery. Heart displayed for full part of battery.
:param str empty_heart: :param str empty_heart:
Heart displayed for used part of battery. It is also displayed using 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: try:
capacity = _get_capacity(pl) capacity = _get_capacity(pl)
@ -1161,19 +1168,23 @@ def battery(pl, format='{capacity:3.0%}', steps=5, gamify=False, full_heart='♥
ret.append({ ret.append({
'contents': full_heart * numer, 'contents': full_heart * numer,
'draw_inner_divider': False, 'draw_inner_divider': False,
'highlight_group': ['battery_gradient', 'battery'], 'highlight_group': ['battery_full', 'battery_gradient', 'battery'],
'gradient_level': 99, # Using zero as “nothing to worry about”: it is least alert color.
'gradient_level': 0,
}) })
ret.append({ ret.append({
'contents': empty_heart * (denom - numer), 'contents': empty_heart * (denom - numer),
'draw_inner_divider': False, 'draw_inner_divider': False,
'highlight_group': ['battery_gradient', 'battery'], 'highlight_group': ['battery_empty', 'battery_gradient', 'battery'],
'gradient_level': 1, # Using a hundred as it is most alert color.
'gradient_level': 100,
}) })
else: else:
ret.append({ ret.append({
'contents': format.format(capacity=(capacity / 100.0)), 'contents': format.format(capacity=(capacity / 100.0)),
'highlight_group': ['battery_gradient', 'battery'], '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 return ret

View File

@ -533,44 +533,44 @@ class TestCommon(TestCase):
self.assertEqual(common.battery(pl=pl), [{ self.assertEqual(common.battery(pl=pl), [{
'contents': '86%', 'contents': '86%',
'highlight_group': ['battery_gradient', 'battery'], 'highlight_group': ['battery_gradient', 'battery'],
'gradient_level': 86 'gradient_level': 14,
}]) }])
self.assertEqual(common.battery(pl=pl, format='{capacity:.2f}'), [{ self.assertEqual(common.battery(pl=pl, format='{capacity:.2f}'), [{
'contents': '0.86', 'contents': '0.86',
'highlight_group': ['battery_gradient', 'battery'], 'highlight_group': ['battery_gradient', 'battery'],
'gradient_level': 86 'gradient_level': 14,
}]) }])
self.assertEqual(common.battery(pl=pl, steps=7), [{ self.assertEqual(common.battery(pl=pl, steps=7), [{
'contents': '86%', 'contents': '86%',
'highlight_group': ['battery_gradient', 'battery'], 'highlight_group': ['battery_gradient', 'battery'],
'gradient_level': 86 'gradient_level': 14,
}]) }])
self.assertEqual(common.battery(pl=pl, gamify=True), [ self.assertEqual(common.battery(pl=pl, gamify=True), [
{ {
'contents': '♥♥♥♥', 'contents': '♥♥♥♥',
'draw_inner_divider': False, 'draw_inner_divider': False,
'highlight_group': ['battery_gradient', 'battery'], 'highlight_group': ['battery_full', 'battery_gradient', 'battery'],
'gradient_level': 99 'gradient_level': 0
}, },
{ {
'contents': '', 'contents': '',
'draw_inner_divider': False, 'draw_inner_divider': False,
'highlight_group': ['battery_gradient', 'battery'], 'highlight_group': ['battery_empty', 'battery_gradient', 'battery'],
'gradient_level': 1 'gradient_level': 100
} }
]) ])
self.assertEqual(common.battery(pl=pl, gamify=True, full_heart='+', empty_heart='-', steps='10'), [ self.assertEqual(common.battery(pl=pl, gamify=True, full_heart='+', empty_heart='-', steps='10'), [
{ {
'contents': '++++++++', 'contents': '++++++++',
'draw_inner_divider': False, 'draw_inner_divider': False,
'highlight_group': ['battery_gradient', 'battery'], 'highlight_group': ['battery_full', 'battery_gradient', 'battery'],
'gradient_level': 99 'gradient_level': 0
}, },
{ {
'contents': '--', 'contents': '--',
'draw_inner_divider': False, 'draw_inner_divider': False,
'highlight_group': ['battery_gradient', 'battery'], 'highlight_group': ['battery_empty', 'battery_gradient', 'battery'],
'gradient_level': 1 'gradient_level': 100
} }
]) ])