#!/bin/sh
#
# Usage: setxkbmap-toggle layout[:variant] [layout[:variant]]...

layout=`setxkbmap -query | sed -n "s/^layout:\s\+//p"`
variant=`setxkbmap -query | sed -n "s/^variant:\s\+//p"`


[ "$variant" = "" ] && CURRENT="$layout" || CURRENT="$layout:$variant"

next=$1

while [ $# -gt 0 ]
do
    keymap=$1
    shift

    if [ "$keymap" = "$CURRENT" ]
    then
        if [ $# -gt 0 ]
        then
            next=$1
            shift
        fi
    fi
done

echo "$next" | grep ":" >/dev/null
if [ $? -eq 0 ]
then
    layout=`echo $next | cut -f1 -d:`
    variant=`echo $next | cut -f2 -d:`
else
    layout=$next
    variant=""
fi

setxkbmap "$layout" "$variant"

[ "$variant" = "" ] && CURRENT="$layout" || CURRENT="$layout:$variant"
echo $CURRENT