#!/bin/bash
set -x

if [ -z "${GDMSESSION:-}" ]; then
	# GDM is not used
	exit 0
fi

dbus-monitor --session \
  "type='signal',interface='org.freedesktop.ScreenSaver',member='ActiveChanged',path='/org/freedesktop/ScreenSaver'" | \
while read -r line
do
  if [[ "$line" == *"boolean true"* ]]; then
    pids="$(pgrep -U $EUID -f /usr/libexec/gsd-smartcard)"
    [[ -n "$pids" ]] && kill -STOP $pids
    if [[ "${KSCREENLOCKER_SWITCHUSER+1}" != 1 ]]; then
      gdmflexiserver
    fi
  elif [[ "$line" == *"boolean false"* ]]; then
    pids="$(pgrep -U $EUID -f /usr/libexec/gsd-smartcard)"
    [[ -n "$pids" ]] && kill -CONT $pids
  fi
done
