#!/bin/sh
# Cambia de workspace en circular sin crear ninguno nuevo.
#
# El número de workspaces lo decide el usuario en el panel de ajustes, así que
# se lee de ~/.config/mike/settings.conf en vez de estar fijo a cuatro: antes
# subir el contador a 6 dejaba la rueda del ratón dando vueltas sólo entre los
# cuatro primeros.
set -u

SETTINGS="${HOME:-/root}/.config/mike/settings.conf"
COUNT=4
if [ -f "$SETTINGS" ]; then
    v="$(sed -n 's/^[[:space:]]*workspace_count[[:space:]]*=[[:space:]]*\([0-9][0-9]*\).*/\1/p' "$SETTINGS" | head -1)"
    case "$v" in
        ''|*[!0-9]*) ;;
        *) [ "$v" -ge 1 ] && COUNT="$v" ;;
    esac
fi

direction=${1:-next}
current=$(hyprctl activeworkspace -j 2>/dev/null \
    | sed -n 's/.*"id"[[:space:]]*:[[:space:]]*\([-0-9][0-9]*\).*/\1/p')
case "$current" in
    ''|*[!0-9]*) current=1 ;;
esac
[ "$current" -ge 1 ] && [ "$current" -le "$COUNT" ] || current=1

case "$direction" in
    next) target=$((current % COUNT + 1)) ;;
    prev) target=$((current - 1)); [ "$target" -lt 1 ] && target="$COUNT" ;;
    *) echo "uso: m-workspace-cycle {next|prev}" >&2; exit 2 ;;
esac

exec hyprctl dispatch workspace "$target"
