aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xpywal/__main__.py12
-rw-r--r--pywal/exp_colors.py56
-rw-r--r--pywal/export.py71
-rw-r--r--pywal/format_color.py78
-rw-r--r--pywal/globals.py15
-rw-r--r--pywal/set_colors.py57
6 files changed, 154 insertions, 135 deletions
diff --git a/pywal/__main__.py b/pywal/__main__.py
index fe6d2cb..23561b2 100755
--- a/pywal/__main__.py
+++ b/pywal/__main__.py
@@ -8,7 +8,7 @@ import shutil
import sys
from pywal import globals as g
-from pywal import export
+from pywal import exp_colors
from pywal import gen_colors
from pywal import set_colors
from pywal import wallpaper
@@ -80,15 +80,17 @@ def process_args(args):
# -i
if args.i:
image = gen_colors.get_image(args.i)
- g.ColorType.plain = gen_colors.get_colors(image)
- g.ColorType.plain[8] = set_colors.set_grey(g.ColorType.plain)
+
+ # Create a list of hex colors.
+ colors_plain = gen_colors.get_colors(image)
+ colors_plain[8] = set_colors.set_grey(colors_plain)
if not args.n:
wallpaper.set_wallpaper(image)
# Set the colors.
- set_colors.send_sequences(g.ColorType.plain, args.t)
- export.export_colors(g.ColorType.plain)
+ set_colors.send_sequences(colors_plain, args.t)
+ exp_colors.export_colors(colors_plain)
# -o
if args.o:
diff --git a/pywal/exp_colors.py b/pywal/exp_colors.py
new file mode 100644
index 0000000..faf5e93
--- /dev/null
+++ b/pywal/exp_colors.py
@@ -0,0 +1,56 @@
+"""
+Export colors in various formats.
+"""
+import shutil
+import subprocess
+
+from pywal import globals as g
+from pywal import util
+from pywal import format_color
+
+
+def save_colors(colors, export_file, message):
+ """Export colors to var format."""
+ colors = "".join(colors)
+ util.save_file(colors, g.CACHE_DIR / export_file)
+ print(f"export: exported {message}.")
+
+
+def reload_xrdb(export_file):
+ """Merge the colors into the X db so new terminals use them."""
+ if shutil.which("xrdb"):
+ subprocess.call(["xrdb", "-merge", g.CACHE_DIR / export_file])
+
+
+def reload_i3():
+ """Reload i3 colors."""
+ if shutil.which("i3-msg"):
+ util.disown("i3-msg", "reload")
+
+
+def export_colors(colors):
+ """Export colors in various formats."""
+ plain_colors = format_color.plain(colors)
+ save_colors(plain_colors, "colors", "plain hex colors")
+
+ # Shell based colors.
+ shell_colors = format_color.shell(colors)
+ save_colors(shell_colors, "colors.sh", "shell variables")
+
+ # Web based colors.
+ css_colors = format_color.css(colors)
+ save_colors(css_colors, "colors.css", "css variables")
+ scss_colors = format_color.scss(colors)
+ save_colors(scss_colors, "colors.scss", "scss variables")
+
+ # Text editor based colors.
+ putty_colors = format_color.putty(colors)
+ save_colors(putty_colors, "colors-putty.reg", "putty theme")
+
+ # X based colors.
+ xrdb_colors = format_color.xrdb(colors)
+ save_colors(xrdb_colors, "xcolors", "xrdb colors")
+
+ # i3 colors.
+ reload_xrdb("xcolors")
+ reload_i3()
diff --git a/pywal/export.py b/pywal/export.py
deleted file mode 100644
index fc2df93..0000000
--- a/pywal/export.py
+++ /dev/null
@@ -1,71 +0,0 @@
-"""
-Export colors in various formats.
-"""
-import shutil
-import subprocess
-
-from pywal import globals as g
-from pywal import util
-
-
-def save_colors(colors, export_file, message):
- """Export colors to var format."""
- colors = "\n".join(colors)
- util.save_file(f"{colors}\n", g.CACHE_DIR / export_file)
- print(f"export: exported {message}.")
-
-
-def reload_xrdb(export_file):
- """Merge the colors into the X db so new terminals use them."""
- if shutil.which("xrdb"):
- subprocess.call(["xrdb", "-merge", g.CACHE_DIR / export_file])
-
-
-def reload_i3():
- """Reload i3 colors."""
- if shutil.which("i3-msg"):
- util.disown("i3-msg", "reload")
-
-
-def export_rofi(colors):
- """Append rofi colors to the x_colors list."""
- g.ColorType.xrdb.append(f"rofi.color-window: {colors[0]}, "
- f"{colors[0]}, {colors[10]}")
- g.ColorType.xrdb.append(f"rofi.color-normal: {colors[0]}, "
- f"{colors[15]}, {colors[0]}, "
- f"{colors[10]}, {colors[0]}")
- g.ColorType.xrdb.append(f"rofi.color-active: {colors[0]}, "
- f"{colors[15]}, {colors[0]}, "
- f"{colors[10]}, {colors[0]}")
- g.ColorType.xrdb.append(f"rofi.color-urgent: {colors[0]}, "
- f"{colors[9]}, {colors[0]}, "
- f"{colors[9]}, {colors[15]}")
-
-
-def export_emacs(colors):
- """Set emacs colors."""
- g.ColorType.xrdb.append(f"emacs*background: {colors[0]}")
- g.ColorType.xrdb.append(f"emacs*foreground: {colors[15]}")
-
-
-def export_colors(colors):
- """Export colors in various formats."""
- save_colors(g.ColorType.plain, "colors", "plain hex colors")
- save_colors(g.ColorType.shell, "colors.sh", "shell variables")
-
- # Web based colors.
- g.ColorType.css.append("}")
- save_colors(g.ColorType.css, "colors.css", "css variables")
- save_colors(g.ColorType.scss, "colors.scss", "scss variables")
-
- # Text editor based colors.
- save_colors(g.ColorType.putty, "colors-putty.reg", "putty theme")
-
- # X based colors.
- export_rofi(colors)
- export_emacs(colors)
- save_colors(g.ColorType.xrdb, "xcolors", "xrdb colors")
-
- # i3 colors.
- reload_xrdb("xcolors")
- reload_i3()
diff --git a/pywal/format_color.py b/pywal/format_color.py
new file mode 100644
index 0000000..8ab462a
--- /dev/null
+++ b/pywal/format_color.py
@@ -0,0 +1,78 @@
+"""
+Convert colors to various formats.
+"""
+from pywal import util
+
+
+def plain(colors):
+ """Convert colors to plain hex."""
+ return [f"{color}\n" for color in colors]
+
+
+def shell(colors):
+ """Convert colors to shell variables."""
+ return [f"color{index}='{color}'\n"
+ for index, color in enumerate(colors)]
+
+
+def css(colors):
+ """Convert colors to css variables."""
+ css_colors = [":root {\n"]
+ css_colors.extend([f"\t--color{index}: {color};\n"
+ for index, color in enumerate(colors)])
+ css_colors.append("}\n")
+ return css_colors
+
+
+def scss(colors):
+ """Convert colors to scss variables."""
+ return [f"$color{index}: {color};\n"
+ for index, color in enumerate(colors)]
+
+
+def putty(colors):
+ """Convert colors to putty theme."""
+ rgb = util.hex_to_rgb
+ putty_colors = [
+ "Windows Registry Editor Version 5.00\n\n",
+ "[HKEY_CURRENT_USER\\Software\\SimonTatham\\PuTTY\\Sessions\\Wal]\n",
+ ]
+ putty_colors.extend([f"\"colour{index}\"=\"{rgb(color)}\"\n"
+ for index, color in enumerate(colors)])
+
+ return putty_colors
+
+
+def xrdb(colors):
+ """Convert colors to xrdb format."""
+ x_colors = []
+ x_colors.append(f"URxvt*foreground: {colors[15]}\n")
+ x_colors.append(f"XTerm*foreground: {colors[15]}\n")
+ x_colors.append(f"URxvt*background: {colors[0]}\n")
+ x_colors.append(f"XTerm*background: {colors[0]}\n")
+ x_colors.append(f"URxvt*cursorColor: {colors[15]}\n")
+ x_colors.append(f"XTerm*cursorColor: {colors[15]}\n")
+
+ # Colors 0-15
+ x_colors.extend([f"*.color{index}: {color}\n*color{index}: {color}\n"
+ for index, color in enumerate(colors)])
+
+ x_colors.append(f"*.color66: {colors[0]}\n*color66: {colors[0]}\n")
+
+ # Rofi colors.
+ x_colors.append(f"rofi.color-window: {colors[0]}, "
+ f"{colors[0]}, {colors[10]}\n")
+ x_colors.append(f"rofi.color-normal: {colors[0]}, "
+ f"{colors[15]}, {colors[0]}, "
+ f"{colors[10]}, {colors[0]}\n")
+ x_colors.append(f"rofi.color-active: {colors[0]}, "
+ f"{colors[15]}, {colors[0]}, "
+ f"{colors[10]}, {colors[0]}\n")
+ x_colors.append(f"rofi.color-urgent: {colors[0]}, "
+ f"{colors[9]}, {colors[0]}, "
+ f"{colors[9]}, {colors[15]}\n")
+
+ # Emacs colors.
+ x_colors.append(f"emacs*background: {colors[0]}\n")
+ x_colors.append(f"emacs*foreground: {colors[15]}\n")
+ return x_colors
diff --git a/pywal/globals.py b/pywal/globals.py
index cb676f2..6a45fa8 100644
--- a/pywal/globals.py
+++ b/pywal/globals.py
@@ -13,21 +13,6 @@ CACHE_DIR = pathlib.Path.home() / ".cache/wal/"
# pylint: disable=too-few-public-methods
-class ColorType(object):
- """Store colors in various formats."""
- plain = []
- xrdb = []
- sequences = []
- shell = []
- scss = []
- css = [":root {"]
- putty = [
- "Windows Registry Editor Version 5.00",
- "[HKEY_CURRENT_USER\\Software\\SimonTatham\\PuTTY\\Sessions\\Wal]",
- ]
-
-
-# pylint: disable=too-few-public-methods
class Args(object):
"""Store args."""
notify = True
diff --git a/pywal/set_colors.py b/pywal/set_colors.py
index 715cdb4..b8094bf 100644
--- a/pywal/set_colors.py
+++ b/pywal/set_colors.py
@@ -11,37 +11,12 @@ from pywal import util
def set_special(index, color):
"""Build the escape sequence for special colors."""
- g.ColorType.sequences.append(f"\\033]{index};{color}\\007")
-
- if index == 10:
- g.ColorType.xrdb.append(f"URxvt*foreground: {color}")
- g.ColorType.xrdb.append(f"XTerm*foreground: {color}")
-
- elif index == 11:
- g.ColorType.xrdb.append(f"URxvt*background: {color}")
- g.ColorType.xrdb.append(f"XTerm*background: {color}")
-
- elif index == 12:
- g.ColorType.xrdb.append(f"URxvt*cursorColor: {color}")
- g.ColorType.xrdb.append(f"XTerm*cursorColor: {color}")
-
- elif index == 66:
- g.ColorType.xrdb.append(f"*.color{index}: {color}")
- g.ColorType.xrdb.append(f"*color{index}: {color}")
- g.ColorType.sequences.append(f"\\033]4;{index};{color}\\007")
+ return f"\033]{index};{color}\007"
def set_color(index, color):
"""Build the escape sequence we need for each color."""
- g.ColorType.xrdb.append(f"*.color{index}: {color}")
- g.ColorType.xrdb.append(f"*color{index}: {color}")
- g.ColorType.sequences.append(f"\\033]4;{index};{color}\\007")
- g.ColorType.shell.append(f"color{index}='{color}'")
- g.ColorType.css.append(f"\t--color{index}: {color};")
- g.ColorType.scss.append(f"$color{index}: {color};")
-
- rgb = util.hex_to_rgb(color)
- g.ColorType.putty.append(f"\"Colour{index}\"=\"{rgb}\"")
+ return f"\033]4;{index};{color}\007"
def set_grey(colors):
@@ -62,25 +37,19 @@ def set_grey(colors):
def send_sequences(colors, vte):
"""Send colors to all open terminals."""
- set_special(10, colors[15])
- set_special(11, colors[0])
- set_special(12, colors[15])
- set_special(13, colors[15])
- set_special(14, colors[0])
-
- # This escape sequence doesn"t work in VTE terminals.
- if not vte:
- set_special(708, colors[0])
-
- # Create the sequences.
- # pylint: disable=W0106
- [set_color(num, color) for num, color in enumerate(colors)]
+ sequences = [set_color(num, color) for num, color in enumerate(colors)]
+ sequences.append(set_special(10, colors[15]))
+ sequences.append(set_special(11, colors[0]))
+ sequences.append(set_special(12, colors[15]))
+ sequences.append(set_special(13, colors[15]))
+ sequences.append(set_special(14, colors[0]))
# Set a blank color that isn"t affected by bold highlighting.
- set_special(66, colors[0])
+ sequences.append(set_special(66, colors[0]))
- # Make the terminal interpret escape sequences.
- sequences = util.fix_escape("".join(g.ColorType.sequences))
+ # This escape sequence doesn"t work in VTE terminals.
+ if not vte:
+ sequences.append(set_special(708, colors[0]))
# Get a list of terminals.
terminals = [f"/dev/pts/{term}" for term in os.listdir("/dev/pts/")
@@ -89,7 +58,7 @@ def send_sequences(colors, vte):
# Send the sequences to all open terminals.
# pylint: disable=W0106
- [util.save_file(sequences, term) for term in terminals]
+ [util.save_file("".join(sequences), term) for term in terminals]
print("colors: Set terminal colors")