diff options
author | Caleb Noelke <cjn075@sheriffmediocre.xyz> | 2022-03-15 14:44:28 -0400 |
---|---|---|
committer | Caleb Noelke <cjn075@sheriffmediocre.xyz> | 2022-03-15 14:44:28 -0400 |
commit | 80a1507ccd557db0701a211ef121be28fad37965 (patch) | |
tree | dbec2fca2a0fd02187eff2c11bf0b677bc756c8b | |
parent | e136433ceadc567b5e84325ede6749314feffd5a (diff) | |
parent | 236aa48e741ff8d65c4c3826db2813bf2ee6f352 (diff) |
merge
-rw-r--r-- | pywal/backends/fast_colorthief.py | 50 | ||||
-rw-r--r-- | pywal/colors.py | 10 | ||||
-rw-r--r-- | pywal/templates/colors-rofi-dark.rasi | 5 | ||||
-rw-r--r-- | pywal/templates/colors-rofi-light.rasi | 5 |
4 files changed, 69 insertions, 1 deletions
diff --git a/pywal/backends/fast_colorthief.py b/pywal/backends/fast_colorthief.py new file mode 100644 index 0000000..b68ff02 --- /dev/null +++ b/pywal/backends/fast_colorthief.py @@ -0,0 +1,50 @@ +""" +Generate a colorscheme using fast_colorthief. +""" +import logging +import sys + +try: + import fast_colorthief + +except ImportError: + logging.error("fast_colorthief wasn't found on your system.") + logging.error("Try another backend. (wal --backend)") + sys.exit(1) + +from .. import util + + +def gen_colors(img): + """ Ask backend to generate 16 colors. """ + raw_colors = fast_colorthief.get_palette(img, 16) + + 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) diff --git a/pywal/colors.py b/pywal/colors.py index 49e5571..8688b4b 100644 --- a/pywal/colors.py +++ b/pywal/colors.py @@ -18,11 +18,19 @@ def list_backends(): os.scandir(os.path.join(MODULE_DIR, "backends")) if "__" not in b.name] +def normalize_img_path(img: str): + """Normalizes the image path for output.""" + if os.name == 'nt': + # On Windows, the JSON.dump ends up outputting un-escaped backslash breaking + # the ability to read colors.json. Windows supports forward slash, so we can + # use that for now + return img.replace('\\', '/') + return img def colors_to_dict(colors, img): """Convert list of colors to pywal format.""" return { - "wallpaper": img, + "wallpaper": normalize_img_path(img), "alpha": util.Color.alpha_num, "special": { diff --git a/pywal/templates/colors-rofi-dark.rasi b/pywal/templates/colors-rofi-dark.rasi index 302d44f..fde6881 100644 --- a/pywal/templates/colors-rofi-dark.rasi +++ b/pywal/templates/colors-rofi-dark.rasi @@ -73,6 +73,11 @@ padding: 1px; }} +#element-text, element-icon {{ + background-color: inherit; + text-color: inherit; +}} + #element.normal.normal {{ background-color: @normal-background; text-color: @normal-foreground; diff --git a/pywal/templates/colors-rofi-light.rasi b/pywal/templates/colors-rofi-light.rasi index d4f89af..ff592d7 100644 --- a/pywal/templates/colors-rofi-light.rasi +++ b/pywal/templates/colors-rofi-light.rasi @@ -73,6 +73,11 @@ padding: 1px; }} +#element-text, element-icon {{ + background-color: inherit; + text-color: inherit; +}} + #element.normal.normal {{ background-color: @normal-background; text-color: @normal-foreground; |