#!/usr/bin/env bash
# ~/.local/bin/scratchpadctl
# MANAGE SPATIAL SCRATCHPAD STATE

APP_ID="$1"
SPAWN_CMD="$2"
HIDDEN_WORKSPACE="scratchpad_vault"

WINDOW_JSON=$(niri msg -j windows | jq -c ".[] | select(.app_id == \"$APP_ID\")" | head -n 1)

if [ -z "$WINDOW_JSON" ]; then
    eval "$SPAWN_CMD" &
    exit 0
fi

# extract geometric identifiers
WINDOW_ID=$(echo "$WINDOW_JSON" | jq -r '.id')
WINDOW_WS=$(echo "$WINDOW_JSON" | jq -r '.workspace_id')

# query active operational space
CURRENT_WS=$(niri msg -j workspaces | jq -r '.[] | select(.is_focused) | .id')

if [ "$WINDOW_WS" == "$CURRENT_WS" ]; then
    niri msg action focus-window --id "$WINDOW_ID"
    niri msg action move-window-to-workspace "$HIDDEN_WORKSPACE"
else
    niri msg action focus-window --id "$WINDOW_ID"
    niri msg action move-window-to-workspace "$CURRENT_WS"
    niri msg action focus-window --id "$WINDOW_ID"
fi
