dotfiles/homedir/.config/bspwm/bin/bspstate

44 lines
884 B
Bash
Executable File

#!/usr/bin/bash
ensure_dir() {
declare d
for d in "$@"; do
if ! [[ -d "$d" ]]; then
if ! mkdir -p "$d"; then
return $?
fi
fi
done
return 0
}
# Set XDG_RUNTIME_DIR
if ! [[ "$XDG_RUNTIME_DIR" ]]; then
XDG_RUNTIME_DIR="/run/user/$UID"
fi
# Define some workdirs
bspwm_rundir="$XDG_RUNTIME_DIR/bspwm"
bspwm_statedir="$bspwm_rundir/state"
# Ensure the workdirs exist
ensure_dir "$bspwm_rundir" "$bspwm_statedir" || exit $?
case "$1" in
(save)
# Save state
bspc query -T > "$bspwm_statedir/tree"
bspc query -H > "$bspwm_statedir/hist"
bspc query -S > "$bspwm_statedir/stack"
;;
(restore)
# Restore state, if any
[[ -f "$bspwm_statedir/tree" ]] && bspc restore -T "$bspwm_statedir/tree"
[[ -f "$bspwm_statedir/hist" ]] && bspc restore -H "$bspwm_statedir/hist"
[[ -f "$bspwm_statedir/stack" ]] && bspc restore -S "$bspwm_statedir/stack"
;;
esac