# Pywal integration with wallpaper-spmenu This wiki article goes through Pywal integration with [wallpaper-spmenu](https://git.speedie.site/speedie/wallpaper-spmenu), a tool used to set wallpapers on X or Wayland using spmenu (hence why it's on this wiki). It also assumes that all your software is set up to use Pywal. It will not be covered here. Before you can do this, you must run `wallpaper-spmenu` once, to create the wallpaperrc configuration file. This file is located in `~/.config/wallpaper-spmenu/wallpaperrc` by default. If the file exists you can continue. What we want to do is append some extra lines to the `set_wallpaper.sh` script. This script is the script that sets the wallpaper, and is usually autostarted by your window manager, if you've set it up to be autostarted. ## Creating a post_write_script() hook function Open the config file up in your favorite text editor. You need to add a `post_write_script()` function to this file. This function as the name implies executes whenever the `set_wallpaper.sh` has been changed. A simple example function might look like this: ```Shell post_write_script() { cat << EOF >> "$WALLPAPER_CONFIG_DIR/set_wallpaper.sh" wal -nqi "$1" } ``` This function simply adds `wal -nqi "$1"` to it. `$1` refers to the first argument, which is going to be the path to the wallpaper that was set. I would probably add some other things to this script, such as deleting the Pywal cache before `wal -nqi "$1"`. If you want to replicate the behaviour of the old `speedwm-swal` script, you might want your function to look like this: ```Shell post_write_script() { cat << EOF >> "$WALLPAPER_CONFIG_DIR/set_wallpaper.sh" rm -rf "$HOME/.cache/wal" xrdb -remove wal -nqi "$1" xrdb ~/.cache/wal/colors.Xresources command -v libspeedwm > /dev/null && \ pidof speedwm > /dev/null && \ libspeedwm --perform core_wm_reload $WALLPAPER_CONFIG_DIR/postrun.sh EOF command -v speedwm > /dev/null && \ pidof speedwm > /dev/null && \ speedwm -s "Loading" } ``` It should be noted that some of this is speedwm specific, and as such should be deleted if you're using a different window manager/compositor. ## startpage integration If you're using [startpage](https://git.speedie.site/speedie/startpage), and wish to copy the wallpaper, you'll need to copy the script for your chosen web browser to `~/.config/wallpaper-spmenu` and rename it to `postrun.sh`. Then add `$WALLPAPER_CONFIG_DIR/postrun.sh` to your `post_write_script()` function before the `EOF`. **NOTE: The script assumes that the startpage index is located at ~/.config/startpage/index.html. If it isn't, you MUST change the PREFIX variable in the script.** Do note that older versions of the startpage may set CWAL to `$HOME/.config/speedwm/swal/CurrentWallpaper`. If this is the case then you'll want to change it to `$HOME/.config/wallpaper-spmenu/currentwallpaper`. ## speedwm dynamic reloading integration To reload colors automatically, you should add `xrdb ~/.cache/wal/colors.Xresources` and `libspeedwm libspeedwm --perform core_wm_reload` to the file. The libspeedwm line simply signals to speedwm that it should attempt to reload .Xresources. The xrdb line loads the Pywal colors, and must therefore be added before the libspeedwm line.