# Интерфейс проброса событий
EVENTS_INTERFACE='ru.astralinux.events'
# Имя сигнала блокировки экрана при внешнем воздействии на устройство
SIGNAL_LOCK_SCREEN='external_impact_lock_screen'
# Имя сигнала выхода из информационных систем при блокировке экрана
SIGNAL_EXIT_IS='screen_lock_exit_is'

#================================================================================
# Lock
#================================================================================
## @sendExtendedEvent
## @brief - Функция отправить по dbus событие
## @param $1 - Имя события
function sendExtendedEvent() {
    local SIGNAL_NAME="$1"
    dbus-send --system --type=signal / $EVENTS_INTERFACE.$SIGNAL_NAME
}

## @lockScreen
## @brief - Функция заблокирует экран
function lockScreen() {
    if [[ $EUID -eq 0 ]]; then
        # Шлём сигнал для wait_lock_signal, запущенного от обычного пользователя
        # wait_lock_signal получив сигнал вызовет lockScreen и попадёт в секцию ниже
        sendExtendedEvent "$SIGNAL_LOCK_SCREEN"
    else
        # В режиме обычного пользователя вызываем метод блокировки экрана по dbus
        dbus-send --session \
             --dest="org.kde.screensaver" \
             --type=method_call \
             --print-reply \
             "/ScreenSaver" \
             "org.freedesktop.ScreenSaver.Lock"
    fi
}
#================================================================================
