#!/bin/sh

# this file is executed when calling startx

# to start a different WM, set session="WM" below, or in console run:
#    startx ~/.xinitrc WM


# session to run if none passed as first arg ($1)
session="${1:-openbox}"

# set environment wm for use in scripts
export WM="$session"

# 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

# user init scripts and settings
[ -f /etc/X11/xinit/.Xmodmap ] && xmodmap /etc/X11/xinit/.Xmodmap
[ -f ~/.Xmodmap ] && xmodmap ~/.Xmodmap
[ -f ~/.Xresources ] && xrdb -merge ~/.Xresources
[ -f ~/.xprofile ] && source ~/.xprofile

# some things to start for awesome
# other wm already have these started elsewhere
if [[ $session == "awesome" ]]; then

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

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

    # simulate Alt+F1 with just pressing Super
    if hash ksuperkey &>/dev/null; then
        ksuperkey -e 'Super_L=Alt_L|F1' &
        ksuperkey -e 'Super_R=Alt_L|F1' &
    fi
fi

# display timeout and sleep
# xset s 3600 3600
# xset dpms 3600 3700 4000

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

# 1/1 mouse acceleration (no acceleration)
# xset m 1/1

# do NOT put commands below the exec lines
case $session in
    i3|i3wm)    exec i3 ;;
    bsp|bspwm)  exec bspwm ;;
    xfce|xfce4) exec startxfce4 ;;
    openbox)    exec openbox-session ;;
    awesome)    exec awesome ;;
    *)          exec "$session" # Unknown, try running it
esac
