#!/bin/bash

# This script is used to change the top and bottom padding of the outer container in the Aerospace theme.

CONFIG_FILE="$HOME/.config/aerospace/aerospace.toml"
BACKUP_FILE="/tmp/aerospace_presentation_backup"

presentation_top_gaps=80
presentation_bottom_gaps=80
presentation_left_gaps=80
presentation_right_gaps=80

if [ "$1" == "on" ]; then
  # Save original lines with line numbers
  grep -n 'outer\.top\|outer\.bottom\|outer\.left\|outer\.right' "$CONFIG_FILE" > "$BACKUP_FILE"

  # Replace with presentation values
  sed -i'' -e "s/^\([[:space:]]*outer\.top[[:space:]]*=\).*/\1 ${presentation_top_gaps}/" "$CONFIG_FILE"
  sed -i'' -e "s/^\([[:space:]]*outer\.bottom[[:space:]]*=\).*/\1 ${presentation_bottom_gaps}/" "$CONFIG_FILE"
  sed -i'' -e "s/^\([[:space:]]*outer\.left[[:space:]]*=\).*/\1 ${presentation_left_gaps}/" "$CONFIG_FILE"
  sed -i'' -e "s/^\([[:space:]]*outer\.right[[:space:]]*=\).*/\1 ${presentation_right_gaps}/" "$CONFIG_FILE"

  # Set dark wallpaper for presentation
  osascript -e 'tell application "System Events" to set picture of every desktop to "/Users/rayandrew/Pictures/Wallpapers/black-gray.jpg"' > /dev/null 2>&1

  aerospace reload-config
  echo -n "Presentation mode ON"

elif [ "$1" == "off" ]; then
  if [ ! -f "$BACKUP_FILE" ]; then
    echo "Error: No backup found. Run 'presentation-mode on' first."
    exit 1
  fi

  # Restore original values line by line
  while IFS=: read -r line_num content; do
    # Escape special characters for sed
    escaped_content=$(printf '%s\n' "$content" | sed 's/[&/\]/\\&/g')
    sed -i'' -e "${line_num}s/.*/${escaped_content}/" "$CONFIG_FILE"
  done < "$BACKUP_FILE"

  # Restore original wallpaper
  osascript -e 'tell application "System Events" to set picture of every desktop to "/Users/rayandrew/Pictures/Wallpapers/bluering.png"' > /dev/null 2>&1

  rm "$BACKUP_FILE"
  aerospace reload-config
  echo "Presentation mode OFF"

else
  echo "Usage: presentation-mode [on|off]"
  exit 1
fi
