#!/bin/sh

usage() {
  echo "Usage: $0 [-d|-i|-m|-t]"
  echo "  -d    Decrease volume by 10%"
  echo "  -i    Increase volume by 10%"
  echo "  -m    Toggle mute/unmute for the sink"
  echo "  -t    Toggle mute/unmute for the microphone"
  exit 1
}

get_default_sink() {
  pactl info | grep "Default Sink" | awk '{print $3}'
}

get_default_source() {
  pactl info | grep "Default Source" | awk '{print $3}'
}

while getopts "dimt" opt; do
  case $opt in
    d)
      sink=$(get_default_sink)
      if [ -n "$sink" ]; then
        pactl set-sink-volume "$sink" -10%
      else
        echo "No default sink found."
      fi
      ;;
    i)
      sink=$(get_default_sink)
      if [ -n "$sink" ]; then
        pactl set-sink-volume "$sink" +10%
      else
        echo "No default sink found."
      fi
      ;;
    m)
      sink=$(get_default_sink)
      if [ -n "$sink" ]; then
        current_mute=$(pactl get-sink-mute "$sink" | awk '{print $2}')
        if [ "$current_mute" = "yes" ]; then
          pactl set-sink-mute "$sink" 0
          echo "Unmuted sink"
        else
          pactl set-sink-mute "$sink" 1
          echo "Muted sink"
        fi
      else
        echo "No default sink found."
      fi
      ;;
    t)
      source=$(get_default_source)
      if [ -n "$source" ]; then
        current_mute=$(pactl get-source-mute "$source" | awk '{print $2}')
        if [ "$current_mute" = "yes" ]; then
          pactl set-source-mute "$source" 0
          echo "Unmuted microphone"
        else
          pactl set-source-mute "$source" 1
          echo "Muted microphone"
        fi
      else
        echo "No default source found."
      fi
      ;;
    *)
      usage
      ;;
  esac
done

sink=$(get_default_sink)
if [ -n "$sink" ]; then
  echo "Current volume for sink:"
  pactl list sinks | grep -A 15 "$sink" | grep "Volume:"
fi