Power Profile, macOS

#!/bin/bash

# configure an "always-on" power profile for laptops and desktops

# Check for battery presence
has_battery=$(pmset -g batt | grep -c 'Battery Power')

# Set display sleep to 30 minutes when on AC
echo "Setting display sleep to 30 minutes when on AC..."
if sudo pmset -a displaysleep 30; then
  echo "Display sleep setting updated successfully."
else
  echo "Failed to update display sleep setting." >&2
  exit 1
fi

# Set display sleep to 10 minutes when on battery
echo "Setting display sleep to 10 minutes when on battery..."
if sudo pmset -b displaysleep 10; then
  echo "Display sleep setting updated successfully."
else
  echo "Failed to update display sleep setting." >&2
  exit 1
fi

# Set hard drive sleep to 60 minutes when on AC
echo "Setting hard drive sleep to 60 minutes when on AC..."
if sudo pmset -a disksleep 60; then
  echo "Hard drive sleep setting updated successfully."
else
  echo "Failed to update hard drive sleep setting." >&2
  exit 1
fi

# Set hard drive sleep to 30 minutes when on battery
echo "Setting hard drive sleep to 30 minutes when on battery..."
if sudo pmset -b disksleep 30; then
  echo "Hard drive sleep setting updated successfully."
else
  echo "Failed to update hard drive sleep setting." >&2
  exit 1
fi

# Set Sleep based on battery presence
if [ "$has_battery" -eq 0 ]; then
  # Set Sleep to never when on AC and no battery
  echo "Setting Sleep to never when on AC (no battery)..."
  if sudo pmset -a sleep 0; then
    echo "Sleep setting updated successfully."
  else
    echo "Failed to update sleep setting." >&2
    exit 1
  fi
else
  # Set Sleep to 20 minutes when on battery
  echo "Setting Sleep to 20 minutes when on battery..."
  if sudo pmset -b sleep 20; then
    echo "Sleep setting updated successfully."
  else
    echo "Failed to update sleep setting." >&2
    exit 1
  fi
fi

# Disable Hibernation if the workstation does not have a battery
if [ "$has_battery" -eq 0 ]; then
  echo "This workstation does not have a battery, disabling hibernation..."
  if sudo pmset -a hibernatemode 0; then
    echo "Hibernation setting updated successfully."
  else
    echo "Failed to update hibernation setting." >&2
    exit 1
  fi
fi

echo "Power settings configured successfully."

Script data

Language - Bash

Run as - System / Root User

Script timeout duration - 5 Mins

1