#!/usr/bin/bash

SYSCONF="/etc/gamescope-session-steam/system.conf"

DEFAULT_USER=""
DEFAULT_SESSION=""

if [[ -f "$SYSCONF" ]]; then
  . "$SYSCONF"
fi

USERNAME="${DEFAULT_USER:-}"
SESSION_NAME="${DEFAULT_SESSION:-}"

SESSION_DESKTOP=""
if [[ -n "$SESSION_NAME" ]]; then
  SESSION_DESKTOP="/usr/share/wayland-sessions/${SESSION_NAME}.desktop"
fi

DMCONF="/etc/sysconfig/displaymanager"

if [[ -f "$DMCONF" ]]; then
  if grep -q '^DISPLAYMANAGER_AUTOLOGIN=' "$DMCONF"; then
    sed -i "s|^DISPLAYMANAGER_AUTOLOGIN=.*|DISPLAYMANAGER_AUTOLOGIN=\"${USERNAME}\"|g" "$DMCONF"
  else
    printf '\nDISPLAYMANAGER_AUTOLOGIN="%s"\n' "$USERNAME" >> "$DMCONF"
  fi
else
  printf 'DISPLAYMANAGER_AUTOLOGIN="%s"\n' "$USERNAME" > "$DMCONF"
fi

if [[ -n "$USERNAME" ]]; then
  ASF="/var/lib/AccountsService/users/${USERNAME}"
  if [[ -f "$ASF" ]]; then
    if grep -q '^Session=' "$ASF"; then
      sed -i "s|^Session=.*|Session=default|g" "$ASF"
    else
      printf '\nSession=default\n' >> "$ASF"
    fi
  else
    mkdir -p "$(dirname "$ASF")"
    printf "[User]\nSession=default\n" > "$ASF"
  fi
fi

if [[ -n "$SESSION_DESKTOP" && -f "$SESSION_DESKTOP" ]]; then
  ln -sf "$SESSION_DESKTOP" /etc/alternatives/default-waylandsession.desktop
fi
