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
 |