The bare $HOME repo is gone. This is now the rice: install.sh, rice-* scripts in bin/, configs in home/ linked into $HOME, theme templates, st and the particle wallpaper. Clone to ~/rice and run install.sh.
53 lines
1.7 KiB
Bash
Executable file
53 lines
1.7 KiB
Bash
Executable file
#!/usr/bin/env bash
|
|
# rice-screensaver - classic xscreensaver hacks, full screen.
|
|
#
|
|
# rice-screensaver start [hack] random hack from the list (rice-idle runs this)
|
|
# rice-screensaver stop
|
|
# rice-screensaver now [hack] start by hand; press q or Escape in it to stop
|
|
# rice-screensaver list hacks available on this machine
|
|
#
|
|
# Pick your own set by listing hack names, one per line, in
|
|
# ~/.config/rice/screensavers.
|
|
set -uo pipefail
|
|
|
|
hackdir=/usr/lib/xscreensaver
|
|
run="${XDG_RUNTIME_DIR:-/tmp}/rice"
|
|
pidfile="$run/screensaver.pid"
|
|
mkdir -p "$run"
|
|
|
|
defaults="glmatrix flurry pipes fireworkx galaxy atlantis lament gears starfish xmatrix boxfit"
|
|
user_list="${XDG_CONFIG_HOME:-$HOME/.config}/rice/screensavers"
|
|
|
|
available() {
|
|
local names h
|
|
if [[ -f $user_list ]]; then names=$(grep -v '^\s*#' "$user_list"); else names=$defaults; fi
|
|
for h in $names; do [[ -x $hackdir/$h ]] && echo "$h"; done
|
|
}
|
|
|
|
stop() {
|
|
[[ -f $pidfile ]] && kill "$(cat "$pidfile")" 2>/dev/null
|
|
rm -f "$pidfile"
|
|
}
|
|
|
|
start() {
|
|
local hack="${1:-}" pid wid
|
|
stop
|
|
if [[ -z $hack ]]; then hack=$(available | shuf -n1); fi
|
|
[[ -n $hack && -x $hackdir/$hack ]] || { echo "rice-screensaver: no hack available (install xscreensaver)" >&2; exit 1; }
|
|
[[ $hack =~ ^[a-z0-9_-]+$ ]] || exit 2
|
|
|
|
"$hackdir/$hack" >/dev/null 2>&1 &
|
|
pid=$!
|
|
echo "$pid" > "$pidfile"
|
|
# Hacks open an ordinary window; hand it to bspwm as a fullscreen node.
|
|
wid=$(xdotool search --sync --onlyvisible --pid "$pid" 2>/dev/null | head -n1)
|
|
[[ -n $wid ]] && bspc node "$wid" -t fullscreen -f 2>/dev/null
|
|
}
|
|
|
|
case "${1:-}" in
|
|
start) start "${2:-}" ;;
|
|
now) start "${2:-}" ;;
|
|
stop) stop ;;
|
|
list) available ;;
|
|
*) sed -n '2,11p' "$0" | sed 's/^# \{0,1\}//'; exit 2 ;;
|
|
esac
|