diff options
Diffstat (limited to 'src/caelestia/utils/wallpaper.py')
| -rw-r--r-- | src/caelestia/utils/wallpaper.py | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/src/caelestia/utils/wallpaper.py b/src/caelestia/utils/wallpaper.py index 9f75091..ff0d209 100644 --- a/src/caelestia/utils/wallpaper.py +++ b/src/caelestia/utils/wallpaper.py @@ -1,5 +1,7 @@ import json +import os import random +import subprocess from argparse import Namespace from pathlib import Path @@ -11,6 +13,7 @@ from caelestia.utils.hypr import message from caelestia.utils.material import get_colours_for_image from caelestia.utils.paths import ( compute_hash, + user_config_path, wallpaper_link_path, wallpaper_path_path, wallpaper_thumbnail_path, @@ -158,6 +161,19 @@ def set_wallpaper(wall: Path | str, no_smart: bool) -> None: scheme.update_colours() apply_colours(scheme.colours, scheme.mode) + # Run custom post-hook if configured + try: + cfg = json.loads(user_config_path.read_text()).get("wallpaper", {}) + if post_hook := cfg.get("postHook"): + subprocess.run( + post_hook, + shell=True, + env={**os.environ, "WALLPAPER_PATH": str(wall)}, + stderr=subprocess.DEVNULL, + ) + except (FileNotFoundError, json.JSONDecodeError): + pass + def set_random(args: Namespace) -> None: wallpapers = get_wallpapers(args) |