#!/bin/bash # Sample ~/.cache sizes into a cache file, for widgets/cache.lua. # # du walks the tree and costs about 100ms warm, which is fine every 15 minutes # and unthinkable on a 2-second draw. The old conky config used the same # interval for the same reason. set -u CACHE_DIR="${XDG_CACHE_HOME:-$HOME/.cache}/udt" CACHE="$CACHE_DIR/cachesize.txt" TARGET="${XDG_CACHE_HOME:-$HOME/.cache}" mkdir -p "$CACHE_DIR" TMP="$CACHE.tmp.$$" trap 'rm -f "$TMP"' EXIT umask 077 # Total first, then the four largest children. `sort -h` compares human sizes # numerically; the Lua side converts them again because it needs the ratio to # the total, not just the order. { du -sh "$TARGET" 2>/dev/null du -sh "$TARGET"/* 2>/dev/null | sort -hr | head -4 } > "$TMP" if [ ! -s "$TMP" ]; then echo "cache-sample: du produced nothing" >&2 exit 1 fi mv -f "$TMP" "$CACHE"