Nucleo propio: oye con whisper.cpp, piensa con un modelo de Ollama, habla con Piper, y hace RAG sobre los apuntes del usuario. 100% local, sin cuentas ni claves. Escrito bajo una restriccion dura, 4 GB de VRAM: el cerebro y whisper comparten tarjeta y solo caben porque estan dimensionados para ello. El RAG usa embeddings estaticos con busqueda hibrida; la voz clonada se sirve de una cache de frases. Incluye instalador (install.sh), requisitos, y documentacion del stack, del manejo de root y de las acciones. Los apuntes indexados y el diario NO se incluyen: son privados y el .gitignore los bloquea.
54 lines
2.3 KiB
Bash
Executable file
54 lines
2.3 KiB
Bash
Executable file
#!/usr/bin/env bash
|
|
# Abre el panel en SU PROPIA VENTANA, no en una pestaña del navegador.
|
|
#
|
|
# ventana.sh [url]
|
|
#
|
|
# Existe porque habia dos sitios abriendo el panel de dos maneras distintas:
|
|
# jarvis.py lo abria con `chromium --app=`, que sale como una aplicacion, y
|
|
# arranca.sh —cuando JARVIS ya estaba en marcha— tiraba de `xdg-open`, que abre
|
|
# el navegador POR DEFECTO en una pestaña mas. Segun si ya estaba abierto o no,
|
|
# el mismo icono daba una cosa u otra.
|
|
#
|
|
# ## Que hace que parezca una aplicacion y no una web
|
|
#
|
|
# --app=URL sin barra de direcciones, sin pestañas, sin marcadores
|
|
# --user-data-dir perfil propio: no se mezcla con la navegacion del
|
|
# usuario, no hereda sus extensiones y no arrastra su
|
|
# sesion. Ademas asi la ventana es un proceso aparte y
|
|
# cerrarla no toca al navegador de verdad.
|
|
# --class para que el gestor de ventanas la trate como una
|
|
# aplicacion propia: entrada suya en la barra de tareas y
|
|
# su icono, no el del navegador. Va acompañado del
|
|
# StartupWMClass del .desktop.
|
|
#
|
|
# Firefox queda como ultimo recurso: su `--kiosk` no deja ni cerrar la ventana
|
|
# comodamente y no tiene un equivalente limpio a --app. Si es lo unico que hay,
|
|
# se abre en ventana nueva y se avisa.
|
|
set -uo pipefail
|
|
|
|
RAIZ=$(cd -P "$(dirname "${BASH_SOURCE[0]:-$0}")" && pwd)
|
|
URL=${1:-http://127.0.0.1:${JARVIS_PUERTO:-8790}/}
|
|
PERFIL=${XDG_CACHE_HOME:-$HOME/.cache}/jarvis-panel
|
|
CLASE=jarvis-nucleo
|
|
|
|
for navegador in chromium chromium-browser google-chrome brave-browser; do
|
|
command -v "$navegador" >/dev/null || continue
|
|
exec "$navegador" \
|
|
--app="$URL" \
|
|
--user-data-dir="$PERFIL" \
|
|
--class="$CLASE" \
|
|
--window-size=1500,940 \
|
|
--no-first-run \
|
|
--no-default-browser-check \
|
|
--disable-features=TranslateUI \
|
|
>/dev/null 2>&1
|
|
done
|
|
|
|
if command -v firefox >/dev/null || command -v firefox-esr >/dev/null; then
|
|
FF=$(command -v firefox || command -v firefox-esr)
|
|
echo "sin chromium: el panel se abre en una ventana de Firefox, con su barra" >&2
|
|
exec "$FF" --new-window "$URL" >/dev/null 2>&1
|
|
fi
|
|
|
|
echo "no hay ningun navegador con el que abrir el panel: $URL" >&2
|
|
exit 1
|