From 8b984f277900a52dcea8097390fa079e00e3449c Mon Sep 17 00:00:00 2001
From: Salt <rehashedsalt@cock.li>
Date: Tue, 31 Jul 2018 13:14:36 -0500
Subject: [PATCH] bspwm: Change logging prefixes, add fallbacks for wallpaper
 setting

---
 .config/bspwm/bspwmrc | 47 ++++++++++++++++++++++++++++---------------
 1 file changed, 31 insertions(+), 16 deletions(-)

diff --git a/.config/bspwm/bspwmrc b/.config/bspwm/bspwmrc
index d9b81cb8..d0dbc3d3 100755
--- a/.config/bspwm/bspwmrc
+++ b/.config/bspwm/bspwmrc
@@ -26,29 +26,29 @@ unset PB_MONITOR
 
 ## Patch path, if not already done
 if [[ "$PATH" != "*$HOME/.local/bin*" ]]; then
-	printf "[..] Patching path for $HOME/.local/bin\n"
+	printf "[INFO] Patching path for $HOME/.local/bin\n"
 	export PATH="$HOME/.local/bin:$PATH"
 fi
 
 ## Load device-specific scripts
 if [[ -x ".config/bspwm/$(hostname).rc" ]]; then
-	printf "[..] Sourcing .config/bspwm/$(hostname).rc\n"
+	printf "[INFO] Sourcing .config/bspwm/$(hostname).rc\n"
 	source .config/bspwm/$(hostname).rc
 fi
 
 ## bspwm GENERAL CONFIGURATION
-printf "[..] Setting up monitors\n"
+printf "[INFO] Setting up monitors\n"
 monitors=$(bspc query -M | wc -l)
 desktops=8
 deskpermon=$(expr $desktops / $monitors)
 i=1
-printf "  [..] Putting $desktops desktops across $monitors monitors, $deskpermon each\n"
+printf "  [INFO] Putting $desktops desktops across $monitors monitors, $deskpermon each\n"
 for monitor in $(bspc query -M); do
 	until [[ "$(expr $i % \( $deskpermon + 1 \))" == "0" ]]; do
 		layout="$layout $i"
 		i=$(expr $i + 1)
 	done
-	printf "  [..] Giving monitor $monitor layout $layout\n"
+	printf "  [INFO] Giving monitor $monitor layout $layout\n"
 	bspc monitor $monitor -d $layout
 	layout="$i"
 	i=$(expr $i + 1) 
@@ -58,7 +58,7 @@ unset monitors
 unset desktops
 unset deskpermon
 
-printf "[..] Configuring bspwm\n"
+printf "[INFO] Configuring bspwm\n"
 bspc config border_width	4
 bspc config window_gap		6
 
@@ -80,7 +80,7 @@ bspc config active_border_color			"#a0a0a0"
 bspc config focused_border_color		"#83a598"
 bspc config presel_feedback_color		"#9b9b9b"
 
-printf "[..] Setting window rules\n"
+printf "[INFO] Setting window rules\n"
 ## bspwm WINDOW RULES
 bspc rule -r '*'
 bspc rule -a Waterfox desktop=1
@@ -91,7 +91,7 @@ bspc rule -a 'Minecraft 1.7.10' state=fullscreen
 bspc rule -a plasmashell state=floating sticky=on border=off
 bspc rule -a krunner state=floating layer=above sticky=on border=off
 
-printf "[..] Performing simple configuration\n"
+printf "[INFO] Performing simple configuration\n"
 ## SIMPLE CONFIGURATION
 xset -b
 xset -dpms
@@ -100,31 +100,46 @@ xset s off
 xrdbupdate
 
 ## SERVICES AND DAEMONS
-feh --randomize --bg-fill ~/Pictures/Wallpapers/.active &
-printf "[..] Killing existing daemons\n"
+printf "[INFO] Killing existing daemons\n"
 services="sxhkd polybar conky dunst compton"
 for service in $services; do
-	printf "  [..] Killing $service\n"
+	printf "  [INFO] Killing $service\n"
 	killall $service
 done
+# Wallpaper management
+# Note that this MUST happen before the compositor starts, otherwise xsetroot
+# will not apply properly
+if which xfdesktop; then
+	printf "[INFO] Starting xfdesktop\n"
+	xfdesktop&
+elif which feh; then
+	printf "[INFO] Setting wallpaper with feh\n"
+	printf "[WARN] This solution may cause problems on multi-monitor systems\n"
+	feh --randomize --bg-fill ~/Pictures/Wallpapers/.active &
+elif which xsetroot; then
+	printf "[INFO] Setting root window color\n"
+	xsetroot -solid "#282828"
+else
+	printf "[WARN] Could not find any wallpaper manager\n"
+fi
 # Don't start the compositor in a VM
 if [[ $(hostname) != "vm"* ]]; then
-	printf "  [..] Starting compton\n"
+	printf "  [INFO] Starting compton\n"
 	compton &
 fi
 # Different startup for OpenBSD and Linux
 if [[ $(uname) == "Linux" ]]; then
-	printf "[..] Starting Linux tasks\n"
+	printf "[INFO] Starting Linux tasks\n"
 	compton &
 	$HOME/.config/polybar/start.sh &
 	sxhkd &
 else
-	printf "[..] Starting OpenBSD tasks\n"
+	printf "[INFO] Starting OpenBSD tasks\n"
 	sxhkd -c $XDG_CONFIG_HOME/sxhkd/sxhkdrc-obsd &
 fi
 # Start these all the time regardless of platform
-printf "[..] Starting platform-independent tasks\n"
+printf "[INFO] Starting platform-independent tasks\n"
 conky&
 dunst&
-printf "[..] Finished initialization\n"
+printf "[INFO] Finished initialization\n"