#!/bin/bash

export LOGDIR="$HOME/.var/log/"
export RUNDIR="$HOME/.var/run"

[[ ! -d "LOGDIR" ]] && mkdir -p "$LOGDIR"

LOGFILE="$LOGDIR/xinitrc.log"

log() {
    echo "[$(date +%FT%T)] $*" >> "$LOGFILE"
}

log "START"

if [ -d /etc/X11/xinit/xinitrc.d ]; then
  for f in /etc/X11/xinit/xinitrc.d/*; do
    [ -x "$f" ] && . "$f"
  done
  unset f
fi

[ -f /etc/xprofile ] && source /etc/xprofile
[ -f ~/.xprofile ] && source ~/.xprofile

export LANG=en_US.UTF-8

start_wm() {
    log "generating i3 config"
    I3_LOG="$LOGDIR/i3/i3.log"
    I3_LOGOLD="${I3_LOG}.old"

    # simple logrotate so we can still get info about the last session
    if [[ -f "$I3_LOG" ]] ; then
        log "moving old i3 log at $I3_LOG to $I3_LOGOLD"
        mv -f "$I3_LOG" "$I3_LOGOLD"
    fi

    [[ ! -d "$(dirname $I3_LOG)" ]] && mkdir -p "$(dirname $I3_LOG)"
    SESSION_CONF=$(bash "$HOME/.i3/scripts/genconfig.bash")
    log "generated, starting i3"
    exec i3 -c "$SESSION_CONF" >> "$LOGDIR/i3/i3.log"
}


# keyboard options
keyboard_layout=de
keyboard_variant=nodeadkeys
keyboard_repeat_delay=150
keyboard_repeat_speed=30

# path and options for the wallpaper changer script
path_wallchanger="$HOME/.i3/scripts/wallchanger.bash"
wallpaper_directory="$HOME/pictures/wallpaper/misc"
wallpaper_logfile="$LOGDIR/wallpaper.log"
wallpaper_fallback="$HOME/.i3/data/wallpaper/"
wallpaper_interval="900"

# redshift settings
redshift_lat_long="49.5:11"
redshift_colortemp="5500:4000"

# start mpd
if [[ -z "$(pgrep --euid hannes --exact "^mpd$")" ]] ; then
    log "mpd is not running, starting mpd"
    mpd "$HOME/.mpd/mpd.conf" &
else
    log "mpd already running, will not start another instance"
fi

## start the urxvt daemon
#if pidof urxvtd &>/dev/null ; then
#    log "urxvtd already running"
#else
#    log "starting urxvtd"
#    urxvtd -q --fork
#fi

log "starting conky clock on desktop"
(sleep 5 && conky -c "$HOME/.conky/clock.conkyrc" &> $LOGFILE) &

# start the pulseaudio volume control tray applet
log "starting pasystray"
pasystray & &> $LOGFILE

# start dropbox
log "starting dropboxd"
nice -n 10 ionice -c 3 dropboxd & &> $LOGFILE

# start the wallpaper changer
log "starting $path_wallchanger"
$path_wallchanger "$wallpaper_directory" "$wallpaper_interval" "$wallpaper_fallback" > "$wallpaper_logfile" &

# start redshift
log "starting redshift-gtk"
redshift-gtk -l "$redshift_lat_long" -t "$redshift_colortemp" & &> $LOGFILE
# not it

# set keyboard layout
log "setting keyboard layout"
setxkbmap -layout "$keyboard_layout" -variant "$keyboard_variant" & &> $LOGFILE

# set key repeat delay
log "setting key repeat delay"
xset r rate "$keyboard_repeat_delay" "$keyboard_repeat_speed" & &> $LOGFILE

# execute the host-specific .xinitrc-addition
hostfile="$HOME/.xinitrc.d/$(hostname).xinitrc"
log "looking for host specific xinitrc addition at $hostfile"
if [[ -f "$hostfile" ]] ; then
    log "found it. executing"
    bash "$hostfile" & &> $LOGFILE
else
    log "found none"
fi

if [[ -f ~/.Xresources ]] ; then
    log "found ~/.Xresources, merging it into xrdb"
    xrdb -merge ~/.Xresources & &> $LOGFILE
else
    log "~/.Xresources not found"
fi

start_wm
