#!/bin/bash
#
-# Probably called from a /usr/share/xsessions/somesession.desktop that lists an
-# exec like dwm.custom, and the dwm.custom executable script looks like:
-#
-# #!/bin/bash
-#
-# if [ -f "$HOME/.dwmrc" ]; then
-# exec "$HOME/.dwmrc"
-# else
-# exec dwm.custom
-# fi
+# Startup on my Ubuntu 14.04 system works like this:
+# - lightdm finds /usr/share/xsessions/dwm.desktop
+# - This desktop file launches dwm.user, which is found in /usr/bin
+# - /usr/bin/dwm.user is a script that execs $HOME/.dwmrc, if present, else it
+# execs dwm.
+# - This is my dwmrc, which installs as ~/.dwmrc
+
+# Although the system startup merged ~/.Xresources, it did so with the -nocpp
+# option (Ubuntu 14.04), which prevents the use of #define, etc. Re-merge here
+# for correct behavior.
+xrdb -merge ~/.Xresources
# Initial startup volume to sane level
pactl set-sink-volume $(pactl info | grep "Default Sink:" | awk '{ print $3}') '30%'
# Default LCD panel brightness
-xbacklight -set 50
+xbacklight -set 15
# Set the X background
xsetroot -solid black
dispcfg
# Screen saver. DPMS standby -> suspend -> off in seconds
-# xss-lock calls i3lock on no X activity (DPMS standby)
xset dpms 300 600 1200
-pgrep -x xss-lock || xss-lock -- i3lock --dpms &
+
+# Use xss-lock to call a program on no X activity (DPMS standby)
+if [ -x ~/.Xidle ]; then
+ # If provided, .Xidle can do stuff before and after a call to 'i3lock -n'
+ (pgrep -x xss-lock || exec xss-lock -- ~/.Xidle ) &
+elif [ -x /usr/bin/i3lock ]; then
+ # Fall back to i3lock, which provides a screen lock.
+ # Instead of --dpms use --color. This is less confusing on monitors that
+ # are slow to sync back up. And since X should generally have the monitor
+ # suspended by this point anyway, the behavior should only change in the
+ # case of things like an invalid password being entered.
+ (pgrep -x xss-lock || exec xss-lock -- i3lock --color=000000 ) &
+fi
+
+# Turn off touchpad (later use a toggle)
+type synclient 2>/dev/null && synclient TouchpadOff=1
# Applets, etc
-pgrep -x xbindkeys || xbindkeys &
-pgrep -x dunst || dunst &
-pgrep -x nm-applet || nm-applet &
-pgrep -x xfce4-power-manager || xfce4-power-manager &
-pgrep -x pidgin || pidgin &
-pgrep dwm-i3status || dwm-i3status &
-
-exec dwm.custom
+(pgrep -x xbindkeys || exec xbindkeys ) &
+(pgrep -x dunst || exec dunst ) &
+(pgrep -x nm-applet || exec nm-applet ) &
+(pgrep -x xfce4-power-manager || exec xfce4-power-manager ) &
+(pgrep dwm-i3status || exec dwm-i3status ) &
+(exec xterm -e mcabber ) &
+
+# DWM has bindings for screen captures that expects ~/screenshots/ to exist.
+mkdir -p ~/screenshots
+
+exec dwm-custom