diff options
| -rwxr-xr-x | bin/slackware-sample.sh | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/bin/slackware-sample.sh b/bin/slackware-sample.sh new file mode 100755 index 0000000..3eb4818 --- /dev/null +++ b/bin/slackware-sample.sh @@ -0,0 +1,47 @@ +#!/bin/bash +# Sample Slackware facts into a cache file, for widgets/slackware.lua. +# +# Conky's Lua has no lfs, so it cannot stat a file for an mtime, and counting +# 2800 package files every two seconds would be a directory walk per draw. +# Both belong here. + +set -u + +CACHE_DIR="${XDG_CACHE_HOME:-$HOME/.cache}/udt" +CACHE="$CACHE_DIR/slackware.txt" + +umask 077 +mkdir -p "$CACHE_DIR" + +TMP="$CACHE.tmp.$$" +trap 'rm -f "$TMP"' EXIT + +VERSION=$(cat /etc/slackware-version 2>/dev/null || echo unknown) + +# The TRAILING SLASH is load-bearing. /var/log/packages is a symlink to +# /var/lib/pkgtools/packages, and `ls -1 /var/log/packages` lists the link +# itself: one entry. With the slash it lists the target's contents, which on +# this machine is some 2800 packages. Do not remove it as cosmetic. +PACKAGES=$(ls -1 /var/log/packages/ 2>/dev/null | wc -l) + +# Epochs, never formatted dates. The shell function this replaces rebuilds a +# date string from `ls -l` output with the year hardcoded, which breaks every +# January and on any file older than six months, when ls prints a year instead +# of a time and the field offsets shift. +CHANGELOG=$(stat -c %Y /var/lib/slackpkg/ChangeLog.txt 2>/dev/null || echo 0) + +# Filesystem birth time: the install date. Not every filesystem records it, +# and those that do not report 0, which the widget shows as '--'. +BIRTH=$(stat -c %W / 2>/dev/null || echo 0) + +KERNEL=$(uname -r) + +{ + echo "version $VERSION" + echo "packages $PACKAGES" + echo "changelog $CHANGELOG" + echo "birth $BIRTH" + echo "kernel $KERNEL" +} > "$TMP" + +mv -f "$TMP" "$CACHE" |
