aboutsummaryrefslogtreecommitdiff
path: root/pywal/backends/schemer2.py
diff options
context:
space:
mode:
authorFuwn <[email protected]>2024-09-13 06:10:03 +0000
committerFuwn <[email protected]>2024-09-13 06:10:03 +0000
commitad2a6ccc44d58acad6ac33636361fc3e32870f53 (patch)
tree62f24a62c05b5744b9b0fdb5c28a632b22b41f70 /pywal/backends/schemer2.py
parentfeat: special and wallpaper fields (diff)
downloadpywal.nix-ad2a6ccc44d58acad6ac33636361fc3e32870f53.tar.xz
pywal.nix-ad2a6ccc44d58acad6ac33636361fc3e32870f53.zip
feat: add remaining backends (full support)
Diffstat (limited to 'pywal/backends/schemer2.py')
-rw-r--r--pywal/backends/schemer2.py54
1 files changed, 54 insertions, 0 deletions
diff --git a/pywal/backends/schemer2.py b/pywal/backends/schemer2.py
new file mode 100644
index 0000000..44e531f
--- /dev/null
+++ b/pywal/backends/schemer2.py
@@ -0,0 +1,54 @@
+# Permission is hereby granted, free of charge, to any person obtaining a
+# copy of this software and associated documentation files (the "Software"),
+# to deal in the Software without restriction, including without limitation
+# the rights to use, copy, modify, merge, publish, distribute, sublicense,
+# and/or sell copies of the Software, and to permit persons to whom the
+# Software is furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+# DEALINGS IN THE SOFTWARE.
+
+"""
+Generate a colorscheme using Schemer2.
+"""
+
+import logging
+import shutil
+import subprocess
+import sys
+
+from .. import colors
+from .. import util
+
+
+def gen_colors(img):
+ """Generate a colorscheme using Colorz."""
+ cmd = ["schemer2", "-format", "img::colors", "-minBright", "75", "-in"]
+ return subprocess.check_output([*cmd, img]).splitlines()
+
+
+def adjust(cols, light):
+ """Create palette."""
+ cols.sort(key=util.rgb_to_yiq)
+ raw_colors = [*cols[8:], *cols[8:]]
+
+ return colors.generic_adjust(raw_colors, light)
+
+
+def get(img, light=False):
+ """Get colorscheme."""
+ if not shutil.which("schemer2"):
+ logging.error("Schemer2 wasn't found on your system.")
+ logging.error("Try another backend. (wal --backend)")
+ sys.exit(1)
+
+ cols = [col.decode("UTF-8") for col in gen_colors(img)]
+ return adjust(cols, light)