Files
dotfiles/scripts/apply_wall
2023-10-23 10:45:41 +00:00

135 lines
4.4 KiB
Python
Executable File

#!/usr/bin/env python
import subprocess
import os
import pywal
import numpy as np
import matplotlib as mpl
import time
import json
import random
def colormix(c1,c2,mix=0):
#get np arrays c1 and c2 from hex
c1 = np.array(mpl.colors.to_rgb(c1))
c2 = np.array(mpl.colors.to_rgb(c2))
return mpl.colors.to_hex((1-mix)*c1 + mix*c2)
def alpha(c1,a):
c1 = np.array(mpl.colors.to_rgb(c1))
return mpl.colors.to_hex(c1 + (1-c1)*a)
def apply(pre=None,wallpaper=None):
if not pre:
colors = pywal.colors.get(wallpaper,backend="wal")
else:
colors = pre
print(wallpaper)
print("colors::::: ",colors)
# with open(os.path.expanduser("~/.config/Code/User/settings.json"),"r") as f:
# code_conf = json.load(f)
# if not code_conf.get("workbench.colorCustomizations"):
# code_conf["workbench.colorCustomizations"] = {}
# for key,value in code_conf["workbench.colorCustomizations"].items():
# value = value.strip()
# if value.startswith("#"):
# code_conf["workbench.colorCustomizations"][key] = colormix(value,colors["colors"][f"color5"],mix=0.1)
# with open(os.path.expanduser("~/.config/Code/User/settings.json"), "w") as f:
# json.dump(code_conf, f, indent=4)
cmd = f"swww img '{wallpaper}' --transition-type grow --transition-step 1 --transition-duration 1 --transition-pos 0.5,1.0"
subprocess.run(cmd,shell=True)
with open(os.path.expanduser("~/.config/hypr/themes/colors_base"),"r") as cr:
raw = cr.read()
new_colors = {}
for line in raw.split("\n"):
if line and not line.startswith("#"):
color,value = line.split(":")
if color.isnumeric():
new_colors[color.strip()] = colormix(value.strip(),colors["colors"]["color"+color.strip()],mix=0.75)
for color,value in colors["special"].items():
new_colors[color] = value
with open(os.path.expanduser("~/.config/hypr/themes/colors"),"w") as f:
for color,value in new_colors.items():
f.write(f"{color}: {value}\n")
with open(os.path.expanduser("~/.config/hypr/themes/uicolors"),"w") as f:
for color,value in colors["colors"].items():
f.write(f"{color[5:]}: {value}\n")
for color,value in colors["special"].items():
f.write(f"{color}: {value}\n")
subprocess.run("touch ~/.config/hypr/themes/uicolors",shell=True)
# active borders
gradient = ""
for color,value in colors["colors"].items():
gradient += f"rgba({value[1:]}ff) "
gradient += " 45deg"
cmd = f"hyprctl keyword general:col.active_border '{gradient}'"
print(cmd)
subprocess.run(cmd,shell=True)
# inactive borders
gradient = ""
for color,value in colors["colors"].items():
gradient += f"rgba({value[1:]}44) "
gradient += " 0deg"
cmd = f"hyprctl keyword general:col.inactive_border '{gradient}'"
print(cmd)
subprocess.run(cmd,shell=True)
cmd = f"hyprctl keyword decoration:col.shadow '0x33{colors['colors']['color5'][1:]}'"
print(cmd)
subprocess.run(cmd,shell=True)
cmd = f"hyprctl keyword decoration:col.shadow_inactive '0x22{colors['special']['background'][1:]}'"
print(cmd)
subprocess.run(cmd,shell=True)
#keyboard
cmd = f"asusctl led-mode static -c '{colors['colors']['color0'][1:]}'"
print(cmd)
subprocess.run(cmd,shell=True)
#cava
with open(os.path.expanduser("~/.config/cava/config"),"r") as f:
conf = f.read()
conf = conf.split("#--- cover2bg.py ---")[0]
conf += "\n#--- cover2bg.py ---\n" + f"""
[color]
background = '{colors["special"]["background"]}'
gradient = 1
gradient_color_1 = '{colors["colors"]["color0"]}'
gradient_color_2 = '{colors["colors"]["color1"]}'
gradient_color_3 = '{colors["colors"]["color2"]}'
gradient_color_4 = '{colors["colors"]["color3"]}'
gradient_color_5 = '{colors["colors"]["color4"]}'
gradient_color_6 = '{colors["colors"]["color5"]}'
gradient_color_7 = '{colors["colors"]["color6"]}'
gradient_color_8 = '{colors["colors"]["color7"]}'
"""
with open(os.path.expanduser("~/.config/cava/config"),"w") as f:
f.write(conf)
time.sleep(0.5)
subprocess.run("pkill -USR2 cava",shell=True)
subprocess.run("pkill -USR2 fish",shell=True)
def main():
apply(wallpaper="/tmp/bg.png")
if __name__ == "__main__":
main()