#!/bin/sh

# this file is executed when calling startx

# To run different WM, run:
#    startx ~/.xinitrc WM


# Session to run if none given
session=${1:-openbox}

# set ENV window manager for use in other scripts
export WM="$session"

# bspwm requires this to be set
export XDG_CONFIG_HOME=$HOME/.config

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

if [ -f /etc/X11/xinit/.Xmodmap ]; then
    xmodmap /etc/X11/xinit/.Xmodmap
fi

# user init scripts and settings
if [ -f ~/.Xmodmap ]; then
    xmodmap ~/.Xmodmap
fi

if [ -f ~/.Xresources ]; then
    xrdb -merge ~/.Xresources
fi

if [ -f ~/.xprofile ]; then
    source ~/.xprofile
fi


if hash gnome-keyring &>/dev/null; then
    # keyring for storing passwords
    gnome-keyring-daemon --start --components=pkcs11 &
fi

if [ -x "/usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1" ]; then
    # run policy kit
    /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1 &
fi

# keyboard repeat rate
kbdrate -d 400 -r 50
xset r rate 400 50

# display timeout
xset s 3600 3600


# Do NOT put code below this case statement
case $session in
    i3|i3wm)
        exec i3
        ;;
    bsp|bspwm)
        exec bspwm
        ;;
    xfce|xfce4)
        exec startxfce4
        ;;
    openbox)
        exec openbox-session
        ;;
    dwm)
        exec dwm
        ;;
    *)
        exec "$1" # Unknown, try running it
esac