forked from Shinonome/dots-hyprland
automatically choose light theme for (very) light walls
This commit is contained in:
@@ -41,8 +41,12 @@ if [[ "$1" = "#"* ]]; then # this is a color
|
|||||||
color_generation/applycolor.sh
|
color_generation/applycolor.sh
|
||||||
fi
|
fi
|
||||||
elif [ "$backend" = "material" ]; then
|
elif [ "$backend" = "material" ]; then
|
||||||
|
smartflag=''
|
||||||
|
if [ "$3" = "--smart" ]; then
|
||||||
|
smartflag='--smart True'
|
||||||
|
fi
|
||||||
color_generation/generate_colors_material.py --path "$1" \
|
color_generation/generate_colors_material.py --path "$1" \
|
||||||
--mode "$lightdark" --scheme "$materialscheme" --transparency "$transparency" --cache '.cache/ags/user/color.txt' \
|
--mode "$lightdark" --scheme "$materialscheme" --transparency "$transparency" --cache '.cache/ags/user/color.txt' $smartflag \
|
||||||
> "$HOME"/.cache/ags/user/generated/material_colors.scss
|
> "$HOME"/.cache/ags/user/generated/material_colors.scss
|
||||||
if [ "$2" = "--apply" ]; then
|
if [ "$2" = "--apply" ]; then
|
||||||
cp "$HOME"/.cache/ags/user/generated/material_colors.scss "$HOME/.config/ags/scss/_material.scss"
|
cp "$HOME"/.cache/ags/user/generated/material_colors.scss "$HOME/.config/ags/scss/_material.scss"
|
||||||
|
|||||||
@@ -14,31 +14,12 @@ parser.add_argument('--path', type=str, default=None, help='generate colorscheme
|
|||||||
parser.add_argument('--color', type=str, default=None, help='generate colorscheme from color')
|
parser.add_argument('--color', type=str, default=None, help='generate colorscheme from color')
|
||||||
parser.add_argument('--mode', type=str, choices=['dark', 'light'], default='dark', help='dark or light mode')
|
parser.add_argument('--mode', type=str, choices=['dark', 'light'], default='dark', help='dark or light mode')
|
||||||
parser.add_argument('--scheme', type=str, default=None, help='material scheme to use')
|
parser.add_argument('--scheme', type=str, default=None, help='material scheme to use')
|
||||||
|
parser.add_argument('--smart', type=str, default=False, help='decide scheme type based on image color')
|
||||||
parser.add_argument('--transparency', type=str, choices=['opaque', 'transparent'], default='opaque', help='enable transparency')
|
parser.add_argument('--transparency', type=str, choices=['opaque', 'transparent'], default='opaque', help='enable transparency')
|
||||||
parser.add_argument('--cache', type=str, default=None, help='file path (relative to home) to store the generated color')
|
parser.add_argument('--cache', type=str, default=None, help='file path (relative to home) to store the generated color')
|
||||||
parser.add_argument('--debug', action='store_true', default=False, help='debug mode')
|
parser.add_argument('--debug', action='store_true', default=False, help='debug mode')
|
||||||
args = parser.parse_args()
|
args = parser.parse_args()
|
||||||
|
|
||||||
# Default scheme -> Tonal Spot (Android Default)
|
|
||||||
from materialyoucolor.scheme.scheme_vibrant import SchemeVibrant as Scheme
|
|
||||||
if args.scheme is not None:
|
|
||||||
if args.scheme == 'fruitsalad':
|
|
||||||
from materialyoucolor.scheme.scheme_fruit_salad import SchemeFruitSalad as Scheme
|
|
||||||
elif args.scheme == 'expressive':
|
|
||||||
from materialyoucolor.scheme.scheme_expressive import SchemeExpressive as Scheme
|
|
||||||
elif args.scheme == 'monochrome':
|
|
||||||
from materialyoucolor.scheme.scheme_monochrome import SchemeMonochrome as Scheme
|
|
||||||
elif args.scheme == 'rainbow':
|
|
||||||
from materialyoucolor.scheme.scheme_rainbow import SchemeRainbow as Scheme
|
|
||||||
elif args.scheme == 'tonalspot':
|
|
||||||
from materialyoucolor.scheme.scheme_tonal_spot import SchemeTonalSpot as Scheme
|
|
||||||
elif args.scheme == 'neutral':
|
|
||||||
from materialyoucolor.scheme.scheme_neutral import SchemeNeutral as Scheme
|
|
||||||
elif args.scheme == 'fidelity':
|
|
||||||
from materialyoucolor.scheme.scheme_fidelity import SchemeFidelity as Scheme
|
|
||||||
elif args.scheme == 'content':
|
|
||||||
from materialyoucolor.scheme.scheme_content import SchemeContent as Scheme
|
|
||||||
|
|
||||||
def hex_to_argb(hex_color):
|
def hex_to_argb(hex_color):
|
||||||
color = hex_color.lstrip('#')
|
color = hex_color.lstrip('#')
|
||||||
if len(color) != 6:
|
if len(color) != 6:
|
||||||
@@ -70,16 +51,44 @@ if args.path is not None:
|
|||||||
basewidth = 64
|
basewidth = 64
|
||||||
wpercent = (basewidth/float(img.size[0]))
|
wpercent = (basewidth/float(img.size[0]))
|
||||||
hsize = int((float(img.size[1])*float(wpercent)))
|
hsize = int((float(img.size[1])*float(wpercent)))
|
||||||
img = img.resize((basewidth,hsize),Image.Resampling.LANCZOS)
|
img = img.resize((basewidth,hsize),Image.Resampling.BICUBIC)
|
||||||
argb = sourceColorFromImage(img)
|
argb = sourceColorFromImage(img)
|
||||||
if args.cache is not None:
|
if args.cache is not None:
|
||||||
export_color_file=os.environ['HOME'] + "/" + args.cache
|
export_color_file=os.environ['HOME'] + "/" + args.cache
|
||||||
with open(export_color_file, 'w') as file:
|
with open(export_color_file, 'w') as file:
|
||||||
file.write(argb_to_hex(argb))
|
file.write(argb_to_hex(argb))
|
||||||
|
hct = Hct.from_int(argb)
|
||||||
|
if(args.smart):
|
||||||
|
if(hct.chroma < 20):
|
||||||
|
args.scheme = 'neutral'
|
||||||
|
if(hct.tone > 60):
|
||||||
|
darkmode = False
|
||||||
elif args.color is not None:
|
elif args.color is not None:
|
||||||
argb = hex_to_argb(args.color)
|
argb = hex_to_argb(args.color)
|
||||||
|
hct = Hct.from_int(argb)
|
||||||
|
|
||||||
scheme = Scheme(Hct.from_int(argb), darkmode, 0.0)
|
# Default scheme -> Tonal Spot (Android Default)
|
||||||
|
from materialyoucolor.scheme.scheme_vibrant import SchemeVibrant as Scheme
|
||||||
|
if args.scheme is not None:
|
||||||
|
if args.scheme == 'fruitsalad':
|
||||||
|
from materialyoucolor.scheme.scheme_fruit_salad import SchemeFruitSalad as Scheme
|
||||||
|
elif args.scheme == 'expressive':
|
||||||
|
from materialyoucolor.scheme.scheme_expressive import SchemeExpressive as Scheme
|
||||||
|
elif args.scheme == 'monochrome':
|
||||||
|
from materialyoucolor.scheme.scheme_monochrome import SchemeMonochrome as Scheme
|
||||||
|
elif args.scheme == 'rainbow':
|
||||||
|
from materialyoucolor.scheme.scheme_rainbow import SchemeRainbow as Scheme
|
||||||
|
elif args.scheme == 'tonalspot':
|
||||||
|
from materialyoucolor.scheme.scheme_tonal_spot import SchemeTonalSpot as Scheme
|
||||||
|
elif args.scheme == 'neutral':
|
||||||
|
from materialyoucolor.scheme.scheme_neutral import SchemeNeutral as Scheme
|
||||||
|
elif args.scheme == 'fidelity':
|
||||||
|
from materialyoucolor.scheme.scheme_fidelity import SchemeFidelity as Scheme
|
||||||
|
elif args.scheme == 'content':
|
||||||
|
from materialyoucolor.scheme.scheme_content import SchemeContent as Scheme
|
||||||
|
|
||||||
|
# Generate
|
||||||
|
scheme = Scheme(hct, darkmode, 0.0)
|
||||||
|
|
||||||
for color in vars(MaterialDynamicColors).keys():
|
for color in vars(MaterialDynamicColors).keys():
|
||||||
color_name = getattr(MaterialDynamicColors, color)
|
color_name = getattr(MaterialDynamicColors, color)
|
||||||
@@ -90,6 +99,13 @@ for color in vars(MaterialDynamicColors).keys():
|
|||||||
print('$' + color + ': ' + hex_color + ';')
|
print('$' + color + ': ' + hex_color + ';')
|
||||||
|
|
||||||
if args.debug == True:
|
if args.debug == True:
|
||||||
|
print('---------------------')
|
||||||
|
print('Hue', hct.hue)
|
||||||
|
print('Chroma', hct.chroma)
|
||||||
|
print('Tone', hct.tone)
|
||||||
|
print('Dark mode?', darkmode)
|
||||||
|
print('Scheme', args.scheme)
|
||||||
|
print('---------------------')
|
||||||
for color in vars(MaterialDynamicColors).keys():
|
for color in vars(MaterialDynamicColors).keys():
|
||||||
color_name = getattr(MaterialDynamicColors, color)
|
color_name = getattr(MaterialDynamicColors, color)
|
||||||
if hasattr(color_name, "get_hct"):
|
if hasattr(color_name, "get_hct"):
|
||||||
|
|||||||
@@ -26,4 +26,4 @@ else
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# Generate colors for ags n stuff
|
# Generate colors for ags n stuff
|
||||||
"$HOME"/.config/ags/scripts/color_generation/colorgen.sh "${imgpath}" --apply
|
"$HOME"/.config/ags/scripts/color_generation/colorgen.sh "${imgpath}" --apply --smart
|
||||||
|
|||||||
Reference in New Issue
Block a user