summaryrefslogtreecommitdiff
path: root/pywal/export.py
diff options
context:
space:
mode:
Diffstat (limited to 'pywal/export.py')
-rw-r--r--pywal/export.py71
1 files changed, 71 insertions, 0 deletions
diff --git a/pywal/export.py b/pywal/export.py
new file mode 100644
index 0000000..dfb774c
--- /dev/null
+++ b/pywal/export.py
@@ -0,0 +1,71 @@
+"""
+Export colors in various formats.
+"""
+import shutil
+import subprocess
+
+from pywal import settings as s
+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", s.CACHE_DIR / export_file)
+ print(f"export: exported {message}.")
+
+
+def export_rofi(colors):
+ """Append rofi colors to the x_colors list."""
+ s.ColorType.xrdb.append(f"rofi.color-window: {colors[0]}, "
+ f"{colors[0]}, {colors[10]}")
+ s.ColorType.xrdb.append(f"rofi.color-normal: {colors[0]}, "
+ f"{colors[15]}, {colors[0]}, "
+ f"{colors[10]}, {colors[0]}")
+ s.ColorType.xrdb.append(f"rofi.color-active: {colors[0]}, "
+ f"{colors[15]}, {colors[0]}, "
+ f"{colors[10]}, {colors[0]}")
+ s.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."""
+ s.ColorType.xrdb.append(f"emacs*background: {colors[0]}")
+ s.ColorType.xrdb.append(f"emacs*foreground: {colors[15]}")
+
+
+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", s.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."""
+ save_colors(s.ColorType.plain, "colors", "plain hex colors")
+ save_colors(s.ColorType.shell, "colors.sh", "shell variables")
+
+ # Web based colors.
+ s.ColorType.css.append("}")
+ save_colors(s.ColorType.css, "colors.css", "css variables")
+ save_colors(s.ColorType.scss, "colors.scss", "scss variables")
+
+ # Text editor based colors.
+ save_colors(s.ColorType.putty, "colors-putty.reg", "putty theme")
+
+ # X based colors.
+ export_rofi(colors)
+ export_emacs(colors)
+ save_colors(s.ColorType.xrdb, "xcolors", "xrdb colors")
+
+ # i3 colors.
+ reload_xrdb("xcolors")
+ reload_i3()