parent
1856014398
commit
39e7ef504c
1 changed files with 145 additions and 133 deletions
@ -1,145 +1,157 @@ |
||||
#!/usr/bin/env python3 |
||||
from os import environ |
||||
from re import findall, match |
||||
from sys import argv |
||||
#pylint: disable=C0111 |
||||
|
||||
ESCAPES = { |
||||
'default': '\033]4;{};rgb:{}/{}/{}\033\\', |
||||
'screen': '\033P\033]4;{};rgb:{}/{}/{}\007\033\\', |
||||
'tmux': '\033Ptmux;\033\033]4;{};rgb:{}/{}/{}\007\033\\' |
||||
} |
||||
import os |
||||
import re |
||||
import sys |
||||
|
||||
COLOURS = { |
||||
'default': ( |
||||
('16', '#000000'), ('96', '#875f87'), ('176', '#d787d7'), |
||||
('17', '#00005f'), ('97', '#875faf'), ('177', '#d787ff'), |
||||
('18', '#000087'), ('98', '#875fd7'), ('178', '#d7af00'), |
||||
('19', '#0000af'), ('99', '#875fff'), ('179', '#d7af5f'), |
||||
('20', '#0000d7'), ('100', '#878700'), ('180', '#d7af87'), |
||||
('21', '#0000ff'), ('101', '#87875f'), ('181', '#d7afaf'), |
||||
('22', '#005f00'), ('102', '#878787'), ('182', '#d7afd7'), |
||||
('23', '#005f5f'), ('103', '#8787af'), ('183', '#d7afff'), |
||||
('24', '#005f87'), ('104', '#8787d7'), ('184', '#d7d700'), |
||||
('25', '#005faf'), ('105', '#8787ff'), ('185', '#d7d75f'), |
||||
('26', '#005fd7'), ('106', '#87af00'), ('186', '#d7d787'), |
||||
('27', '#005fff'), ('107', '#87af5f'), ('187', '#d7d7af'), |
||||
('28', '#008700'), ('108', '#87af87'), ('188', '#d7d7d7'), |
||||
('29', '#00875f'), ('109', '#87afaf'), ('189', '#d7d7ff'), |
||||
('30', '#008787'), ('110', '#87afd7'), ('190', '#d7ff00'), |
||||
('31', '#0087af'), ('111', '#87afff'), ('191', '#d7ff5f'), |
||||
('32', '#0087d7'), ('112', '#87d700'), ('192', '#d7ff87'), |
||||
('33', '#0087ff'), ('113', '#87d75f'), ('193', '#d7ffaf'), |
||||
('34', '#00af00'), ('114', '#87d787'), ('194', '#d7ffd7'), |
||||
('35', '#00af5f'), ('115', '#87d7af'), ('195', '#d7ffff'), |
||||
('36', '#00af87'), ('116', '#87d7d7'), ('196', '#ff0000'), |
||||
('37', '#00afaf'), ('117', '#87d7ff'), ('197', '#ff005f'), |
||||
('38', '#00afd7'), ('118', '#87ff00'), ('198', '#ff0087'), |
||||
('39', '#00afff'), ('119', '#87ff5f'), ('199', '#ff00af'), |
||||
('40', '#00d700'), ('120', '#87ff87'), ('200', '#ff00d7'), |
||||
('41', '#00d75f'), ('121', '#87ffaf'), ('201', '#ff00ff'), |
||||
('42', '#00d787'), ('122', '#87ffd7'), ('202', '#ff5f00'), |
||||
('43', '#00d7af'), ('123', '#87ffff'), ('203', '#ff5f5f'), |
||||
('44', '#00d7d7'), ('124', '#af0000'), ('204', '#ff5f87'), |
||||
('45', '#00d7ff'), ('125', '#af005f'), ('205', '#ff5faf'), |
||||
('46', '#00ff00'), ('126', '#af0087'), ('206', '#ff5fd7'), |
||||
('47', '#00ff5f'), ('127', '#af00af'), ('207', '#ff5fff'), |
||||
('48', '#00ff87'), ('128', '#af00d7'), ('208', '#ff8700'), |
||||
('49', '#00ffaf'), ('129', '#af00ff'), ('209', '#ff875f'), |
||||
('50', '#00ffd7'), ('130', '#af5f00'), ('210', '#ff8787'), |
||||
('51', '#00ffff'), ('131', '#af5f5f'), ('211', '#ff87af'), |
||||
('52', '#5f0000'), ('132', '#af5f87'), ('212', '#ff87d7'), |
||||
('53', '#5f005f'), ('133', '#af5faf'), ('213', '#ff87ff'), |
||||
('54', '#5f0087'), ('134', '#af5fd7'), ('214', '#ffaf00'), |
||||
('55', '#5f00af'), ('135', '#af5fff'), ('215', '#ffaf5f'), |
||||
('56', '#5f00d7'), ('136', '#af8700'), ('216', '#ffaf87'), |
||||
('57', '#5f00ff'), ('137', '#af875f'), ('217', '#ffafaf'), |
||||
('58', '#5f5f00'), ('138', '#af8787'), ('218', '#ffafd7'), |
||||
('59', '#5f5f5f'), ('139', '#af87af'), ('219', '#ffafff'), |
||||
('60', '#5f5f87'), ('140', '#af87d7'), ('220', '#ffd700'), |
||||
('61', '#5f5faf'), ('141', '#af87ff'), ('221', '#ffd75f'), |
||||
('62', '#5f5fd7'), ('142', '#afaf00'), ('222', '#ffd787'), |
||||
('63', '#5f5fff'), ('143', '#afaf5f'), ('223', '#ffd7af'), |
||||
('64', '#5f8700'), ('144', '#afaf87'), ('224', '#ffd7d7'), |
||||
('65', '#5f875f'), ('145', '#afafaf'), ('225', '#ffd7ff'), |
||||
('66', '#5f8787'), ('146', '#afafd7'), ('226', '#ffff00'), |
||||
('67', '#5f87af'), ('147', '#afafff'), ('227', '#ffff5f'), |
||||
('68', '#5f87d7'), ('148', '#afd700'), ('228', '#ffff87'), |
||||
('69', '#5f87ff'), ('149', '#afd75f'), ('229', '#ffffaf'), |
||||
('70', '#5faf00'), ('150', '#afd787'), ('230', '#ffffd7'), |
||||
('71', '#5faf5f'), ('151', '#afd7af'), ('231', '#ffffff'), |
||||
('72', '#5faf87'), ('152', '#afd7d7'), ('232', '#080808'), |
||||
('73', '#5fafaf'), ('153', '#afd7ff'), ('233', '#121212'), |
||||
('74', '#5fafd7'), ('154', '#afff00'), ('234', '#1c1c1c'), |
||||
('75', '#5fafff'), ('155', '#afff5f'), ('235', '#262626'), |
||||
('76', '#5fd700'), ('156', '#afff87'), ('236', '#303030'), |
||||
('77', '#5fd75f'), ('157', '#afffaf'), ('237', '#3a3a3a'), |
||||
('78', '#5fd787'), ('158', '#afffd7'), ('238', '#444444'), |
||||
('79', '#5fd7af'), ('159', '#afffff'), ('239', '#4e4e4e'), |
||||
('80', '#5fd7d7'), ('160', '#d70000'), ('240', '#585858'), |
||||
('81', '#5fd7ff'), ('161', '#d7005f'), ('241', '#606060'), |
||||
('82', '#5fff00'), ('162', '#d70087'), ('242', '#666666'), |
||||
('83', '#5fff5f'), ('163', '#d700af'), ('243', '#767676'), |
||||
('84', '#5fff87'), ('164', '#d700d7'), ('244', '#808080'), |
||||
('85', '#5fffaf'), ('165', '#d700ff'), ('245', '#8a8a8a'), |
||||
('86', '#5fffd7'), ('166', '#d75f00'), ('246', '#949494'), |
||||
('87', '#5fffff'), ('167', '#d75f5f'), ('247', '#9e9e9e'), |
||||
('88', '#870000'), ('168', '#d75f87'), ('248', '#a8a8a8'), |
||||
('89', '#87005f'), ('169', '#d75faf'), ('249', '#b2b2b2'), |
||||
('90', '#870087'), ('170', '#d75fd7'), ('250', '#bcbcbc'), |
||||
('91', '#8700af'), ('171', '#d75fff'), ('251', '#c6c6c6'), |
||||
('92', '#8700d7'), ('172', '#d78700'), ('252', '#d0d0d0'), |
||||
('93', '#8700ff'), ('173', '#d7875f'), ('253', '#dadada'), |
||||
('94', '#875f00'), ('174', '#d78787'), ('254', '#e4e4e4'), |
||||
('95', '#875f5f'), ('175', '#d787af'), ('255', '#eeeeee') |
||||
), |
||||
'gruvbox': ( |
||||
('24', '#076678'), ('136', '#b57614'), ('234', '#1d2021'), |
||||
('66', '#427b58'), ('142', '#b8bb26'), ('235', '#282828'), |
||||
('72', '#689d6a'), ('166', '#d65d0e'), ('236', '#32302f'), |
||||
('88', '#9d0006'), ('167', '#fb4934'), ('237', '#3c3836'), |
||||
('96', '#8f3f71'), ('172', '#d79921'), ('239', '#504945'), |
||||
('100', '#79740e'), ('175', '#d3869b'), ('241', '#665c54'), |
||||
('106', '#98971a'), ('208', '#fe8019'), ('243', '#7c6f64'), |
||||
('108', '#8ec07c'), ('214', '#fabd2f'), ('244', '#928374'), |
||||
('109', '#83a598'), ('223', '#ebdbb2'), ('245', '#928374'), |
||||
('124', '#cc241d'), ('228', '#f2e5bc'), ('246', '#a89984'), |
||||
('130', '#af3a03'), ('229', '#fdf4c1'), ('248', '#bdae93'), |
||||
('132', '#b16286'), ('230', '#f9f5d7'), ('250', '#d5c4a1') |
||||
), |
||||
'gotham256': ( |
||||
('17', '#091f2e'), ('67', '#888ca6'), ('194', '#d3ebe9'), |
||||
('18', '#0a3749'), ('78', '#2aa889'), ('214', '#edb443'), |
||||
('24', '#245361'), ('81', '#599cab'), ('232', '#0c1014'), |
||||
('44', '#33859E'), ('122', '#99d1ce'), ('233', '#11151c'), |
||||
('60', '#4e5166'), ('124', '#c23127') |
||||
), |
||||
ESCAPES = { |
||||
'colorspec': '{};rgb:{}/{}/{}', |
||||
|
||||
'default': '\033]4;{}\033\\', |
||||
'screen': '\033P\033]4;{}\007\033\\', |
||||
'tmux': '\033Ptmux;\033\033]4;{}\007\033\\' |
||||
} |
||||
COLORS = { |
||||
'default': { |
||||
'16': '#000000', '96': '#875f87', '176': '#d787d7', |
||||
'17': '#00005f', '97': '#875faf', '177': '#d787ff', |
||||
'18': '#000087', '98': '#875fd7', '178': '#d7af00', |
||||
'19': '#0000af', '99': '#875fff', '179': '#d7af5f', |
||||
'20': '#0000d7', '100': '#878700', '180': '#d7af87', |
||||
'21': '#0000ff', '101': '#87875f', '181': '#d7afaf', |
||||
'22': '#005f00', '102': '#878787', '182': '#d7afd7', |
||||
'23': '#005f5f', '103': '#8787af', '183': '#d7afff', |
||||
'24': '#005f87', '104': '#8787d7', '184': '#d7d700', |
||||
'25': '#005faf', '105': '#8787ff', '185': '#d7d75f', |
||||
'26': '#005fd7', '106': '#87af00', '186': '#d7d787', |
||||
'27': '#005fff', '107': '#87af5f', '187': '#d7d7af', |
||||
'28': '#008700', '108': '#87af87', '188': '#d7d7d7', |
||||
'29': '#00875f', '109': '#87afaf', '189': '#d7d7ff', |
||||
'30': '#008787', '110': '#87afd7', '190': '#d7ff00', |
||||
'31': '#0087af', '111': '#87afff', '191': '#d7ff5f', |
||||
'32': '#0087d7', '112': '#87d700', '192': '#d7ff87', |
||||
'33': '#0087ff', '113': '#87d75f', '193': '#d7ffaf', |
||||
'34': '#00af00', '114': '#87d787', '194': '#d7ffd7', |
||||
'35': '#00af5f', '115': '#87d7af', '195': '#d7ffff', |
||||
'36': '#00af87', '116': '#87d7d7', '196': '#ff0000', |
||||
'37': '#00afaf', '117': '#87d7ff', '197': '#ff005f', |
||||
'38': '#00afd7', '118': '#87ff00', '198': '#ff0087', |
||||
'39': '#00afff', '119': '#87ff5f', '199': '#ff00af', |
||||
'40': '#00d700', '120': '#87ff87', '200': '#ff00d7', |
||||
'41': '#00d75f', '121': '#87ffaf', '201': '#ff00ff', |
||||
'42': '#00d787', '122': '#87ffd7', '202': '#ff5f00', |
||||
'43': '#00d7af', '123': '#87ffff', '203': '#ff5f5f', |
||||
'44': '#00d7d7', '124': '#af0000', '204': '#ff5f87', |
||||
'45': '#00d7ff', '125': '#af005f', '205': '#ff5faf', |
||||
'46': '#00ff00', '126': '#af0087', '206': '#ff5fd7', |
||||
'47': '#00ff5f', '127': '#af00af', '207': '#ff5fff', |
||||
'48': '#00ff87', '128': '#af00d7', '208': '#ff8700', |
||||
'49': '#00ffaf', '129': '#af00ff', '209': '#ff875f', |
||||
'50': '#00ffd7', '130': '#af5f00', '210': '#ff8787', |
||||
'51': '#00ffff', '131': '#af5f5f', '211': '#ff87af', |
||||
'52': '#5f0000', '132': '#af5f87', '212': '#ff87d7', |
||||
'53': '#5f005f', '133': '#af5faf', '213': '#ff87ff', |
||||
'54': '#5f0087', '134': '#af5fd7', '214': '#ffaf00', |
||||
'55': '#5f00af', '135': '#af5fff', '215': '#ffaf5f', |
||||
'56': '#5f00d7', '136': '#af8700', '216': '#ffaf87', |
||||
'57': '#5f00ff', '137': '#af875f', '217': '#ffafaf', |
||||
'58': '#5f5f00', '138': '#af8787', '218': '#ffafd7', |
||||
'59': '#5f5f5f', '139': '#af87af', '219': '#ffafff', |
||||
'60': '#5f5f87', '140': '#af87d7', '220': '#ffd700', |
||||
'61': '#5f5faf', '141': '#af87ff', '221': '#ffd75f', |
||||
'62': '#5f5fd7', '142': '#afaf00', '222': '#ffd787', |
||||
'63': '#5f5fff', '143': '#afaf5f', '223': '#ffd7af', |
||||
'64': '#5f8700', '144': '#afaf87', '224': '#ffd7d7', |
||||
'65': '#5f875f', '145': '#afafaf', '225': '#ffd7ff', |
||||
'66': '#5f8787', '146': '#afafd7', '226': '#ffff00', |
||||
'67': '#5f87af', '147': '#afafff', '227': '#ffff5f', |
||||
'68': '#5f87d7', '148': '#afd700', '228': '#ffff87', |
||||
'69': '#5f87ff', '149': '#afd75f', '229': '#ffffaf', |
||||
'70': '#5faf00', '150': '#afd787', '230': '#ffffd7', |
||||
'71': '#5faf5f', '151': '#afd7af', '231': '#ffffff', |
||||
'72': '#5faf87', '152': '#afd7d7', '232': '#080808', |
||||
'73': '#5fafaf', '153': '#afd7ff', '233': '#121212', |
||||
'74': '#5fafd7', '154': '#afff00', '234': '#1c1c1c', |
||||
'75': '#5fafff', '155': '#afff5f', '235': '#262626', |
||||
'76': '#5fd700', '156': '#afff87', '236': '#303030', |
||||
'77': '#5fd75f', '157': '#afffaf', '237': '#3a3a3a', |
||||
'78': '#5fd787', '158': '#afffd7', '238': '#444444', |
||||
'79': '#5fd7af', '159': '#afffff', '239': '#4e4e4e', |
||||
'80': '#5fd7d7', '160': '#d70000', '240': '#585858', |
||||
'81': '#5fd7ff', '161': '#d7005f', '241': '#606060', |
||||
'82': '#5fff00', '162': '#d70087', '242': '#666666', |
||||
'83': '#5fff5f', '163': '#d700af', '243': '#767676', |
||||
'84': '#5fff87', '164': '#d700d7', '244': '#808080', |
||||
'85': '#5fffaf', '165': '#d700ff', '245': '#8a8a8a', |
||||
'86': '#5fffd7', '166': '#d75f00', '246': '#949494', |
||||
'87': '#5fffff', '167': '#d75f5f', '247': '#9e9e9e', |
||||
'88': '#870000', '168': '#d75f87', '248': '#a8a8a8', |
||||
'89': '#87005f', '169': '#d75faf', '249': '#b2b2b2', |
||||
'90': '#870087', '170': '#d75fd7', '250': '#bcbcbc', |
||||
'91': '#8700af', '171': '#d75fff', '251': '#c6c6c6', |
||||
'92': '#8700d7', '172': '#d78700', '252': '#d0d0d0', |
||||
'93': '#8700ff', '173': '#d7875f', '253': '#dadada', |
||||
'94': '#875f00', '174': '#d78787', '254': '#e4e4e4', |
||||
'95': '#875f5f', '175': '#d787af', '255': '#eeeeee' |
||||
}, |
||||
'gruvbox': { |
||||
'24': '#076678', '136': '#b57614', '234': '#1d2021', |
||||
'66': '#427b58', '142': '#b8bb26', '235': '#282828', |
||||
'72': '#689d6a', '166': '#d65d0e', '236': '#32302f', |
||||
'88': '#9d0006', '167': '#fb4934', '237': '#3c3836', |
||||
'96': '#8f3f71', '172': '#d79921', '239': '#504945', |
||||
'100': '#79740e', '175': '#d3869b', '241': '#665c54', |
||||
'106': '#98971a', '208': '#fe8019', '243': '#7c6f64', |
||||
'108': '#8ec07c', '214': '#fabd2f', '244': '#928374', |
||||
'109': '#83a598', '223': '#ebdbb2', '245': '#928374', |
||||
'124': '#cc241d', '228': '#f2e5bc', '246': '#a89984', |
||||
'130': '#af3a03', '229': '#fdf4c1', '248': '#bdae93', |
||||
'132': '#b16286', '230': '#f9f5d7', '250': '#d5c4a1' |
||||
}, |
||||
'gotham256': { |
||||
'17': '#091f2e', '67': '#888ca6', '194': '#d3ebe9', |
||||
'18': '#0a3749', '78': '#2aa889', '214': '#edb443', |
||||
'24': '#245361', '81': '#599cab', '232': '#0c1014', |
||||
'44': '#33859E', '122': '#99d1ce', '233': '#11151c', |
||||
'60': '#4e5166', '124': '#c23127' |
||||
}, |
||||
# an experiment to support changing colours on the fly for terminals |
||||
'solarized': ( |
||||
('00', '#073642'), ('06', '#2aa198'), ('11', '#657b83'), |
||||
('01', '#dc322f'), ('07', '#eee8d5'), ('12', '#839496'), |
||||
('02', '#859900'), ('08', '#002b36'), ('13', '#6c71c4'), |
||||
('03', '#b58900'), ('09', '#cb4b16'), ('14', '#93a1a1'), |
||||
('04', '#268bd2'), ('10', '#586e75'), ('15', '#fdf6e3'), |
||||
('05', '#d33682') |
||||
) |
||||
'solarized': { |
||||
'00': '#073642', '06': '#2aa198', '11': '#657b83', |
||||
'01': '#dc322f', '07': '#eee8d5', '12': '#839496', |
||||
'02': '#859900', '08': '#002b36', '13': '#6c71c4', |
||||
'03': '#b58900', '09': '#cb4b16', '14': '#93a1a1', |
||||
'04': '#268bd2', '10': '#586e75', '15': '#fdf6e3', |
||||
'05': '#d33682' |
||||
} |
||||
} |
||||
|
||||
try: |
||||
environ['TMUX'] |
||||
terminal = 'tmux' |
||||
except KeyError: |
||||
if match('screen', environ['TERM']): |
||||
def get_arg(): |
||||
try: |
||||
colorscheme = sys.argv[1] |
||||
assert colorscheme in COLORS |
||||
return colorscheme |
||||
except (AssertionError, IndexError): |
||||
err = 'Usage: {} {{{}}}\n' |
||||
sys.stderr.write(err.format(sys.argv[0], '|'.join(COLORS.keys()))) |
||||
sys.exit(1) |
||||
|
||||
def main(): |
||||
colorscheme = get_arg() |
||||
if 'tmux' in os.environ['TERM']: |
||||
terminal = 'tmux' |
||||
elif 'screen' in os.environ['TERM']: |
||||
terminal = 'screen' |
||||
else: |
||||
terminal = 'default' |
||||
|
||||
if len(argv) == 1: |
||||
colorscheme = 'default' |
||||
else: |
||||
colorscheme = argv[1] |
||||
|
||||
for colour in COLOURS[colorscheme]: |
||||
rgb = findall('[0-9a-fA-F]{2}', colour[1]) |
||||
print(ESCAPES[terminal].format(colour[0], *rgb), end='') |
||||
colors = list() |
||||
for color in COLORS[colorscheme]: |
||||
rgb = re.findall('[0-9a-fA-F]{2}', COLORS[colorscheme][color]) |
||||
colors.append(ESCAPES['colorspec'].format(color, *rgb)) |
||||
colorstring = ESCAPES[terminal].format(';'.join(colors)) |
||||
sys.stdout.write(colorstring) |
||||
|
||||
if __name__ == '__main__': |
||||
main() |
||||
|
Loading…
Reference in new issue