#!/bin/bash

# Script que nos permite saber quien es el usuario gráfico activo

#SEAT_ACTIVO=$(loginctl list-seats | sed -e '/^$/d' | grep -v SEAT | grep -v "seats listed")
SEAT_ACTIVO="seat0"

function vx-is_directorio_home() {
    getent passwd |
        awk -F ":" \
            '{if ( $3 > 999 \
                                && $7~/\/bin\/.*/ \
                                && $7 != "/bin/false" \
                                && $7 != "/bin/sbin/nologin" \
                                && system("[ -d " $6 " ]") == 0) \
    {print $6":"$1}}' | grep "^${1}:" | cut -d":" -f2
}
# En el caso de que se pase como parámetro un directorio HOME de un usuario se indicará el usuario gráfico que lo tiene:
USUARIO=""
[[ "${1}" && -d "${1}" ]] && USUARIO="$(vx-is_directorio_home "${1}")"
[[ "${USUARIO}" ]] && echo "${USUARIO}" && exit 0

case "${1}" in
"--all")
    # Para saber la lista de usuarios que pueden tener iniciada una sesión gráfica en el equipo:
    loginctl list-sessions | grep seat0 | awk '{ print $3 }'
    ;;
*)
    SESION_ACTIVA=$(loginctl show-seat ${SEAT_ACTIVO} | grep 'ActiveSession' | cut -d'=' -f2)
    USUARIO=$(loginctl list-sessions | grep "${SEAT_ACTIVO}" | tr -s " " ":" | grep ":${SESION_ACTIVA}:" | cut -d':' -f4)
    echo "${USUARIO}"
    ;;
esac

exit 0
