#!/usr/bin/env bash # Helper to install a LaunchAgent for Solaar to keep it running in the background. set -euo pipefail SOLAAR_PATH=${SOLAAR_PATH:-solaar} SOLAAR_RESOLVED_PATH=$(command -v "${SOLAAR_PATH}" 2>/dev/null || echo "") if [ -z "${SOLAAR_RESOLVED_PATH}" ]; then echo "Error: '${SOLAAR_PATH}' not found" >&2 exit 1 fi LAUNCH_AGENT_DIR="${HOME}/Library/LaunchAgents" LAUNCH_AGENT_PLIST="${LAUNCH_AGENT_DIR}/io.github.pwr-solaar.solaar.plist" mkdir -p "${LAUNCH_AGENT_DIR}" echo "Creating LaunchAgent to keep Solaar running..." # Unload if already loaded (suppress errors) launchctl unload "${LAUNCH_AGENT_PLIST}" 2>/dev/null || true cat > "${LAUNCH_AGENT_PLIST}" < Label io.github.pwr-solaar.solaar ProgramArguments ${SOLAAR_RESOLVED_PATH} --window=hide RunAtLoad KeepAlive StandardOutPath ${HOME}/Library/Logs/solaar.log StandardErrorPath ${HOME}/Library/Logs/solaar.error.log ProcessType Background EOF launchctl load "${LAUNCH_AGENT_PLIST}" echo "LaunchAgent created at ${LAUNCH_AGENT_PLIST}" echo "" echo "To disable automatic startup:" echo " launchctl unload \"${LAUNCH_AGENT_PLIST}\"" echo "" echo "To re-enable automatic startup:" echo " launchctl load \"${LAUNCH_AGENT_PLIST}\"" echo "" echo "To start Solaar:" echo " launchctl start io.github.pwr-solaar.solaar" echo "" echo "To stop Solaar:" echo " launchctl stop io.github.pwr-solaar.solaar" echo "" echo "Logs will be written to:" echo " ${HOME}/Library/Logs/solaar.log" echo " ${HOME}/Library/Logs/solaar.error.log"