44 lines
		
	
	
		
			884 B
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
		
		
			
		
	
	
			44 lines
		
	
	
		
			884 B
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
|  | #!/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 |