#!/bin/bash

if [ -f /etc/login.defs ] && command -v awk &> /dev/null; then
    start_uid=$(id -u)
    min_uid=$(grep "^UID_MIN" /etc/login.defs | awk '{print $2}')
fi

if [ "$USER" = "root" -o "$UID" = "0" -o "start_uid" = "0" ]; then
  echo "WARNING: program should not be run as superuser" 1>&2
  exit 1
elif [ ! -z "$start_uid" -a ! -z "$min_uid" -a "$start_uid" -lt "$min_uid" ]; then
    echo "WARNING: program can only be run with user permissions" 1>&2
    exit 1
fi

display_manager="$(cat /etc/X11/default-display-manager | rev | cut -d'/' -f1 | rev)"
echo "$display_manager display manager has been detected"

unit=tera-audio.service

if [ "$display_manager" = "fly-dm" ]; then
  # example: fly-dm
  # graphical-session.target работает бесконечно, независимо от входов и выходов пользователя [WP-5718]
  sleep 2147483647 &
  trap "systemctl --user stop $unit; kill $!" SIGINT SIGTERM
  systemctl --user start $unit && rc=$? || rc=$?
  if [ $rc -eq 0 ]; then
    wait
    echo "$unit has stopped working"
    exit 0
  fi
  # ...работа скрипта не будет завершена
  # в gdm3 это приводит к зависанию запуска .desktop ярлыков
else
  # example: gdm3
  # graphical-session.target запускается при каждом login-е пользователя и останавливается при logout-е [WP-5718]
  systemctl --user start $unit && rc=$? || rc=$?
fi

if [ $rc -ne 0 ]; then
  echo "WARNING: $unit did not start" 1>&2
fi
exit $rc
