#!/bin/bash

# quickly switch between a list of keyboard layouts

KEYCONF="$HOME/.config/instantos/keylayoutlist"
TMPPATH=/tmp/instantos/"$(whoami)"/keyindex

if ! [ -e "$KEYCONF" ]; then
    notify-send 'no keyboard list defined'
    exit 1
fi

if ! [ -e "$TMPPATH" ]; then
    mkdir -p /tmp/instantos/"$(whoami)" &>/dev/null
    echo "1" >"$TMPPATH"
fi

TMPINDEX="$(cat "$TMPPATH")"

if ! [ "$TMPINDEX" -eq "$TMPINDEX" ]; then
    TMPINDEX=0
fi

LAYOUTCOUNT="$(wc -l <"$KEYCONF")"

if [ "$LAYOUTCOUNT" -eq 1 ]; then
    notify-send 'only one layout'
    exit
fi

TMPINDEX="$((TMPINDEX + 1))"

if [ "$TMPINDEX" -gt "$LAYOUTCOUNT" ]; then
    TMPINDEX=1
fi

NEWLAYOUT="$(sed -n "${TMPINDEX}p" "$KEYCONF")"

SL=(${NEWLAYOUT//:/ })
{
    setxkbmap -layout "${SL[0]}" -variant "${SL[1]}" || notify-send 'failed setting the layout'
} &

imenu -t "Keyboard layout:  
$NEWLAYOUT"

# save index
echo "$TMPINDEX" >"$TMPPATH"
