Aqui está um script que muda para o próximo espaço de trabalho, voltando para o primeiro após o último. Observe que os espaços de trabalho são numerados de 0, talvez seja isso que te lançou quando você tentou escrever um script.
#!/bin/sh
total=$(wmctrl -d | wc -l)
current=$(wmctrl -d | sed -n 's/^\([0-9]\+\) *\*.*//p')
if [ -z "$total" ] || [ -z "$current" ]; then
echo 1>&2 "$0: Could not obtain workspace information!"
exit 2
fi
target=$(($current+1))
if [ $target = $total ]; then
target=0
fi
wmctrl -s $target