| 1 | #!/usr/bin/env python |
| 2 | # -*- coding: utf-8 -*- |
| 3 | # |
| 4 | # Usage: |
| 5 | # 1. Save as `vt-color-scheme.py` |
| 6 | # 2. Make executable |
| 7 | # 3. Go to https://terminal.sexy and make your own color scheme |
| 8 | # 4. Export as JSON (easier to work with) and edit TANGO_SCHEME |
| 9 | # with the colors you chose |
| 10 | # 5. Run this script (redirect to text file if it's easier for you) |
| 11 | # 6. Paste the output as boot option in Lilo / Elilo etc. |
| 12 | |
| 13 | KERNEL_PARAMS = ['vt.default_red', 'vt.default_grn', 'vt.default_blu', ] |
| 14 | |
| 15 | # MATERIAL DARK theme |
| 16 | # https://material-ui.com/customization/default-theme/ |
| 17 | TANGO_SCHEME = [ |
| 18 | "#303030", |
| 19 | "#d32f2f", |
| 20 | "#388e3c", |
| 21 | "#f57c00", |
| 22 | "#303f9f", |
| 23 | "#c51162", |
| 24 | "#1976d2", |
| 25 | "#bdbdbd", |
| 26 | "#424242", |
| 27 | "#e57373", |
| 28 | "#81c784", |
| 29 | "#ffb74d", |
| 30 | "#7986cb", |
| 31 | "#ff4081", |
| 32 | "#64b5f6", |
| 33 | "#f5f5f5" |
| 34 | ] |
| 35 | |
| 36 | def color_scheme_to_rgb_channel_data(color_scheme): |
| 37 | """ |
| 38 | [ '#r1g1b1', '#r2g2b2', ... ] => [ [r1, r2, ...], [g1, g2, ...], [b1, b2, ...], ] |
| 39 | """ |
| 40 | |
| 41 | def split_to_rgb(color): |
| 42 | # rgb str -> [red, green, blue] |
| 43 | hex_value = int(color, 16) |
| 44 | return [hex_value >> 16 & 255, hex_value >> 8 & 255, hex_value & 255] |
| 45 | |
| 46 | return zip(*[split_to_rgb(color.strip('#')) for color in color_scheme]) |
| 47 | |
| 48 | |
| 49 | def prepare_param(param, channel_data): |
| 50 | return '{param}={values}'.format(param=param, values=','.join(hex(byte) for byte in channel_data)) |
| 51 | |
| 52 | |
| 53 | def main(colors): |
| 54 | print(' '.join(prepare_param(param, channel) for param, channel in \ |
| 55 | zip(KERNEL_PARAMS, color_scheme_to_rgb_channel_data(colors)))) |
| 56 | |
| 57 | |
| 58 | if __name__ == '__main__': |
| 59 | main(TANGO_SCHEME) |