[ -f ~/.xprofile ] && . ~/.xprofile
[ -f ~/.setpath.sh ] && . ~/.setpath.sh

AUTHORISED_WM="qtile i3"
AVAILABLE_WM=""
REQUESTED_WM="$1"

for wm in $AUTHORISED_WM; do
    if hash "$wm" 2>/dev/null; then
        if [ "$AVAILABLE_WM" ]; then
            AVAILABLE_WM="$AVAILABLE_WM $wm"
        else
            AVAILABLE_WM="$wm"
        fi
    fi
done
if [ ! "$AVAILABLE_WM" ]; then
    >&2 echo "Error: No window manager found. Please install one of the following:"
    >&2 echo "$AUTHORISED_WM"
    exit 1
fi

WM=$(echo "$AVAILABLE_WM" | tr ' ' '\n' | head -n1)
if [ "$REQUESTED_WM" ]; then
    found=$(echo "$AVAILABLE_WM" | tr ' ' '\n' | grep -w "$REQUESTED_WM")
    if [ "$found" ]; then
        WM="$found"
    else
        >&2 echo "Warning: $REQUESTED_WM not found, starting the default window manager."
    fi
fi

exec "$WM" 2>/tmp/xinit.err.log