#!/usr/bin/env bash

# Ensure exactly 10 spaces exist on the main display (display 1)
# These can then be moved to other displays as needed

DESIRED_SPACES=10
MAIN_DISPLAY=1

# Get current number of spaces on main display
CURRENT_SPACE_COUNT=$(yabai -m query --spaces --display "$MAIN_DISPLAY" | jq 'length')

echo "Current spaces on display $MAIN_DISPLAY: $CURRENT_SPACE_COUNT"
echo "Desired spaces: $DESIRED_SPACES"

# Focus main display first
yabai -m display --focus "$MAIN_DISPLAY"

if [ "$CURRENT_SPACE_COUNT" -lt "$DESIRED_SPACES" ]; then
    MISSING_SPACES=$((DESIRED_SPACES - CURRENT_SPACE_COUNT))
    echo "Creating $MISSING_SPACES spaces on display $MAIN_DISPLAY..."

    for i in $(seq 1 $MISSING_SPACES); do
        yabai -m space --create
        echo "Created space $((CURRENT_SPACE_COUNT + i))"
    done
elif [ "$CURRENT_SPACE_COUNT" -gt "$DESIRED_SPACES" ]; then
    EXTRA_SPACES=$((CURRENT_SPACE_COUNT - DESIRED_SPACES))
    echo "Removing $EXTRA_SPACES extra spaces from display $MAIN_DISPLAY..."

    # Get the last space on main display and destroy it
    for i in $(seq 1 $EXTRA_SPACES); do
        LAST_SPACE=$(yabai -m query --spaces --display "$MAIN_DISPLAY" | jq 'map(select(."is-native-fullscreen" == false))[-1].index')
        yabai -m space --destroy "$LAST_SPACE"
        echo "Destroyed space $LAST_SPACE"
    done
fi

echo "Total spaces on display $MAIN_DISPLAY: $(yabai -m query --spaces --display $MAIN_DISPLAY | jq 'length')"

sketchybar --trigger space_change --trigger windows_on_spaces
