#!/bin/bash
set -euo pipefail

program_kills=(
  'electron.*discord/resources/app.asar'
)

program_starts=(
  discord
)

systemd_services=(
  streamdeck
)

function log() {
  echo "$@" >&2
}

# Stop MPD playback when mpc client was found
(which mpc >/dev/null 2>&1) && mpc stop || true

# Disable systemd user services
for svc in "${systemd_services[@]}"; do
  systemctl --user is-active ${svc} >/dev/null 2>&1 && systemctl --user stop ${svc} || log "Service ${svc} not active / not found"
done

# Terminate Discord in order to get mobile notifications
for prog in "${program_kills[@]}"; do
  kill -TERM $(pgrep -fo "${prog}") || true
done

# Mute default sink & source
pactl set-sink-mute @DEFAULT_SINK@ true || true
pactl set-source-mute @DEFAULT_SOURCE@ true || true

i3lock -e -f -n -c 000000

# Restart user-services
for svc in "${systemd_services[@]}"; do
  systemctl --user is-enabled ${svc} >/dev/null 2>&1 && systemctl --user start ${svc} || log "Service ${svc} not enabled, skipping start"
done

# Restart programs
for cmd in "${program_starts[@]}"; do
  which ${cmd} >/dev/null 2>&1 && i3-msg "exec ${cmd}" || true
done