#!/usr/bin/env bash # rice-hook [args...] - run your own scripts when something happens. # # Every executable file in ~/.config/rice/hooks/.d/ runs, in name order, # with the event's arguments. Events: # post-boot the desktop has started # theme-set a theme was applied # font-set the font changed # wallpaper-set the wallpaper changed # lock / unlock the screen locked or unlocked # update install.sh --update finished set -uo pipefail event="${1:?usage: rice-hook [args...]}" shift [[ $event =~ ^[a-z-]+$ ]] || { echo "rice-hook: bad event name '$event'" >&2; exit 2; } dir="${XDG_CONFIG_HOME:-$HOME/.config}/rice/hooks/$event.d" log="${XDG_STATE_HOME:-$HOME/.local/state}/rice/hooks.log" [[ -d $dir ]] || exit 0 mkdir -p "$(dirname "$log")" for hook in "$dir"/*; do [[ -f $hook && -x $hook && $hook != *.sample ]] || continue if ! "$hook" "$@" >>"$log" 2>&1; then printf '%s %s failed (exit %s)\n' "$(date -Is)" "$hook" "$?" >>"$log" fi done