From ce7489f5e2acd8bf08c22873c31cdfd02742e80e Mon Sep 17 00:00:00 2001 From: speedie Date: Tue, 20 Jun 2023 00:03:23 +0200 Subject: [PATCH] Add article --- ...Pywal integration with wallpaper-spmenu.md | 95 +++++++++++++++++++ 1 file changed, 95 insertions(+) create mode 100644 pages/Pywal integration with wallpaper-spmenu.md diff --git a/pages/Pywal integration with wallpaper-spmenu.md b/pages/Pywal integration with wallpaper-spmenu.md new file mode 100644 index 0000000..287a29d --- /dev/null +++ b/pages/Pywal integration with wallpaper-spmenu.md @@ -0,0 +1,95 @@ +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: + +``` +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: + +``` +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. +