44 lines
884 B
Bash
Executable File
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
|