#!/bin/bash
# WINDOW_AGENT_SCRIPT_DOCSTRING_BEGIN
# Wrapper systemd-сервиса: подготавливает окружение активной сессии и запускает сборщик snapshot один раз.
#
# return: печатает переменные окружения или запускает основной бинарник;
# errors: диагностические сообщения отправляются в stderr.
# WINDOW_AGENT_SCRIPT_DOCSTRING_END
# Wrapper for systemd: detect active graphical user/session when possible,
# export the session environment, then run the local collector once.
# If no graphical session is found, the collector is still started so it can
# create a system-only snapshot independent from X11/Wayland.

set -euo pipefail

CONFIG=${1:-/etc/mos-activity-monitor/monitor.conf}

if [ "${WINDOW_AGENT_MANUAL_SESSION:-0}" = "1" ]; then
    export DISPLAY="${DISPLAY:-}"
    export XAUTHORITY="${XAUTHORITY:-}"
    export XDG_SESSION_TYPE="${XDG_SESSION_TYPE:-unknown}"
else
    if SESSION_ENV=$(/usr/libexec/mos-activity-monitor/mos-activity-detect-session 2>/tmp/mos-activity-detect-session.err); then
        eval "$SESSION_ENV"
    else
        echo "mos-activity-monitor-x11: no active local graphical session found; creating system-only snapshot" >&2
        if [ -s /tmp/mos-activity-detect-session.err ]; then
            cat /tmp/mos-activity-detect-session.err >&2 || true
        fi
        ACTIVE_SESSION_ID=""
        ACTIVE_SESSION_STATE=""
        ACTIVE_SESSION_SEAT=""
        SESSION_LOCKED=""
        ACTIVE_USER=""
        ACTIVE_UID=""
        ACTIVE_HOME=""
        XDG_SESSION_TYPE="${XDG_SESSION_TYPE:-unknown}"
        XDG_RUNTIME_DIR="${XDG_RUNTIME_DIR:-}"
        DBUS_SESSION_BUS_ADDRESS="${DBUS_SESSION_BUS_ADDRESS:-}"
        XDG_CURRENT_DESKTOP="${XDG_CURRENT_DESKTOP:-}"
        XDG_SESSION_DESKTOP="${XDG_SESSION_DESKTOP:-}"
        KDE_SESSION_VERSION="${KDE_SESSION_VERSION:-}"
        DISPLAY="${DISPLAY:-}"
        XAUTHORITY="${XAUTHORITY:-}"
        WAYLAND_DISPLAY="${WAYLAND_DISPLAY:-}"
    fi

    export ACTIVE_SESSION_ID ACTIVE_SESSION_STATE ACTIVE_SESSION_SEAT SESSION_LOCKED
    export ACTIVE_USER ACTIVE_UID ACTIVE_HOME
    export XDG_SESSION_TYPE XDG_RUNTIME_DIR DBUS_SESSION_BUS_ADDRESS XDG_CURRENT_DESKTOP XDG_SESSION_DESKTOP KDE_SESSION_VERSION DISPLAY XAUTHORITY WAYLAND_DISPLAY

    if [ -n "${ACTIVE_USER:-}" ]; then
        export USER="$ACTIVE_USER"
        export LOGNAME="$ACTIVE_USER"
    fi

    if [ -n "${ACTIVE_HOME:-}" ]; then
        export HOME="$ACTIVE_HOME"
    fi
fi

exec /usr/bin/mos-activity-monitor-x11 "$CONFIG"
