#!/bin/bash

# ======================================================================
# Archivo:       preload-config
# Ruta:          /usr/local/bin/
# Autor:         Charlie Martínez® <cmartinez@quirinux.org>
# Licencia:      https://www.gnu.org/licenses/gpl-2.0.txt
# Propósito:     Activar o desactivar preload
# Distribución:  Quirinux 2.x
# ======================================================================

#
# Copyright (c) 2019-2025 Charlie Martínez, derechos reservados.
# Licencia: https://www.gnu.org/licenses/gpl-2.0.txt
# Usos autorizados y no autorizados de la marca Quirinux:
# Ver https://www.quirinux.org/aviso-legal
#

# =========================================================================================
# MENSAJES MULTI-IDIOMA
# =========================================================================================

function mostrar_mensaje() {
    local clave=$1
    declare -A mensajes=(
        [es_titulo]="¿Para qué sirve Preload?"
        [es_explicacion]="Preload observa que aplicaciones usas con mas frecuencia
y las precarga en memoria RAM para que abran mas rapido.
Esta mejora es apreciable en equipos con discos duros mecánicos,
siempre que cuentes con suficiente RAM disponible."
        [es_preload_on]="Preload está activado. ¿Desea desactivarlo?"
        [es_preload_off]="Preload está desactivado. ¿Desea activarlo?"
        [es_no_permisos]="Debe ejecutar este script con permisos de superusuario."
        [es_preload_activado]="Preload activado"
        [es_preload_desactivado]="Preload desactivado"

        [en_titulo]="What is Preload for?"
        [en_explicacion]="Preload watches which applications you use most often
and preloads them into RAM so they open faster.
This improvement is noticeable on machines with mechanical hard drives,
as long as you have enough RAM available."
        [en_preload_on]="Preload is enabled. Do you want to disable it?"
        [en_preload_off]="Preload is disabled. Do you want to enable it?"
        [en_no_permisos]="You must run this script as a superuser."
        [en_preload_activado]="Preload enabled"
        [en_preload_desactivado]="Preload disabled"

        [gl_titulo]="Para que serve Preload?"
        [gl_explicacion]="Preload observa que aplicacións usas con máis frecuencia
e precárgaas en memoria RAM para que abran máis rápido.
Esta mellora nótase en equipos con discos duros mecánicos,
sempre que contes con suficiente RAM dispoñible."
        [gl_preload_on]="Preload está activado. Desexa desactivalo?"
        [gl_preload_off]="Preload está desactivado. Desexa activalo?"
        [gl_no_permisos]="Debe executar este script como superusuario."
        [gl_preload_activado]="Preload activado"
        [gl_preload_desactivado]="Preload desactivado"

        [de_titulo]="Wofür dient Preload?"
        [de_explicacion]="Preload beobachtet, welche Anwendungen Sie am häufigsten nutzen,
und lädt sie vorab in den RAM, damit sie schneller starten.
Diese Verbesserung ist bei Rechnern mit mechanischen Festplatten spürbar,
sofern genügend RAM verfügbar ist."
        [de_preload_on]="Preload ist aktiviert. Möchten Sie es deaktivieren?"
        [de_preload_off]="Preload ist deaktiviert. Möchten Sie es aktivieren?"
        [de_no_permisos]="Dieses Skript muss mit Superuser-Rechten ausgeführt werden."
        [de_preload_activado]="Preload aktiviert"
        [de_preload_desactivado]="Preload deaktiviert"

        [it_titulo]="A cosa serve Preload?"
        [it_explicacion]="Preload osserva quali applicazioni usi più spesso
e le precarica in RAM per aprirle più velocemente.
Questo miglioramento è apprezzabile su computer con dischi rigidi meccanici,
purché tu disponga di RAM sufficiente."
        [it_preload_on]="Preload è attivo. Vuoi disattivarlo?"
        [it_preload_off]="Preload è disattivo. Vuoi attivarlo?"
        [it_no_permisos]="Devi eseguire questo script come superutente."
        [it_preload_activado]="Preload attivato"
        [it_preload_desactivado]="Preload disattivato"

        [fr_titulo]="À quoi sert Preload ?"
        [fr_explicacion]="Preload observe les applications que vous utilisez le plus souvent
et les précharge en RAM pour qu'elles s'ouvrent plus vite.
Cette amélioration est perceptible sur les machines équipées de disques durs mécaniques,
à condition de disposer de suffisamment de RAM."
        [fr_preload_on]="Preload est activé. Voulez-vous le désactiver ?"
        [fr_preload_off]="Preload est désactivé. Voulez-vous l'activer ?"
        [fr_no_permisos]="Vous devez exécuter ce script en tant que superutilisateur."
        [fr_preload_activado]="Preload activé"
        [fr_preload_desactivado]="Preload désactivé"

        [pt_titulo]="Para que serve o Preload?"
        [pt_explicacion]="O preload observa quais aplicações usa com mais frequência
e pré-carrega-as na RAM para abrirem mais rápido.
Esta melhoria é notável em equipamentos com discos rígidos mecânicos,
desde que tenha RAM suficiente disponível."
        [pt_preload_on]="O preload está ativado. Deseja desativá-lo?"
        [pt_preload_off]="O preload está desativado. Deseja ativá-lo?"
        [pt_no_permisos]="Você deve executar este script como superusuário."
        [pt_preload_activado]="Preload ativado"
        [pt_preload_desactivado]="Preload desativado"

        [hu_titulo]="Mire való a Preload?"
        [hu_explicacion]="A preload figyeli, mely alkalmazásokat használja leggyakrabban,
és előre betölti azokat a RAM-ba, hogy gyorsabban induljanak.
Ez a javulás mechanikus merevlemezes gépeken érzékelhető,
amennyiben elég szabad RAM áll rendelkezésre."
        [hu_preload_on]="A preload be van kapcsolva. Szeretné kikapcsolni?"
        [hu_preload_off]="A preload ki van kapcsolva. Szeretné bekapcsolni?"
        [hu_no_permisos]="Ezt a szkriptet rendszergazdaként kell futtatni."
        [hu_preload_activado]="Preload bekapcsolva"
        [hu_preload_desactivado]="Preload kikapcsolva"

        [ru_titulo]="Для чего нужен Preload?"
        [ru_explicacion]="Preload отслеживает, какие приложения вы используете чаще всего,
и заранее загружает их в оперативную память, чтобы они открывались быстрее.
Улучшение заметно на компьютерах с механическими жёсткими дисками,
если у вас достаточно свободной RAM."
        [ru_preload_on]="Preload включён. Отключить его?"
        [ru_preload_off]="Preload выключен. Включить его?"
        [ru_no_permisos]="Этот скрипт должен быть запущен от имени суперпользователя."
        [ru_preload_activado]="Preload включён"
        [ru_preload_desactivado]="Preload отключён"
    )

    local idioma=$(echo $LANG | cut -d_ -f1)
    local mensaje=${mensajes[${idioma}_$clave]:-${mensajes[en_$clave]}}
    echo "$mensaje"
}

# =========================================================================================
# FUNCIONES PARA GESTIÓN DE PRELOAD
# =========================================================================================

function preload_activo() {
    service preload status >/dev/null 2>&1
}

function habilitar_preload() {
    update-rc.d preload enable >/dev/null 2>&1
    service preload start >/dev/null 2>&1
    zenity --info --window-icon="$ICONO" --icon-name="$NOMBRE_ICONO" --text="$(mostrar_mensaje preload_activado)"
}

function deshabilitar_preload() {
    service preload stop >/dev/null 2>&1
    update-rc.d preload disable >/dev/null 2>&1
    zenity --info --window-icon="$ICONO" --icon-name="$NOMBRE_ICONO" --text="$(mostrar_mensaje preload_desactivado)"
}

# =========================================================================================
# EJECUCIÓN DEL SCRIPT
# =========================================================================================

ICONO="/usr/share/icons/preload-config.png"
NOMBRE_ICONO="preload-config"

if [[ $EUID -ne 0 ]]; then
    zenity --error --window-icon="$ICONO" --icon-name="$NOMBRE_ICONO" --text="$(mostrar_mensaje no_permisos)"
    exit 1
fi

if preload_activo; then
    zenity --question --width=380 --window-icon="$ICONO" --icon-name="$NOMBRE_ICONO" --text="<b>$(mostrar_mensaje titulo)</b>

$(mostrar_mensaje explicacion)

$(mostrar_mensaje preload_on)" || exit 0
    deshabilitar_preload
else
    zenity --question --width=380 --window-icon="$ICONO" --icon-name="$NOMBRE_ICONO" --text="<b>$(mostrar_mensaje titulo)</b>

$(mostrar_mensaje explicacion)

$(mostrar_mensaje preload_off)" || exit 0
    habilitar_preload
fi
