+++ /dev/null
-"""
-Generate a colorscheme using ColorThief.
-"""
-import logging
-import sys
-
-try:
- from colorthief import ColorThief
-
-except ImportError:
- logging.error("ColorThief wasn't found on your system.")
- logging.error("Try another backend. (wal --backend)")
- sys.exit(1)
-
-from .. import util
-
-
-def gen_colors(img):
- """Loop until 16 colors are generated."""
- color_cmd = ColorThief(img).get_palette
-
- for i in range(0, 10, 1):
- raw_colors = color_cmd(color_count=8 + i)
-
- if len(raw_colors) >= 8:
- break
-
- elif i == 10:
- logging.error("ColorThief couldn't generate a suitable palette.")
- sys.exit(1)
-
- else:
- logging.warning("ColorThief couldn't generate a palette.")
- logging.warning("Trying a larger palette size %s", 8 + i)
-
- return [util.rgb_to_hex(color) for color in raw_colors]
-
-
-def adjust(cols, light):
- """Create palette."""
- cols.sort(key=util.rgb_to_yiq)
- raw_colors = [*cols, *cols]
-
- if light:
- raw_colors[0] = util.lighten_color(cols[0], 0.90)
- raw_colors[7] = util.darken_color(cols[0], 0.75)
-
- else:
- for color in raw_colors:
- color = util.lighten_color(color, 0.40)
-
- raw_colors[0] = util.darken_color(cols[0], 0.80)
- raw_colors[7] = util.lighten_color(cols[0], 0.60)
-
- raw_colors[8] = util.lighten_color(cols[0], 0.20)
- raw_colors[15] = raw_colors[7]
-
- return raw_colors
-
-
-def get(img, light=False):
- """Get colorscheme."""
- cols = gen_colors(img)
- return adjust(cols, light)