Files
sydnix/modules/home/users/crumb/waybar/dev.sh
Madeleine Sydney Ślaga 0ea963c879 chore: Fix tree-wide permissions
No idea why everything was executable, lol.
2025-09-08 06:08:20 -06:00

41 lines
1.1 KiB
Bash

#!/usr/bin/env nix-shell
#!nix-shell -i bash -p inotify-tools waybar mako swaynotificationcenter libnotify pavucontrol
# This script will watch waybar.nix and compile it to /tmp/waybar.json. Offers
# a much tighter feedback loop than that offered by the Nix module.
# Inotify will sometimes double-fire events. We avoid unnecessary recompilation
# by putting a cooldown on builds.
last_build=0
waybar_pid=""
update () {
last_build="$(date +%s)"
if [ ! -z "$waybar_pid" ]; then
kill "$waybar_pid"
echo >&2 "Killed waybar..."
waybar_pid=""
fi
echo >&2 "Building waybar.json..."
nix eval --impure --json --expr "import ./waybar.nix {}" \
> /tmp/waybar.json \
&& echo >&2 "Built waybar.json!"
waybar -c waybar.json -b sydbar -s waybar.css 2>&1 >/dev/null &
waybar_pid=$!
echo >&2 "Started Waybar [$waybar_pid]"
}
update
inotifywait -me modify waybar.nix waybar.css cycle_notifications.clj |
while read _ _ file_name; do
ct="$(date +%s)"
if (( ct - last_build < 1 )); then
echo >&2 "Ignoring event (on cooldown)"
else
update
fi
done