summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDylan Araps <dylan.araps@gmail.com>2017-06-20 23:14:27 +1000
committerDylan Araps <dylan.araps@gmail.com>2017-06-20 23:14:27 +1000
commit5b1848c68e270f98f1bcb9626f3a561e38f0b129 (patch)
tree2b830290ca493285aa35c596f4ca7ddde67587cc
parent9adecb1bc31c40e6173927342bf3209d164b0fa6 (diff)
Optimization: Removed loops from export
-rwxr-xr-xwal128
1 files changed, 50 insertions, 78 deletions
diff --git a/wal b/wal
index 392d2a3..eeaf84d 100755
--- a/wal
+++ b/wal
@@ -22,10 +22,17 @@ CACHE_DIR = pathlib.Path.home() / ".cache/wal/"
# pylint: disable=too-few-public-methods
-class ColorFormats(object):
+class ColorType(object):
"""Store colors in various formats."""
- x_colors = []
+ xrdb = []
sequences = []
+ shell = []
+ scss = []
+ css = [":root {\n"]
+ putty = [
+ "Windows Registry Editor Version 5.00\n",
+ "[HKEY_CURRENT_USER\\Software\\SimonTatham\\PuTTY\\Sessions\\Wal]\n",
+ ]
# ARGS {{{
@@ -226,26 +233,32 @@ def sort_colors(colors):
def set_special(index, color):
"""Build the escape sequence for special colors."""
- ColorFormats.sequences.append("\\033]%s;%s\\007" % (str(index), color))
+ ColorType.sequences.append("\\033]%s;%s\\007" % (str(index), color))
if index == 10:
- ColorFormats.x_colors.append("URxvt*foreground: %s\n" % (color))
- ColorFormats.x_colors.append("XTerm*foreground: %s\n" % (color))
+ ColorType.xrdb.append("URxvt*foreground: %s\n" % (color))
+ ColorType.xrdb.append("XTerm*foreground: %s\n" % (color))
elif index == 11:
- ColorFormats.x_colors.append("URxvt*background: %s\n" % (color))
- ColorFormats.x_colors.append("XTerm*background: %s\n" % (color))
+ ColorType.xrdb.append("URxvt*background: %s\n" % (color))
+ ColorType.xrdb.append("XTerm*background: %s\n" % (color))
elif index == 12:
- ColorFormats.x_colors.append("URxvt*cursorColor: %s\n" % (color))
- ColorFormats.x_colors.append("XTerm*cursorColor: %s\n" % (color))
+ ColorType.xrdb.append("URxvt*cursorColor: %s\n" % (color))
+ ColorType.xrdb.append("XTerm*cursorColor: %s\n" % (color))
def set_color(index, color):
"""Build the escape sequence we need for each color."""
- ColorFormats.x_colors.append("*.color%s: %s\n" % (str(index), color))
- ColorFormats.x_colors.append("*color%s: %s\n" % (str(index), color))
- ColorFormats.sequences.append("\\033]4;%s;%s\\007" % (str(index), color))
+ index = str(index)
+ ColorType.xrdb.append("*.color%s: %s\n" % (index, color))
+ ColorType.xrdb.append("*color%s: %s\n" % (index, color))
+ ColorType.sequences.append("\\033]4;%s;%s\\007" % (index, color))
+ ColorType.shell.append("color%s='%s'\n" % (index, color))
+ ColorType.css.append("\t--color%s: %s;\n" % (index, color))
+ ColorType.scss.append("$color%s: %s;\n" % (index, color))
+ ColorType.putty.append("\"Colour%s\"=\"%s\"\n"
+ % (index, hex_to_rgb(color)))
def set_grey(colors):
@@ -284,7 +297,7 @@ def send_sequences(colors, vte):
set_color(66, colors[0])
# Decode the string.
- sequences = "".join(ColorFormats.sequences)
+ sequences = "".join(ColorType.sequences)
sequences = bytes(sequences, "utf-8").decode("unicode_escape")
# Get a list of terminals.
@@ -394,12 +407,11 @@ def set_wallpaper(img):
# EXPORT COLORS {{{
-def export_generic(colors, col_format):
+def save_colors(colors, export_file, message):
"""Export colors to var format."""
- # Loop over the colors and format them.
- colors = [col_format % (num, color) for num, color in enumerate(colors)]
colors = "".join(colors)
- return colors
+ save_file(colors, export_file)
+ print("export: exported %s." % (message))
def export_plain(colors):
@@ -409,92 +421,52 @@ def export_plain(colors):
print("export: Exported plain colors")
-def export_shell(colors, export_file):
- """Export colors to shell format."""
- col_format = "color%s='%s'\n"
- colors = export_generic(colors, col_format)
- save_file(colors, export_file)
- print("export: Exported shell colors.")
-
-
def export_rofi(colors):
"""Append rofi colors to the x_colors list."""
- ColorFormats.x_colors.append("rofi.color-window: %s, %s, %s\n"
- % (colors[0], colors[0], colors[10]))
- ColorFormats.x_colors.append("rofi.color-normal: %s, %s, %s, %s, %s\n"
- % (colors[0], colors[15], colors[0],
- colors[10], colors[0]))
- ColorFormats.x_colors.append("rofi.color-active: %s, %s, %s, %s, %s\n"
- % (colors[0], colors[15], colors[0],
- colors[10], colors[0]))
- ColorFormats.x_colors.append("rofi.color-urgent: %s, %s, %s, %s, %s\n"
- % (colors[0], colors[9], colors[0],
- colors[9], colors[15]))
+ ColorType.xrdb.append("rofi.color-window: %s, %s, %s\n"
+ % (colors[0], colors[0], colors[10]))
+ ColorType.xrdb.append("rofi.color-normal: %s, %s, %s, %s, %s\n"
+ % (colors[0], colors[15], colors[0],
+ colors[10], colors[0]))
+ ColorType.xrdb.append("rofi.color-active: %s, %s, %s, %s, %s\n"
+ % (colors[0], colors[15], colors[0],
+ colors[10], colors[0]))
+ ColorType.xrdb.append("rofi.color-urgent: %s, %s, %s, %s, %s\n"
+ % (colors[0], colors[9], colors[0],
+ colors[9], colors[15]))
def export_emacs(colors):
"""Set emacs colors."""
- ColorFormats.x_colors.append("emacs*background: %s\n" % (colors[0]))
- ColorFormats.x_colors.append("emacs*foreground: %s\n" % (colors[15]))
+ ColorType.xrdb.append("emacs*background: %s\n" % (colors[0]))
+ ColorType.xrdb.append("emacs*foreground: %s\n" % (colors[15]))
def export_xrdb(colors, export_file):
"""Export colors to xrdb."""
- colors = "".join(colors)
- save_file(colors, export_file)
+ save_colors(colors, export_file, "xrdb colors")
# Merge the colors into the X db so new terminals use them.
subprocess.Popen(["xrdb", "-merge", export_file])
- print("export: Exported xrdb colors.")
-
-
-def export_css(colors, export_file):
- """Export colors as css variables."""
- col_format = "\t--color%s: %s;\n"
- colors = ":root {\n%s}\n" % str(export_generic(colors, col_format))
- save_file(colors, export_file)
- print("export: Exported css colors.")
-
-
-def export_scss(colors, export_file):
- """Export colors as scss variables."""
- col_format = "$color%s: %s;\n"
- colors = export_generic(colors, col_format)
- save_file(colors, export_file)
- print("export: Exported scss colors.")
-
-
-def export_putty(colors, export_file):
- """Export colors as putty theme."""
- col_format = "\"Colour%s\"=\"%s\"\n"
- rgb_colors = [hex_to_rgb(color.strip("#")) for color in colors]
-
- colors = (
- "Windows Registry Editor Version 5.00\n"
- "[HKEY_CURRENT_USER\\Software\\SimonTatham\\PuTTY\\Sessions\\Wal]\n"
- + export_generic(rgb_colors, col_format)
- )
-
- save_file(colors, export_file)
- print("export: Exported putty colors.")
def export_colors(colors):
"""Export colors in various formats."""
export_plain(colors)
- export_shell(colors, CACHE_DIR / "colors.sh")
+ save_colors(ColorType.shell, CACHE_DIR / "colors.sh", "shell variables")
# X based colors.
export_rofi(colors)
export_emacs(colors)
- export_xrdb(ColorFormats.x_colors, CACHE_DIR / "xcolors")
+ export_xrdb(ColorType.xrdb, CACHE_DIR / "xcolors")
# Web based colors.
- export_css(colors, CACHE_DIR / "colors.css")
- export_scss(colors, CACHE_DIR / "colors.scss")
+ ColorType.css.append("}\n")
+ save_colors(ColorType.css, CACHE_DIR / "colors.css", "css variables")
+ save_colors(ColorType.scss, CACHE_DIR / "colors.scss", "scss variables")
# Text editor based colors.
- export_putty(colors, CACHE_DIR / "colors-putty.reg")
+ save_colors(ColorType.putty, CACHE_DIR / "colors-putty.reg", "putty theme")
# }}}
@@ -542,7 +514,7 @@ def create_cache_dir():
def hex_to_rgb(color):
"""Convert a hex color to rgb."""
- red, green, blue = list(bytes.fromhex(color))
+ red, green, blue = list(bytes.fromhex(color.strip("#")))
return "%s,%s,%s" % (red, green, blue)