pywal 3.8.13__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- pywal/__init__.py +31 -0
- pywal/__main__.py +402 -0
- pywal/backends/__init__.py +10 -0
- pywal/backends/colorthief.py +69 -0
- pywal/backends/colorz.py +58 -0
- pywal/backends/fast_colorthief.py +53 -0
- pywal/backends/haishoku.py +53 -0
- pywal/backends/modern_colorthief.py +53 -0
- pywal/backends/okthief.py +56 -0
- pywal/backends/schemer2.py +51 -0
- pywal/backends/wal.py +127 -0
- pywal/colors.py +530 -0
- pywal/colorschemes/dark/3024.json +1 -0
- pywal/colorschemes/dark/ashes.json +1 -0
- pywal/colorschemes/dark/base16-3024.json +1 -0
- pywal/colorschemes/dark/base16-apathy.json +1 -0
- pywal/colorschemes/dark/base16-ashes.json +1 -0
- pywal/colorschemes/dark/base16-atelier-cave.json +1 -0
- pywal/colorschemes/dark/base16-atelier-dune.json +1 -0
- pywal/colorschemes/dark/base16-atelier-estuary.json +1 -0
- pywal/colorschemes/dark/base16-atelier-forest.json +1 -0
- pywal/colorschemes/dark/base16-atelier-heath.json +1 -0
- pywal/colorschemes/dark/base16-atelier-lakeside.json +1 -0
- pywal/colorschemes/dark/base16-atelier-plateau.json +1 -0
- pywal/colorschemes/dark/base16-atelier-savanna.json +1 -0
- pywal/colorschemes/dark/base16-atelier-seaside.json +1 -0
- pywal/colorschemes/dark/base16-atelier-sulphurpool.json +1 -0
- pywal/colorschemes/dark/base16-bespin.json +1 -0
- pywal/colorschemes/dark/base16-black-metal-bathory.json +1 -0
- pywal/colorschemes/dark/base16-black-metal-burzum.json +1 -0
- pywal/colorschemes/dark/base16-black-metal-funeral.json +1 -0
- pywal/colorschemes/dark/base16-black-metal-gorgoroth.json +1 -0
- pywal/colorschemes/dark/base16-black-metal-immortal.json +1 -0
- pywal/colorschemes/dark/base16-black-metal-khold.json +1 -0
- pywal/colorschemes/dark/base16-black-metal-marduk.json +1 -0
- pywal/colorschemes/dark/base16-black-metal-mayhem.json +1 -0
- pywal/colorschemes/dark/base16-black-metal-nile.json +1 -0
- pywal/colorschemes/dark/base16-black-metal-venom.json +1 -0
- pywal/colorschemes/dark/base16-black-metal.json +1 -0
- pywal/colorschemes/dark/base16-brewer.json +1 -0
- pywal/colorschemes/dark/base16-bright.json +1 -0
- pywal/colorschemes/dark/base16-brushtrees.json +1 -0
- pywal/colorschemes/dark/base16-chalk.json +1 -0
- pywal/colorschemes/dark/base16-circus.json +1 -0
- pywal/colorschemes/dark/base16-classic.json +1 -0
- pywal/colorschemes/dark/base16-codeschool.json +1 -0
- pywal/colorschemes/dark/base16-default.json +1 -0
- pywal/colorschemes/dark/base16-dracula.json +1 -0
- pywal/colorschemes/dark/base16-eighties.json +1 -0
- pywal/colorschemes/dark/base16-embers.json +1 -0
- pywal/colorschemes/dark/base16-flat.json +1 -0
- pywal/colorschemes/dark/base16-google.json +1 -0
- pywal/colorschemes/dark/base16-grayscale.json +1 -0
- pywal/colorschemes/dark/base16-greenscreen.json +1 -0
- pywal/colorschemes/dark/base16-gruvbox-hard.json +1 -0
- pywal/colorschemes/dark/base16-gruvbox-medium.json +1 -0
- pywal/colorschemes/dark/base16-gruvbox-pale.json +1 -0
- pywal/colorschemes/dark/base16-gruvbox-soft.json +1 -0
- pywal/colorschemes/dark/base16-harmonic.json +1 -0
- pywal/colorschemes/dark/base16-hopscotch.json +1 -0
- pywal/colorschemes/dark/base16-icy.json +1 -0
- pywal/colorschemes/dark/base16-irblack.json +1 -0
- pywal/colorschemes/dark/base16-isotope.json +1 -0
- pywal/colorschemes/dark/base16-kanagawa.json +1 -0
- pywal/colorschemes/dark/base16-macintosh.json +1 -0
- pywal/colorschemes/dark/base16-marrakesh.json +1 -0
- pywal/colorschemes/dark/base16-materia.json +1 -0
- pywal/colorschemes/dark/base16-material-palenight.json +1 -0
- pywal/colorschemes/dark/base16-material.json +1 -0
- pywal/colorschemes/dark/base16-materialer.json +1 -0
- pywal/colorschemes/dark/base16-mellow-purple.json +1 -0
- pywal/colorschemes/dark/base16-mocha.json +1 -0
- pywal/colorschemes/dark/base16-monokai.json +1 -0
- pywal/colorschemes/dark/base16-nord.json +1 -0
- pywal/colorschemes/dark/base16-ocean.json +1 -0
- pywal/colorschemes/dark/base16-oceanicnext.json +1 -0
- pywal/colorschemes/dark/base16-onedark.json +1 -0
- pywal/colorschemes/dark/base16-outrun.json +1 -0
- pywal/colorschemes/dark/base16-paraiso.json +1 -0
- pywal/colorschemes/dark/base16-phd.json +1 -0
- pywal/colorschemes/dark/base16-pico.json +1 -0
- pywal/colorschemes/dark/base16-pop.json +1 -0
- pywal/colorschemes/dark/base16-porple.json +1 -0
- pywal/colorschemes/dark/base16-railscasts.json +1 -0
- pywal/colorschemes/dark/base16-rebecca.json +1 -0
- pywal/colorschemes/dark/base16-seti.json +1 -0
- pywal/colorschemes/dark/base16-snazzy.json +1 -0
- pywal/colorschemes/dark/base16-solarflare.json +1 -0
- pywal/colorschemes/dark/base16-solarized.json +1 -0
- pywal/colorschemes/dark/base16-spacemacs.json +1 -0
- pywal/colorschemes/dark/base16-summerfruit.json +1 -0
- pywal/colorschemes/dark/base16-tomorrow-night.json +1 -0
- pywal/colorschemes/dark/base16-tube.json +1 -0
- pywal/colorschemes/dark/base16-twilight.json +1 -0
- pywal/colorschemes/dark/base16-unikitty.json +1 -0
- pywal/colorschemes/dark/base16-woodland.json +1 -0
- pywal/colorschemes/dark/base16-xcode-dusk.json +1 -0
- pywal/colorschemes/dark/base16-zenburn.json +1 -0
- pywal/colorschemes/dark/base16tooth.json +1 -0
- pywal/colorschemes/dark/catppuccin-frappe.json +25 -0
- pywal/colorschemes/dark/catppuccin-macchiato.json +25 -0
- pywal/colorschemes/dark/catppuccin-mocha.json +25 -0
- pywal/colorschemes/dark/darktooth.json +1 -0
- pywal/colorschemes/dark/dkeg-5725.json +1 -0
- pywal/colorschemes/dark/dkeg-amiox.json +1 -0
- pywal/colorschemes/dark/dkeg-bark.json +1 -0
- pywal/colorschemes/dark/dkeg-blend.json +1 -0
- pywal/colorschemes/dark/dkeg-blok.json +1 -0
- pywal/colorschemes/dark/dkeg-bluetype.json +1 -0
- pywal/colorschemes/dark/dkeg-blumune.json +1 -0
- pywal/colorschemes/dark/dkeg-book.json +1 -0
- pywal/colorschemes/dark/dkeg-branch.json +1 -0
- pywal/colorschemes/dark/dkeg-brownstone.json +1 -0
- pywal/colorschemes/dark/dkeg-bulb.json +1 -0
- pywal/colorschemes/dark/dkeg-chaires.json +1 -0
- pywal/colorschemes/dark/dkeg-coco.json +1 -0
- pywal/colorschemes/dark/dkeg-corduroy.json +1 -0
- pywal/colorschemes/dark/dkeg-depth.json +1 -0
- pywal/colorschemes/dark/dkeg-designr.json +1 -0
- pywal/colorschemes/dark/dkeg-diner.json +1 -0
- pywal/colorschemes/dark/dkeg-escen.json +1 -0
- pywal/colorschemes/dark/dkeg-fendr.json +1 -0
- pywal/colorschemes/dark/dkeg-flapr.json +1 -0
- pywal/colorschemes/dark/dkeg-forst.json +1 -0
- pywal/colorschemes/dark/dkeg-fury.json +1 -0
- pywal/colorschemes/dark/dkeg-harbing.json +1 -0
- pywal/colorschemes/dark/dkeg-kit.json +1 -0
- pywal/colorschemes/dark/dkeg-leaf.json +1 -0
- pywal/colorschemes/dark/dkeg-link.json +1 -0
- pywal/colorschemes/dark/dkeg-mattd.json +1 -0
- pywal/colorschemes/dark/dkeg-novmbr.json +1 -0
- pywal/colorschemes/dark/dkeg-owl.json +1 -0
- pywal/colorschemes/dark/dkeg-paints.json +1 -0
- pywal/colorschemes/dark/dkeg-parkd.json +1 -0
- pywal/colorschemes/dark/dkeg-pastely.json +1 -0
- pywal/colorschemes/dark/dkeg-petal.json +1 -0
- pywal/colorschemes/dark/dkeg-poly.json +1 -0
- pywal/colorschemes/dark/dkeg-prevail.json +1 -0
- pywal/colorschemes/dark/dkeg-provrb.json +1 -0
- pywal/colorschemes/dark/dkeg-raild.json +1 -0
- pywal/colorschemes/dark/dkeg-relax.json +1 -0
- pywal/colorschemes/dark/dkeg-scag.json +1 -0
- pywal/colorschemes/dark/dkeg-scape.json +1 -0
- pywal/colorschemes/dark/dkeg-shade.json +1 -0
- pywal/colorschemes/dark/dkeg-simplicity.json +1 -0
- pywal/colorschemes/dark/dkeg-skigh.json +1 -0
- pywal/colorschemes/dark/dkeg-slate.json +1 -0
- pywal/colorschemes/dark/dkeg-soundwave.json +1 -0
- pywal/colorschemes/dark/dkeg-spire.json +1 -0
- pywal/colorschemes/dark/dkeg-sprout.json +1 -0
- pywal/colorschemes/dark/dkeg-squares.json +1 -0
- pywal/colorschemes/dark/dkeg-stv.json +1 -0
- pywal/colorschemes/dark/dkeg-subtle.json +1 -0
- pywal/colorschemes/dark/dkeg-sundr.json +1 -0
- pywal/colorschemes/dark/dkeg-tealights.json +1 -0
- pywal/colorschemes/dark/dkeg-traffic.json +1 -0
- pywal/colorschemes/dark/dkeg-transposet.json +1 -0
- pywal/colorschemes/dark/dkeg-urban.json +1 -0
- pywal/colorschemes/dark/dkeg-vans.json +1 -0
- pywal/colorschemes/dark/dkeg-victory.json +1 -0
- pywal/colorschemes/dark/dkeg-view.json +1 -0
- pywal/colorschemes/dark/dkeg-wintry.json +1 -0
- pywal/colorschemes/dark/dracula.json +25 -0
- pywal/colorschemes/dark/draculansi.json +25 -0
- pywal/colorschemes/dark/gruvbox.json +1 -0
- pywal/colorschemes/dark/hybrid-material.json +1 -0
- pywal/colorschemes/dark/monokai.json +1 -0
- pywal/colorschemes/dark/rose-pine-moon.json +25 -0
- pywal/colorschemes/dark/rose-pine.json +25 -0
- pywal/colorschemes/dark/sexy-astromouse.json +1 -0
- pywal/colorschemes/dark/sexy-belge.json +1 -0
- pywal/colorschemes/dark/sexy-bitmute.json +1 -0
- pywal/colorschemes/dark/sexy-cloud.json +1 -0
- pywal/colorschemes/dark/sexy-colorfulcolors.json +1 -0
- pywal/colorschemes/dark/sexy-dawn.json +1 -0
- pywal/colorschemes/dark/sexy-deafened.json +1 -0
- pywal/colorschemes/dark/sexy-derp.json +1 -0
- pywal/colorschemes/dark/sexy-digerati.json +1 -0
- pywal/colorschemes/dark/sexy-doomicideocean.json +1 -0
- pywal/colorschemes/dark/sexy-dotshare.json +1 -0
- pywal/colorschemes/dark/sexy-dwmrob.json +1 -0
- pywal/colorschemes/dark/sexy-eqie6.json +1 -0
- pywal/colorschemes/dark/sexy-euphrasia.json +1 -0
- pywal/colorschemes/dark/sexy-gjm.json +1 -0
- pywal/colorschemes/dark/sexy-gnometerm.json +1 -0
- pywal/colorschemes/dark/sexy-gotham.json +1 -0
- pywal/colorschemes/dark/sexy-gslob-nature-suede.json +1 -0
- pywal/colorschemes/dark/sexy-hund.json +1 -0
- pywal/colorschemes/dark/sexy-hybrid.json +1 -0
- pywal/colorschemes/dark/sexy-insignificato.json +1 -0
- pywal/colorschemes/dark/sexy-invisibone.json +1 -0
- pywal/colorschemes/dark/sexy-jasonwryan.json +1 -0
- pywal/colorschemes/dark/sexy-kasugano.json +1 -0
- pywal/colorschemes/dark/sexy-material.json +1 -0
- pywal/colorschemes/dark/sexy-mikado.json +1 -0
- pywal/colorschemes/dark/sexy-mikazuki.json +1 -0
- pywal/colorschemes/dark/sexy-monokai.json +1 -0
- pywal/colorschemes/dark/sexy-muse.json +1 -0
- pywal/colorschemes/dark/sexy-nancy.json +1 -0
- pywal/colorschemes/dark/sexy-navy-and-ivory.json +1 -0
- pywal/colorschemes/dark/sexy-neon.json +1 -0
- pywal/colorschemes/dark/sexy-numixdarkest.json +1 -0
- pywal/colorschemes/dark/sexy-orangish.json +1 -0
- pywal/colorschemes/dark/sexy-parker_brothers.json +1 -0
- pywal/colorschemes/dark/sexy-phrak1.json +1 -0
- pywal/colorschemes/dark/sexy-pretty-and-pastel.json +1 -0
- pywal/colorschemes/dark/sexy-rasi.json +1 -0
- pywal/colorschemes/dark/sexy-rezza.json +1 -0
- pywal/colorschemes/dark/sexy-rydgel.json +1 -0
- pywal/colorschemes/dark/sexy-s3r0-modified.json +1 -0
- pywal/colorschemes/dark/sexy-sexcolors.json +1 -0
- pywal/colorschemes/dark/sexy-simple_rainbow.json +1 -0
- pywal/colorschemes/dark/sexy-splurge.json +1 -0
- pywal/colorschemes/dark/sexy-swayr.json +1 -0
- pywal/colorschemes/dark/sexy-sweetlove.json +1 -0
- pywal/colorschemes/dark/sexy-tango.json +1 -0
- pywal/colorschemes/dark/sexy-tangoesque.json +1 -0
- pywal/colorschemes/dark/sexy-tartan.json +1 -0
- pywal/colorschemes/dark/sexy-theme2.json +1 -0
- pywal/colorschemes/dark/sexy-thwump.json +1 -0
- pywal/colorschemes/dark/sexy-tlh.json +1 -0
- pywal/colorschemes/dark/sexy-trim-yer-beard.json +1 -0
- pywal/colorschemes/dark/sexy-user-77-mashup-colors.json +1 -0
- pywal/colorschemes/dark/sexy-vacuous2.json +1 -0
- pywal/colorschemes/dark/sexy-visibone-alt-2.json +1 -0
- pywal/colorschemes/dark/sexy-visibone.json +1 -0
- pywal/colorschemes/dark/sexy-x-dotshare.json +1 -0
- pywal/colorschemes/dark/sexy-zenburn.json +1 -0
- pywal/colorschemes/dark/solarized.json +1 -0
- pywal/colorschemes/dark/tempus_autumn.json +1 -0
- pywal/colorschemes/dark/tempus_dusk.json +1 -0
- pywal/colorschemes/dark/tempus_future.json +1 -0
- pywal/colorschemes/dark/tempus_rift.json +1 -0
- pywal/colorschemes/dark/tempus_spring.json +1 -0
- pywal/colorschemes/dark/tempus_summer.json +1 -0
- pywal/colorschemes/dark/tempus_warp.json +1 -0
- pywal/colorschemes/dark/tempus_winter.json +1 -0
- pywal/colorschemes/dark/tokyonight-moon.json +25 -0
- pywal/colorschemes/dark/tokyonight-night.json +25 -0
- pywal/colorschemes/dark/tokyonight-storm.json +25 -0
- pywal/colorschemes/dark/vscode.json +1 -0
- pywal/colorschemes/dark/zenburn.json +1 -0
- pywal/colorschemes/light/3024.json +1 -0
- pywal/colorschemes/light/ashes.json +1 -0
- pywal/colorschemes/light/base16-atelier-cave.json +1 -0
- pywal/colorschemes/light/base16-atelier-dune.json +1 -0
- pywal/colorschemes/light/base16-atelier-estuary.json +1 -0
- pywal/colorschemes/light/base16-atelier-forest.json +1 -0
- pywal/colorschemes/light/base16-atelier-heath.json +1 -0
- pywal/colorschemes/light/base16-atelier-lakeside.json +1 -0
- pywal/colorschemes/light/base16-atelier-plateau.json +1 -0
- pywal/colorschemes/light/base16-atelier-savanna.json +1 -0
- pywal/colorschemes/light/base16-atelier-seaside.json +1 -0
- pywal/colorschemes/light/base16-atelier-sulphurpool.json +1 -0
- pywal/colorschemes/light/base16-classic.json +1 -0
- pywal/colorschemes/light/base16-cupcake.json +1 -0
- pywal/colorschemes/light/base16-cupertino.json +1 -0
- pywal/colorschemes/light/base16-default.json +1 -0
- pywal/colorschemes/light/base16-github.json +1 -0
- pywal/colorschemes/light/base16-google.json +1 -0
- pywal/colorschemes/light/base16-grayscale.json +1 -0
- pywal/colorschemes/light/base16-gruvbox-hard.json +1 -0
- pywal/colorschemes/light/base16-gruvbox-medium.json +1 -0
- pywal/colorschemes/light/base16-gruvbox-soft.json +1 -0
- pywal/colorschemes/light/base16-harmonic.json +1 -0
- pywal/colorschemes/light/base16-materialer.json +1 -0
- pywal/colorschemes/light/base16-mexico.json +1 -0
- pywal/colorschemes/light/base16-one.json +1 -0
- pywal/colorschemes/light/base16-shapeshifter.json +1 -0
- pywal/colorschemes/light/base16-solarized.json +1 -0
- pywal/colorschemes/light/base16-summerfruit.json +1 -0
- pywal/colorschemes/light/base16-tomorrow.json +1 -0
- pywal/colorschemes/light/base16-unikitty.json +1 -0
- pywal/colorschemes/light/catppuccin-latte.json +25 -0
- pywal/colorschemes/light/github.json +1 -0
- pywal/colorschemes/light/rose-pine-dawn.json +25 -0
- pywal/colorschemes/light/sexy-mostly-bright.json +1 -0
- pywal/colorschemes/light/solarized.json +1 -0
- pywal/colorschemes/light/tempus_dawn.json +1 -0
- pywal/colorschemes/light/tempus_fugit.json +1 -0
- pywal/colorschemes/light/tempus_past.json +1 -0
- pywal/colorschemes/light/tempus_totus.json +1 -0
- pywal/colorschemes/light/tokyonight-day.json +25 -0
- pywal/donation.py +18 -0
- pywal/eastereggs.py +139 -0
- pywal/export.py +365 -0
- pywal/image.py +116 -0
- pywal/reload.py +138 -0
- pywal/sequences.py +108 -0
- pywal/settings.py +28 -0
- pywal/templates/Colors.hs +37 -0
- pywal/templates/colors +16 -0
- pywal/templates/colors--nodim-alacritty.yml +53 -0
- pywal/templates/colors-alacritty.toml +62 -0
- pywal/templates/colors-alacritty.yml +63 -0
- pywal/templates/colors-foot.ini +20 -0
- pywal/templates/colors-fuzzel.ini +11 -0
- pywal/templates/colors-hyprland.conf +21 -0
- pywal/templates/colors-kitty.conf +30 -0
- pywal/templates/colors-konsole.colorscheme +63 -0
- pywal/templates/colors-leftwm-theme.ron +9 -0
- pywal/templates/colors-mako +3 -0
- pywal/templates/colors-nqq.css +31 -0
- pywal/templates/colors-oomox +17 -0
- pywal/templates/colors-polybar +8 -0
- pywal/templates/colors-putty.reg +26 -0
- pywal/templates/colors-retroarch.cfg +8 -0
- pywal/templates/colors-rgb +16 -0
- pywal/templates/colors-rio.toml +32 -0
- pywal/templates/colors-rofi-dark.rasi +166 -0
- pywal/templates/colors-rofi-light.rasi +166 -0
- pywal/templates/colors-speedcrunch.json +15 -0
- pywal/templates/colors-sway +21 -0
- pywal/templates/colors-themer.js +20 -0
- pywal/templates/colors-tilix.json +35 -0
- pywal/templates/colors-tofi +4 -0
- pywal/templates/colors-tty.sh +19 -0
- pywal/templates/colors-vscode.json +14 -0
- pywal/templates/colors-wal-dmenu.h +6 -0
- pywal/templates/colors-wal-dwl.h +13 -0
- pywal/templates/colors-wal-dwm-urg.h +18 -0
- pywal/templates/colors-wal-dwm.h +13 -0
- pywal/templates/colors-wal-st.h +34 -0
- pywal/templates/colors-wal-tabbed.h +6 -0
- pywal/templates/colors-wal.vim +23 -0
- pywal/templates/colors-waybar.css +20 -0
- pywal/templates/colors-zathura +34 -0
- pywal/templates/colors-zed.json +105 -0
- pywal/templates/colors.Xresources +68 -0
- pywal/templates/colors.css +28 -0
- pywal/templates/colors.fish +39 -0
- pywal/templates/colors.json +29 -0
- pywal/templates/colors.properties +20 -0
- pywal/templates/colors.scss +26 -0
- pywal/templates/colors.sh +36 -0
- pywal/templates/colors.styl +24 -0
- pywal/templates/colors.yml +24 -0
- pywal/templates/ghostty.conf +24 -0
- pywal/theme.py +194 -0
- pywal/util.py +445 -0
- pywal/wallpaper.py +399 -0
- pywal-3.8.13.data/data/man/man1/wal.1 +254 -0
- pywal-3.8.13.dist-info/METADATA +76 -0
- pywal-3.8.13.dist-info/RECORD +348 -0
- pywal-3.8.13.dist-info/WHEEL +5 -0
- pywal-3.8.13.dist-info/entry_points.txt +2 -0
- pywal-3.8.13.dist-info/licenses/LICENSE.md +9 -0
- pywal-3.8.13.dist-info/top_level.txt +1 -0
pywal/__init__.py
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"""
|
|
2
|
+
'||
|
|
3
|
+
... ... .... ... ... ... ... .... ||
|
|
4
|
+
||' || '|. | || || | '' .|| ||
|
|
5
|
+
|| | '|.| ||| ||| .|' || ||
|
|
6
|
+
||...' '| | | '|..'|' .||.
|
|
7
|
+
|| .. |
|
|
8
|
+
'''' ''
|
|
9
|
+
Created by Dylan Araps.
|
|
10
|
+
"""
|
|
11
|
+
|
|
12
|
+
from .settings import __version__, __cache_version__
|
|
13
|
+
from . import colors
|
|
14
|
+
from . import export
|
|
15
|
+
from . import image
|
|
16
|
+
from . import reload
|
|
17
|
+
from . import sequences
|
|
18
|
+
from . import theme
|
|
19
|
+
from . import wallpaper
|
|
20
|
+
|
|
21
|
+
__all__ = [
|
|
22
|
+
"__version__",
|
|
23
|
+
"__cache_version__",
|
|
24
|
+
"colors",
|
|
25
|
+
"export",
|
|
26
|
+
"image",
|
|
27
|
+
"reload",
|
|
28
|
+
"sequences",
|
|
29
|
+
"theme",
|
|
30
|
+
"wallpaper",
|
|
31
|
+
]
|
pywal/__main__.py
ADDED
|
@@ -0,0 +1,402 @@
|
|
|
1
|
+
"""
|
|
2
|
+
'||
|
|
3
|
+
... ... .... ... ... ... ... .... ||
|
|
4
|
+
||' || '|. | || || | '' .|| ||
|
|
5
|
+
|| | '|.| ||| ||| .|' || ||
|
|
6
|
+
||...' '| | | '|..'|' .||.
|
|
7
|
+
|| .. |
|
|
8
|
+
'''' ''
|
|
9
|
+
Created by Dylan Araps.
|
|
10
|
+
"""
|
|
11
|
+
|
|
12
|
+
import argparse
|
|
13
|
+
import logging
|
|
14
|
+
import os
|
|
15
|
+
import shutil
|
|
16
|
+
import sys
|
|
17
|
+
import textwrap
|
|
18
|
+
|
|
19
|
+
from .settings import __version__, CACHE_DIR, CONF_DIR
|
|
20
|
+
from . import colors
|
|
21
|
+
from . import export
|
|
22
|
+
from . import image
|
|
23
|
+
from . import reload
|
|
24
|
+
from . import sequences
|
|
25
|
+
from . import theme
|
|
26
|
+
from . import util
|
|
27
|
+
from . import wallpaper
|
|
28
|
+
from . import donation
|
|
29
|
+
from . import eastereggs
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
show_colorama_warning = False
|
|
33
|
+
if sys.platform.startswith("win"):
|
|
34
|
+
try:
|
|
35
|
+
import colorama
|
|
36
|
+
colorama.just_fix_windows_console()
|
|
37
|
+
except ImportError:
|
|
38
|
+
no_colorama_terms = [
|
|
39
|
+
"wezterm",
|
|
40
|
+
"alacritty",
|
|
41
|
+
"hyper",
|
|
42
|
+
"putty",
|
|
43
|
+
"ghostty",
|
|
44
|
+
"mintty",
|
|
45
|
+
]
|
|
46
|
+
if os.environ.get("TERMINAL") not in no_colorama_terms and \
|
|
47
|
+
os.environ.get("TERM_PROGRAM") not in no_colorama_terms:
|
|
48
|
+
show_colorama_warning = True
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
def get_args():
|
|
52
|
+
"""Get the script arguments."""
|
|
53
|
+
description = "wal - Generate colorschemes on the fly"
|
|
54
|
+
config_notes = '''
|
|
55
|
+
configuration:
|
|
56
|
+
pywal16 supports the usage of the following env vars for configuration
|
|
57
|
+
|
|
58
|
+
env vars:
|
|
59
|
+
XDG_CONFIG_HOME parent directory to the user wal/templates dir.
|
|
60
|
+
PYWAL_CACHE_DIR directory for the built templates, default XDG_CACHE_HOME/wal dir.
|
|
61
|
+
NO_FUN set to 1 to disable eastereggs.
|
|
62
|
+
EASTEREGGS set to 0 to disable eastereggs, set to 1 to enable them.
|
|
63
|
+
'''
|
|
64
|
+
arg = argparse.ArgumentParser(
|
|
65
|
+
description=description,
|
|
66
|
+
formatter_class=argparse.RawDescriptionHelpFormatter,
|
|
67
|
+
epilog=textwrap.dedent(config_notes)
|
|
68
|
+
)
|
|
69
|
+
|
|
70
|
+
arg.add_argument(
|
|
71
|
+
"-a",
|
|
72
|
+
metavar='"alpha"',
|
|
73
|
+
help="Set terminal background transparency. \
|
|
74
|
+
Must be a number between 0 and 100. \
|
|
75
|
+
*Only works in terminals that implement OSC-11 (URxvt)*",
|
|
76
|
+
)
|
|
77
|
+
|
|
78
|
+
arg.add_argument(
|
|
79
|
+
"-b", metavar="background", help="Custom background color to use."
|
|
80
|
+
)
|
|
81
|
+
|
|
82
|
+
arg.add_argument(
|
|
83
|
+
"--fg", metavar="foreground", help="Custom foreground color to use."
|
|
84
|
+
)
|
|
85
|
+
|
|
86
|
+
arg.add_argument(
|
|
87
|
+
"--backend",
|
|
88
|
+
metavar="backend",
|
|
89
|
+
help="Which color backend to use. \
|
|
90
|
+
Use 'wal --backend' to list backends.",
|
|
91
|
+
const="list_backends",
|
|
92
|
+
type=str,
|
|
93
|
+
nargs="?",
|
|
94
|
+
)
|
|
95
|
+
|
|
96
|
+
arg.add_argument(
|
|
97
|
+
"--out-dir",
|
|
98
|
+
metavar="out_dir",
|
|
99
|
+
help="Cache dir to export themes. \
|
|
100
|
+
Default is 'XDG_CACHE_HOME/wal'. \
|
|
101
|
+
This can also be set with the env var: 'PYWAL_CACHE_DIR'",
|
|
102
|
+
type=str,
|
|
103
|
+
nargs="?",
|
|
104
|
+
)
|
|
105
|
+
|
|
106
|
+
arg.add_argument(
|
|
107
|
+
"--theme",
|
|
108
|
+
"-f",
|
|
109
|
+
metavar="/path/to/file or theme_name",
|
|
110
|
+
help="Which colorscheme file to use. \
|
|
111
|
+
Use 'wal --theme' to list builtin and user themes.",
|
|
112
|
+
const="list_themes",
|
|
113
|
+
nargs="?",
|
|
114
|
+
)
|
|
115
|
+
|
|
116
|
+
arg.add_argument(
|
|
117
|
+
"--iterative",
|
|
118
|
+
action="store_true",
|
|
119
|
+
help="When pywal is given a directory as input and this "
|
|
120
|
+
"flag is used: Go through the images in order "
|
|
121
|
+
"instead of shuffled.",
|
|
122
|
+
)
|
|
123
|
+
|
|
124
|
+
arg.add_argument(
|
|
125
|
+
"--cols16",
|
|
126
|
+
metavar="method",
|
|
127
|
+
required=False,
|
|
128
|
+
nargs="?",
|
|
129
|
+
default=False,
|
|
130
|
+
const="darken",
|
|
131
|
+
choices=["darken", "lighten", "dual"],
|
|
132
|
+
help="Use 16 color output "
|
|
133
|
+
'"darken", "lighten" or "dual" '
|
|
134
|
+
"default: darken",
|
|
135
|
+
)
|
|
136
|
+
|
|
137
|
+
arg.add_argument(
|
|
138
|
+
"--recursive",
|
|
139
|
+
action="store_true",
|
|
140
|
+
help="When pywal is given a directory as input and this "
|
|
141
|
+
"flag is used: Search for images recursively in "
|
|
142
|
+
"subdirectories instead of the root only.",
|
|
143
|
+
)
|
|
144
|
+
|
|
145
|
+
arg.add_argument(
|
|
146
|
+
"--saturate", metavar="-1.0 - 1.0", help="Set the color saturation."
|
|
147
|
+
)
|
|
148
|
+
|
|
149
|
+
arg.add_argument(
|
|
150
|
+
"--preview",
|
|
151
|
+
action="store_true",
|
|
152
|
+
help="Print the current color palette.",
|
|
153
|
+
)
|
|
154
|
+
|
|
155
|
+
arg.add_argument(
|
|
156
|
+
"--vte",
|
|
157
|
+
action="store_true",
|
|
158
|
+
help="Fix text-artifacts printed in VTE terminals.",
|
|
159
|
+
)
|
|
160
|
+
|
|
161
|
+
arg.add_argument(
|
|
162
|
+
"-c", action="store_true", help="Delete all cached colorschemes."
|
|
163
|
+
)
|
|
164
|
+
|
|
165
|
+
arg.add_argument(
|
|
166
|
+
"-i",
|
|
167
|
+
metavar='"/path/to/img.jpg"',
|
|
168
|
+
help="Which image or directory to use.",
|
|
169
|
+
)
|
|
170
|
+
|
|
171
|
+
arg.add_argument(
|
|
172
|
+
"-l", action="store_true", help="Generate a light colorscheme."
|
|
173
|
+
)
|
|
174
|
+
|
|
175
|
+
arg.add_argument(
|
|
176
|
+
"-n", action="store_true", help="Skip setting the wallpaper."
|
|
177
|
+
)
|
|
178
|
+
|
|
179
|
+
arg.add_argument(
|
|
180
|
+
"-o",
|
|
181
|
+
metavar='"script_name"',
|
|
182
|
+
action="append",
|
|
183
|
+
help='External script to run after "wal".',
|
|
184
|
+
)
|
|
185
|
+
|
|
186
|
+
arg.add_argument(
|
|
187
|
+
"-p",
|
|
188
|
+
metavar='"theme_name"',
|
|
189
|
+
help="permanently save theme to "
|
|
190
|
+
"$XDG_CONFIG_HOME/wal/colorschemes with "
|
|
191
|
+
"the specified name",
|
|
192
|
+
)
|
|
193
|
+
|
|
194
|
+
arg.add_argument(
|
|
195
|
+
"-q", action="store_true", help="Quiet mode, don't print anything."
|
|
196
|
+
)
|
|
197
|
+
|
|
198
|
+
arg.add_argument(
|
|
199
|
+
"-r",
|
|
200
|
+
action="store_true",
|
|
201
|
+
help="'wal -r' is deprecated: Use \
|
|
202
|
+
(cat ~/.cache/wal/sequences &) instead.",
|
|
203
|
+
)
|
|
204
|
+
|
|
205
|
+
arg.add_argument(
|
|
206
|
+
"-R", action="store_true", help="Restore previous colorscheme."
|
|
207
|
+
)
|
|
208
|
+
|
|
209
|
+
arg.add_argument(
|
|
210
|
+
"-s", action="store_true", help="Skip changing colors in terminals."
|
|
211
|
+
)
|
|
212
|
+
|
|
213
|
+
arg.add_argument(
|
|
214
|
+
"-t", action="store_true", help="Skip changing colors in tty."
|
|
215
|
+
)
|
|
216
|
+
|
|
217
|
+
arg.add_argument("-v", action="store_true", help='Print "wal" version.')
|
|
218
|
+
|
|
219
|
+
arg.add_argument(
|
|
220
|
+
"-w",
|
|
221
|
+
action="store_true",
|
|
222
|
+
help="Use last used wallpaper for color generation.",
|
|
223
|
+
)
|
|
224
|
+
|
|
225
|
+
arg.add_argument(
|
|
226
|
+
"-e",
|
|
227
|
+
action="store_true",
|
|
228
|
+
help="Skip reloading gtk/xrdb/i3/sway/polybar",
|
|
229
|
+
)
|
|
230
|
+
|
|
231
|
+
arg.add_argument(
|
|
232
|
+
"--contrast",
|
|
233
|
+
metavar="1.0-21.0",
|
|
234
|
+
required=False,
|
|
235
|
+
type=float,
|
|
236
|
+
nargs="?",
|
|
237
|
+
help="Specify a minimum contrast ratio between palette "
|
|
238
|
+
"colors and the source image according to W3 "
|
|
239
|
+
"contrast specifications. Values between 1.5-4.5 "
|
|
240
|
+
"typically work best.",
|
|
241
|
+
)
|
|
242
|
+
|
|
243
|
+
return arg
|
|
244
|
+
|
|
245
|
+
|
|
246
|
+
def parse_args_exit(parser):
|
|
247
|
+
"""Process args that exit."""
|
|
248
|
+
args = parser.parse_args()
|
|
249
|
+
|
|
250
|
+
if len(sys.argv) <= 1:
|
|
251
|
+
parser.print_help()
|
|
252
|
+
sys.exit(1)
|
|
253
|
+
|
|
254
|
+
if args.v:
|
|
255
|
+
parser.exit(0, "wal %s\n" % __version__)
|
|
256
|
+
|
|
257
|
+
if args.preview:
|
|
258
|
+
print("Current colorscheme:", sep="")
|
|
259
|
+
colors.palette()
|
|
260
|
+
sys.exit(0)
|
|
261
|
+
|
|
262
|
+
if args.r:
|
|
263
|
+
reload.colors()
|
|
264
|
+
sys.exit(0)
|
|
265
|
+
|
|
266
|
+
if args.c:
|
|
267
|
+
scheme_dir = os.path.join(CACHE_DIR, "schemes")
|
|
268
|
+
shutil.rmtree(scheme_dir, ignore_errors=True)
|
|
269
|
+
sys.exit(0)
|
|
270
|
+
|
|
271
|
+
if (
|
|
272
|
+
not args.i
|
|
273
|
+
and not args.theme
|
|
274
|
+
and not args.R
|
|
275
|
+
and not args.w
|
|
276
|
+
and not args.backend
|
|
277
|
+
):
|
|
278
|
+
parser.error(
|
|
279
|
+
"No input specified.\n" "--backend, --theme, -i or -R are required."
|
|
280
|
+
)
|
|
281
|
+
|
|
282
|
+
if args.theme == "list_themes":
|
|
283
|
+
theme.list_out()
|
|
284
|
+
sys.exit(0)
|
|
285
|
+
|
|
286
|
+
if args.backend == "list_backends":
|
|
287
|
+
print(
|
|
288
|
+
"\n - ".join(
|
|
289
|
+
["\033[1;32mBackends\033[0m:", *colors.list_backends()]
|
|
290
|
+
)
|
|
291
|
+
)
|
|
292
|
+
sys.exit(0)
|
|
293
|
+
|
|
294
|
+
|
|
295
|
+
def parse_args(parser):
|
|
296
|
+
"""Process args."""
|
|
297
|
+
args = parser.parse_args()
|
|
298
|
+
|
|
299
|
+
if args.q:
|
|
300
|
+
logging.getLogger().disabled = True
|
|
301
|
+
sys.stdout = sys.stderr = open(os.devnull, "w")
|
|
302
|
+
|
|
303
|
+
if args.a:
|
|
304
|
+
util.alpha_integrify(args.a)
|
|
305
|
+
util.Color.passed_alpha_num = args.a
|
|
306
|
+
util.Color.alpha_num = args.a or util.Color.alpha_num
|
|
307
|
+
|
|
308
|
+
if args.i and not args.theme:
|
|
309
|
+
image_file = image.get(
|
|
310
|
+
args.i, iterative=args.iterative, recursive=args.recursive
|
|
311
|
+
)
|
|
312
|
+
colors_plain = colors.get(
|
|
313
|
+
image_file,
|
|
314
|
+
args.l,
|
|
315
|
+
args.backend,
|
|
316
|
+
sat=args.saturate,
|
|
317
|
+
c16=args.cols16,
|
|
318
|
+
cst=args.contrast,
|
|
319
|
+
)
|
|
320
|
+
|
|
321
|
+
if args.theme:
|
|
322
|
+
colors_plain = theme.file(args.theme, args.l, c16=args.cols16)
|
|
323
|
+
if args.i:
|
|
324
|
+
colors_plain["wallpaper"] = args.i
|
|
325
|
+
|
|
326
|
+
if args.R:
|
|
327
|
+
colors_plain = theme.file(os.path.join(CACHE_DIR, "colors.json"))
|
|
328
|
+
|
|
329
|
+
if args.w:
|
|
330
|
+
cached_wallpaper = util.read_file(os.path.join(CACHE_DIR, "wal"))
|
|
331
|
+
colors_plain = colors.get(
|
|
332
|
+
cached_wallpaper[0],
|
|
333
|
+
args.l,
|
|
334
|
+
args.backend,
|
|
335
|
+
sat=args.saturate,
|
|
336
|
+
c16=args.cols16,
|
|
337
|
+
cst=args.contrast,
|
|
338
|
+
)
|
|
339
|
+
|
|
340
|
+
if args.b:
|
|
341
|
+
args.b = "#%s" % (args.b.strip("#"))
|
|
342
|
+
colors_plain["special"]["background"] = args.b
|
|
343
|
+
colors_plain["colors"]["color0"] = args.b
|
|
344
|
+
|
|
345
|
+
if args.fg:
|
|
346
|
+
args.fg = "#%s" % (args.fg.strip("#"))
|
|
347
|
+
colors_plain["special"]["foreground"] = args.fg
|
|
348
|
+
colors_plain["colors"]["color15"] = args.fg
|
|
349
|
+
|
|
350
|
+
if not args.n:
|
|
351
|
+
wallpaper.change(colors_plain["wallpaper"])
|
|
352
|
+
|
|
353
|
+
if args.p:
|
|
354
|
+
theme.save(colors_plain, args.p, args.l)
|
|
355
|
+
|
|
356
|
+
sequences.send(colors_plain, to_send=not args.s, vte_fix=args.vte)
|
|
357
|
+
|
|
358
|
+
if sys.stdout.isatty():
|
|
359
|
+
colors.palette()
|
|
360
|
+
|
|
361
|
+
if args.out_dir:
|
|
362
|
+
export.every(colors_plain, CACHE_DIR)
|
|
363
|
+
else:
|
|
364
|
+
export.every(colors_plain)
|
|
365
|
+
|
|
366
|
+
if not args.e:
|
|
367
|
+
reload.env(tty_reload=not args.t)
|
|
368
|
+
|
|
369
|
+
if args.o:
|
|
370
|
+
for cmd in args.o:
|
|
371
|
+
util.disown([cmd])
|
|
372
|
+
|
|
373
|
+
|
|
374
|
+
def main():
|
|
375
|
+
"""Main script function."""
|
|
376
|
+
global CACHE_DIR
|
|
377
|
+
default_cache_dir = CACHE_DIR
|
|
378
|
+
util.create_dir(os.path.join(CONF_DIR, "templates"))
|
|
379
|
+
util.create_dir(os.path.join(CONF_DIR, "colorschemes/light/"))
|
|
380
|
+
util.create_dir(os.path.join(CONF_DIR, "colorschemes/dark/"))
|
|
381
|
+
|
|
382
|
+
util.setup_logging()
|
|
383
|
+
|
|
384
|
+
if show_colorama_warning:
|
|
385
|
+
logging.warning("colorama is not present")
|
|
386
|
+
|
|
387
|
+
parser = get_args()
|
|
388
|
+
|
|
389
|
+
args = parser.parse_args()
|
|
390
|
+
if args.out_dir:
|
|
391
|
+
CACHE_DIR = args.out_dir
|
|
392
|
+
else:
|
|
393
|
+
CACHE_DIR = default_cache_dir
|
|
394
|
+
|
|
395
|
+
parse_args_exit(parser)
|
|
396
|
+
parse_args(parser)
|
|
397
|
+
donation.donation_message()
|
|
398
|
+
eastereggs.eemsg()
|
|
399
|
+
|
|
400
|
+
|
|
401
|
+
if __name__ == "__main__":
|
|
402
|
+
main()
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Generate a colorscheme using ColorThief.
|
|
3
|
+
"""
|
|
4
|
+
|
|
5
|
+
import logging
|
|
6
|
+
import sys
|
|
7
|
+
|
|
8
|
+
try:
|
|
9
|
+
from colorthief import ColorThief
|
|
10
|
+
|
|
11
|
+
except ImportError:
|
|
12
|
+
logging.error("ColorThief wasn't found on your system.")
|
|
13
|
+
logging.error("Try another backend. (wal --backend)")
|
|
14
|
+
sys.exit(1)
|
|
15
|
+
|
|
16
|
+
from .. import colors
|
|
17
|
+
from .. import util
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
def gen_colors(img):
|
|
21
|
+
"""Loop until 16 colors are generated."""
|
|
22
|
+
color_cmd = ColorThief(img).get_palette
|
|
23
|
+
|
|
24
|
+
for i in range(0, 10, 1):
|
|
25
|
+
raw_colors = color_cmd(color_count=8 + i)
|
|
26
|
+
|
|
27
|
+
if len(raw_colors) >= 8:
|
|
28
|
+
break
|
|
29
|
+
|
|
30
|
+
if i == 10:
|
|
31
|
+
logging.error("ColorThief couldn't generate a suitable palette.")
|
|
32
|
+
sys.exit(1)
|
|
33
|
+
|
|
34
|
+
else:
|
|
35
|
+
logging.warning("ColorThief couldn't generate a palette.")
|
|
36
|
+
logging.warning("Trying a larger palette size %s", 8 + i)
|
|
37
|
+
|
|
38
|
+
return [util.rgb_to_hex(color) for color in raw_colors]
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
def adjust(cols, light, **kwargs):
|
|
42
|
+
"""Create palette.
|
|
43
|
+
:keyword-args:
|
|
44
|
+
- c16: use 16 colors through specified method - [ "lighten" | "darken" ]
|
|
45
|
+
"""
|
|
46
|
+
if "c16" in kwargs:
|
|
47
|
+
cols16 = kwargs["c16"]
|
|
48
|
+
else:
|
|
49
|
+
cols16 = False
|
|
50
|
+
cols.sort(key=util.rgb_to_yiq)
|
|
51
|
+
raw_colors = [*cols, *cols]
|
|
52
|
+
for color in raw_colors:
|
|
53
|
+
color = util.lighten_color(color, 0.40)
|
|
54
|
+
raw_colors[0] = util.darken_color(cols[0], 0.80)
|
|
55
|
+
|
|
56
|
+
return colors.generic_adjust(raw_colors, light, c16=cols16)
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
def get(img, light=False, **kwargs):
|
|
60
|
+
"""Get colorscheme.
|
|
61
|
+
:keyword-args:
|
|
62
|
+
- c16: use 16 colors through specified method - [ "lighten" | "darken" ]
|
|
63
|
+
"""
|
|
64
|
+
if "c16" in kwargs:
|
|
65
|
+
cols16 = kwargs["c16"]
|
|
66
|
+
else:
|
|
67
|
+
cols16 = False
|
|
68
|
+
cols = gen_colors(img)
|
|
69
|
+
return adjust(cols, light, c16=cols16)
|
pywal/backends/colorz.py
ADDED
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Generate a colorscheme using Colorz.
|
|
3
|
+
"""
|
|
4
|
+
|
|
5
|
+
import logging
|
|
6
|
+
import sys
|
|
7
|
+
|
|
8
|
+
try:
|
|
9
|
+
import colorz
|
|
10
|
+
|
|
11
|
+
except ImportError:
|
|
12
|
+
logging.error("colorz wasn't found on your system.")
|
|
13
|
+
logging.error("Try another backend. (wal --backend)")
|
|
14
|
+
sys.exit(1)
|
|
15
|
+
|
|
16
|
+
from .. import colors
|
|
17
|
+
from .. import util
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
def gen_colors(img):
|
|
21
|
+
"""Generate a colorscheme using Colorz."""
|
|
22
|
+
# pylint: disable=not-callable
|
|
23
|
+
raw_colors = colorz.colorz(img, n=6, bold_add=0)
|
|
24
|
+
return [util.rgb_to_hex([*color[0]]) for color in raw_colors]
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
def adjust(cols, light, **kwargs):
|
|
28
|
+
"""Create palette.
|
|
29
|
+
:keyword-args:
|
|
30
|
+
- c16: use 16 colors through specified method - [ "lighten" | "darken" ]
|
|
31
|
+
"""
|
|
32
|
+
if "c16" in kwargs:
|
|
33
|
+
cols16 = kwargs["c16"]
|
|
34
|
+
else:
|
|
35
|
+
cols16 = False
|
|
36
|
+
raw_colors = [cols[0], *cols, "#FFFFFF", "#000000", *cols, "#FFFFFF"]
|
|
37
|
+
raw_colors[0] = util.darken_color(cols[0], 0.80)
|
|
38
|
+
|
|
39
|
+
return colors.generic_adjust(raw_colors, light, c16=cols16)
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
def get(img, light=False, **kwargs):
|
|
43
|
+
"""Get colorscheme.
|
|
44
|
+
:keyword-args:
|
|
45
|
+
- c16: use 16 colors through specified method - [ "lighten" | "darken" ]
|
|
46
|
+
"""
|
|
47
|
+
if "c16" in kwargs:
|
|
48
|
+
cols16 = kwargs["c16"]
|
|
49
|
+
else:
|
|
50
|
+
cols16 = False
|
|
51
|
+
cols = gen_colors(img)
|
|
52
|
+
|
|
53
|
+
if len(cols) < 6:
|
|
54
|
+
logging.error("colorz failed to generate enough colors.")
|
|
55
|
+
logging.error("Try another backend or another image. (wal --backend)")
|
|
56
|
+
sys.exit(1)
|
|
57
|
+
|
|
58
|
+
return adjust(cols, light, c16=cols16)
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Generate a colorscheme using fast_colorthief.
|
|
3
|
+
"""
|
|
4
|
+
|
|
5
|
+
import logging
|
|
6
|
+
import sys
|
|
7
|
+
|
|
8
|
+
try:
|
|
9
|
+
import fast_colorthief
|
|
10
|
+
|
|
11
|
+
except ImportError:
|
|
12
|
+
logging.error("fast_colorthief wasn't found on your system.")
|
|
13
|
+
logging.error("Try another backend. (wal --backend)")
|
|
14
|
+
sys.exit(1)
|
|
15
|
+
|
|
16
|
+
from .. import util
|
|
17
|
+
from .. import colors
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
def gen_colors(img):
|
|
21
|
+
"""Ask backend to generate 16 colors."""
|
|
22
|
+
raw_colors = fast_colorthief.get_palette(img, 16)
|
|
23
|
+
|
|
24
|
+
return [util.rgb_to_hex(color) for color in raw_colors]
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
def adjust(cols, light, **kwargs):
|
|
28
|
+
"""Create palette.
|
|
29
|
+
:keyword-args:
|
|
30
|
+
- c16: use 16 colors through specified method - [ "lighten" | "darken" ]
|
|
31
|
+
"""
|
|
32
|
+
if "c16" in kwargs:
|
|
33
|
+
cols16 = kwargs["c16"]
|
|
34
|
+
else:
|
|
35
|
+
cols16 = False
|
|
36
|
+
cols.sort(key=util.rgb_to_yiq)
|
|
37
|
+
raw_colors = [*cols, *cols]
|
|
38
|
+
raw_colors[0] = util.darken_color(cols[0], 0.80)
|
|
39
|
+
|
|
40
|
+
return colors.generic_adjust(raw_colors, light, c16=cols16)
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
def get(img, light=False, **kwargs):
|
|
44
|
+
"""Get colorscheme.
|
|
45
|
+
:keyword-args:
|
|
46
|
+
- c16: use 16 colors through specified method - [ "lighten" | "darken" ]
|
|
47
|
+
"""
|
|
48
|
+
if "c16" in kwargs:
|
|
49
|
+
cols16 = kwargs["c16"]
|
|
50
|
+
else:
|
|
51
|
+
cols16 = False
|
|
52
|
+
cols = gen_colors(img)
|
|
53
|
+
return adjust(cols, light, c16=cols16)
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Generate a colorscheme using Haishoku.
|
|
3
|
+
"""
|
|
4
|
+
|
|
5
|
+
import logging
|
|
6
|
+
import sys
|
|
7
|
+
|
|
8
|
+
try:
|
|
9
|
+
from haishoku.haishoku import Haishoku
|
|
10
|
+
|
|
11
|
+
except ImportError:
|
|
12
|
+
logging.error("Haishoku wasn't found on your system.")
|
|
13
|
+
logging.error("Try another backend. (wal --backend)")
|
|
14
|
+
sys.exit(1)
|
|
15
|
+
|
|
16
|
+
from .. import colors
|
|
17
|
+
from .. import util
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
def gen_colors(img):
|
|
21
|
+
"""Generate a colorscheme using Colorz."""
|
|
22
|
+
palette = Haishoku.getPalette(img)
|
|
23
|
+
return [util.rgb_to_hex(col[1]) for col in palette]
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
def adjust(cols, light, **kwargs):
|
|
27
|
+
"""Create palette.
|
|
28
|
+
:keyword-args:
|
|
29
|
+
- c16: use 16 colors through specified method - [ "lighten" | "darken" ]
|
|
30
|
+
"""
|
|
31
|
+
if "c16" in kwargs:
|
|
32
|
+
cols16 = kwargs["c16"]
|
|
33
|
+
else:
|
|
34
|
+
cols16 = False
|
|
35
|
+
cols.sort(key=util.rgb_to_yiq)
|
|
36
|
+
raw_colors = [*cols, *cols]
|
|
37
|
+
raw_colors[0] = util.lighten_color(cols[0], 0.40)
|
|
38
|
+
raw_colors[0] = util.darken_color(cols[0], 0.80)
|
|
39
|
+
|
|
40
|
+
return colors.generic_adjust(raw_colors, light, c16=cols16)
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
def get(img, light=False, **kwargs):
|
|
44
|
+
"""Get colorscheme.
|
|
45
|
+
:keyword-args:
|
|
46
|
+
- c16: use 16 colors through specified method - [ "lighten" | "darken" ]
|
|
47
|
+
"""
|
|
48
|
+
if "c16" in kwargs:
|
|
49
|
+
cols16 = kwargs["c16"]
|
|
50
|
+
else:
|
|
51
|
+
cols16 = False
|
|
52
|
+
cols = gen_colors(img)
|
|
53
|
+
return adjust(cols, light, c16=cols16)
|