summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--pywal/__main__.py7
-rw-r--r--pywal/wallpaper.py9
2 files changed, 14 insertions, 2 deletions
diff --git a/pywal/__main__.py b/pywal/__main__.py
index 460d77b..dbca515 100644
--- a/pywal/__main__.py
+++ b/pywal/__main__.py
@@ -65,6 +65,9 @@ def get_args(args):
arg.add_argument("-v", action="store_true",
help="Print \"wal\" version.")
+ arg.add_argument("-e", action="store_true",
+ help="Skip Reloading Environment gtk/xrdb/i3/polybar")
+
return arg.parse_args(args)
@@ -114,7 +117,9 @@ def process_args(args):
wallpaper.change(colors_plain["wallpaper"])
export.every(colors_plain)
- reload.env()
+
+ if not args.e:
+ reload.env()
if args.o:
util.disown([args.o])
diff --git a/pywal/wallpaper.py b/pywal/wallpaper.py
index 17c60a1..f1ce1dd 100644
--- a/pywal/wallpaper.py
+++ b/pywal/wallpaper.py
@@ -83,7 +83,14 @@ def set_desktop_wallpaper(desktop, img):
def set_mac_wallpaper(img):
"""Set the wallpaper on macOS."""
- subprocess.Popen(f"""osascript -e 'tell application "Finder" to set desktop picture to POSIX file "{img}"'""", shell=True)
+ db_file = HOME / "Library/Application Support/Dock/desktoppicture.db"
+ subprocess.call(["sqlite3", db_file, f"update data set value = '{img}'"])
+
+ # Kill the dock to fix issues with cached wallpapers.
+ # macOS caches wallpapers and if a wallpaper is set that shares
+ # the filename with a cached wallpaper, the cached wallpaper is
+ # used instead.
+ subprocess.call(["killall", "Dock"])
def change(img):