hyprland nxcolor-functions better

This commit is contained in:
Lennart J. Kurzweg (Nx2)
2024-11-21 22:06:03 +01:00
parent 37eb70db63
commit 947b824796
2 changed files with 34 additions and 9 deletions

View File

@@ -8,6 +8,7 @@
from colorsys import hls_to_rgb, rgb_to_hls
import json
import sys
import subprocess
from typing import Literal, cast
from numpy.typing import NDArray
from sklearn.cluster import KMeans
@@ -25,7 +26,7 @@ def fc(c: int) -> str:
return s
class Color(object):
def __init__(self, rgb: tuple[int, ...], frequency: float):
def __init__(self, rgb: tuple[int, ...], frequency: float = 1):
assert len(rgb) == 3, "RGB values must be a tuple of length 3"
self.rgb = cast(tuple[int, int, int], rgb)
self.freq: float = frequency
@@ -115,14 +116,23 @@ def extract_colors(
colors.sort(reverse=True)
return Palette(colors)
def hyprpicker() -> Color:
ret = str(subprocess.run(["${pkgs.hyprpicker}/bin/hyprpicker", "-f", "rgb"], capture_output=True).stdout)[2:-3]
return Color([int(c) for c in ret.split(" ")])
if __name__ == "__main__":
img = sys.argv[1]
if sys.argv[1] == "img":
img = sys.argv[2]
palette = extract_colors(image=img, palette_size=3)
accent = ensure_color(c=palette[0], alter_sat=False)
secondary = ensure_color(c=palette[1], alter_sat=True)
tertiary = ensure_color(c=palette[2], alter_sat=False)
elif sys.argv[1] == "manual":
accent = ensure_color(c=hyprpicker(), alter_sat=False)
secondary = ensure_color(c=hyprpicker(), alter_sat=True)
tertiary = ensure_color(c=hyprpicker(), alter_sat=False)
palette = extract_colors(image=img, palette_size=3)
accent = ensure_color(c=palette[0], alter_sat=False)
secondary = ensure_color(c=palette[1], alter_sat=True)
tertiary = ensure_color(c=palette[2], alter_sat=False)
weird = alter_hue(ilist=accent, hue=80)
special = alter_hue(ilist=accent, hue=180)
foreground = alter_l(accent, 0.9)