Cleanup for stow ---STOW
[dotfiles/.git] / .local / lib / python3.9 / site-packages / pywal / reload.py
diff --git a/.local/lib/python3.9/site-packages/pywal/reload.py b/.local/lib/python3.9/site-packages/pywal/reload.py
new file mode 100644 (file)
index 0000000..6ea5c43
--- /dev/null
@@ -0,0 +1,88 @@
+"""
+Reload programs.
+"""
+import logging
+import os
+import shutil
+import subprocess
+
+from .settings import CACHE_DIR, MODULE_DIR, OS
+from . import util
+
+
+def tty(tty_reload):
+    """Load colors in tty."""
+    tty_script = os.path.join(CACHE_DIR, "colors-tty.sh")
+    term = os.environ.get("TERM")
+
+    if tty_reload and term == "linux":
+        subprocess.Popen(["sh", tty_script])
+
+
+def xrdb(xrdb_files=None):
+    """Merge the colors into the X db so new terminals use them."""
+    xrdb_files = xrdb_files or \
+        [os.path.join(CACHE_DIR, "colors.Xresources")]
+
+    if shutil.which("xrdb") and OS != "Darwin":
+        for file in xrdb_files:
+            subprocess.run(["xrdb", "-merge", "-quiet", file])
+
+
+def gtk():
+    """Reload GTK theme on the fly."""
+    # Here we call a Python 2 script to reload the GTK themes.
+    # This is done because the Python 3 GTK/Gdk libraries don't
+    # provide a way of doing this.
+    if shutil.which("python2"):
+        gtk_reload = os.path.join(MODULE_DIR, "scripts", "gtk_reload.py")
+        util.disown(["python2", gtk_reload])
+
+    else:
+        logging.warning("GTK2 reload support requires Python 2.")
+
+
+def i3():
+    """Reload i3 colors."""
+    if shutil.which("i3-msg") and util.get_pid("i3"):
+        util.disown(["i3-msg", "reload"])
+
+
+def kitty():
+    """ Reload kitty colors. """
+    if shutil.which("kitty") and util.get_pid("kitty"):
+        util.disown(["kitty", "@", "set-colors", "--all"])
+
+
+def polybar():
+    """Reload polybar colors."""
+    if shutil.which("polybar") and util.get_pid("polybar"):
+        util.disown(["pkill", "-USR1", "polybar"])
+
+
+def sway():
+    """Reload sway colors."""
+    if shutil.which("swaymsg") and util.get_pid("sway"):
+        util.disown(["swaymsg", "reload"])
+
+
+def colors(cache_dir=CACHE_DIR):
+    """Reload colors. (Deprecated)"""
+    sequences = os.path.join(cache_dir, "sequences")
+
+    logging.error("'wal -r' is deprecated: "
+                  "Use 'cat %s' instead.", sequences)
+
+    if os.path.isfile(sequences):
+        print("".join(util.read_file(sequences)), end="")
+
+
+def env(xrdb_file=None, tty_reload=True):
+    """Reload environment."""
+    xrdb(xrdb_file)
+    i3()
+    kitty()
+    sway()
+    polybar()
+    logging.info("Reloaded environment.")
+    tty(tty_reload)