#!/bin/bash

# ======================================================================
# Archivo:       iniciar-obs
# Ruta:          /usr/local/bin/
# Autor:         Charlie Martínez® <cmartinez@quirinux.org>
# Licencia:      https://www.gnu.org/licenses/gpl-2.0.txt
# Propósito:     Reinicia v4l2loopback al cerrar OBS para permitir
#                reactivar la cámara virtual sin cerrar sesión
# Distribución:  Quirinux 2.x
# ======================================================================

# ----------------------------------------------------------------------
# INICIO / FIN (IDIOMAS)
# ----------------------------------------------------------------------

function _inicioEs() {
    notify-send -u normal -i "/usr/share/icons/notify.png" "Aviso:" "☛ Existe un bug conocido. Si detienes la cámara virtual, será necesario reiniciar OBS para volver a activarla."
}

function _inicioEn() {
    notify-send -u normal -i "/usr/share/icons/notify.png" "Notice:" "☛ There is a known bug. If you stop the virtual camera, OBS must be restarted to activate it again."
}

function _inicioGl() {
    notify-send -u normal -i "/usr/share/icons/notify.png" "Aviso:" "☛ Existe un erro coñecido. Se detés a cámara virtual, será necesario reiniciar OBS para activala de novo."
}

function _inicioPt() {
    notify-send -u normal -i "/usr/share/icons/notify.png" "Aviso:" "☛ Existe um bug conhecido. Se você parar a câmera virtual, será necessário reiniciar o OBS para ativá-la novamente."
}

function _inicioFr() {
    notify-send -u normal -i "/usr/share/icons/notify.png" "Avis :" "☛ Il existe un bug connu. Si vous arrêtez la caméra virtuelle, vous devrez redémarrer OBS pour la réactiver."
}

function _inicioIt() {
    notify-send -u normal -i "/usr/share/icons/notify.png" "Avviso:" "☛ Esiste un bug noto. Se si arresta la fotocamera virtuale, è necessario riavviare OBS per riattivarla."
}

function _inicioDe() {
    notify-send -u normal -i "/usr/share/icons/notify.png" "Hinweis:" "☛ Es gibt einen bekannten Fehler. Wenn die virtuelle Kamera gestoppt wird, muss OBS neu gestartet werden, um sie erneut zu aktivieren."
}

function _inicioRu() {
    notify-send -u normal -i "/usr/share/icons/notify.png" "Уведомление:" "☛ Существует известная ошибка. Если вы остановите виртуальную камеру, необходимо перезапустить OBS, чтобы снова её активировать."
}

function _inicioHu() {
    notify-send -u normal -i "/usr/share/icons/notify.png" "Figyelem:" "☛ Ismert hiba létezik. Ha leállítja a virtuális kamerát, az OBS újraindítása szükséges az újbóli aktiváláshoz."
}

# ----------------------------------------------------------------------
# SELECTOR DE IDIOMA
# ----------------------------------------------------------------------

function _idioma() {
    IDIOMA=$(echo "$LANG" | cut -d_ -f1)
}

function _mensajeInicio() {
    case "$IDIOMA" in
        es) _inicioEs ;;
        en) _inicioEn ;;
        gl) _inicioGl ;;
        pt) _inicioPt ;;
        fr) _inicioFr ;;
        it) _inicioIt ;;
        de) _inicioDe ;;
        ru) _inicioRu ;;
        hu) _inicioHu ;;
        *)  _inicioEn ;;
    esac
}

# ----------------------------------------------------------------------
# Detectar idioma y mostrar aviso
# ----------------------------------------------------------------------

_idioma
_mensajeInicio

# ----------------------------------------------------------------------
# Ejecutar OBS
# ----------------------------------------------------------------------

flatpak run com.obsproject.Studio &
OBS_PID=$!

# ----------------------------------------------------------------------
# Esperar a que OBS termine
# ----------------------------------------------------------------------

wait "$OBS_PID"

# ----------------------------------------------------------------------
# Resetear v4l2loopback (requiere root)
# ----------------------------------------------------------------------

if lsmod | grep -q '^v4l2loopback'; then
    sudo /sbin/modprobe -r v4l2loopback
    sudo /sbin/modprobe v4l2loopback
fi

exit 0
