JARVIS elige modelo, backend Wayland, y roadmap para la comunidad

- Seleccion de modelo: JARVIS cambia su cerebro en caliente (elegir_modelo).
- Ventanas en Wayland: backend para Sway e Hyprland (ventanas-wayland.sh).
- ROADMAP.md y CONTRIBUTING.md: tareas acotadas y como empezar, para animar
  commits (mas gestores, mas acciones, probar otros modelos, el RAG).
- docs/rag.md: tabla explicita de que se publica y que no del RAG; nota de
  que un clon recien hecho ya tiene RAG util (man pages + glosario) sin datos
  privados.
- README enlaza el roadmap y menciona la eleccion de modelo.
This commit is contained in:
sito 2026-08-16 16:58:41 +02:00
parent fde0fc1c72
commit 6a81cef3be
8 changed files with 375 additions and 9 deletions

57
config/ventanas-wayland.sh Executable file
View file

@ -0,0 +1,57 @@
#!/usr/bin/env bash
# Backend de ventanas para Wayland (Sway e Hyprland). ventanas.sh delega aqui
# cuando detecta uno de esos compositores.
#
# Por que un fichero aparte y no dentro de ventanas.sh: aquel es X11 puro
# (xdotool, xrandr) y esta probado; mezclar aqui lo romperia. Cada backend en su
# sitio, y este se puede iterar sin tocar el que ya funciona.
#
# En Wayland NO se pueden mover ventanas AJENAS sin permisos del compositor, asi
# que esto actua sobre la ventana ACTIVA (la que tiene el foco), que es lo que
# el compositor si deja hacer. Por eso ignora el <ventana> que si usa el X11.
#
# ── ESTADO ──────────────────────────────────────────────────────────────────
#
# maximiza / restaura / minimiza: confiables (pantalla completa y scratchpad son
# ordenes de una linea, bien documentadas en los dos compositores).
# izquierda / derecha / centro: escritas de la documentacion, A PROBAR en un
# equipo real —el flotante y las unidades (ppt, %) varian por version—. Es un
# primer commit ideal para quien use Sway o Hyprland. Ver ROADMAP.md.
set -uo pipefail
verbo=${1:-}
if command -v swaymsg >/dev/null 2>&1 && swaymsg -t get_version >/dev/null 2>&1; then
COMP=sway
elif command -v hyprctl >/dev/null 2>&1 && hyprctl version >/dev/null 2>&1; then
COMP=hypr
else
echo "no encuentro Sway ni Hyprland en marcha"; exit 1
fi
sway() { swaymsg "$@" >/dev/null 2>&1; }
hypr() { hyprctl dispatch "$@" >/dev/null 2>&1; }
case "$verbo:$COMP" in
# --- pantalla completa: confiable ---
maximiza:sway) sway fullscreen enable; echo "Maximizada, señor" ;;
maximiza:hypr) hypr fullscreen 1; echo "Maximizada, señor" ;;
restaura:sway) sway fullscreen disable; echo "Restaurada, señor" ;;
restaura:hypr) hypr fullscreen 0; echo "Restaurada, señor" ;;
minimiza:sway) sway move scratchpad; echo "Minimizada, señor" ;;
minimiza:hypr) hypr movetoworkspacesilent special; echo "Minimizada, señor" ;;
# --- mitades y centro: A PROBAR (unidades/flotante dependen de la version) ---
izquierda:sway) sway floating enable; sway resize set width 50 ppt height 100 ppt; sway move absolute position 0 0; echo "A la izquierda, señor" ;;
derecha:sway) sway floating enable; sway resize set width 50 ppt height 100 ppt; sway move absolute position 50 ppt 0; echo "A la derecha, señor" ;;
centro:sway) sway floating enable; sway resize set width 70 ppt height 80 ppt; sway move absolute position center; echo "Al centro, señor" ;;
izquierda:hypr) hypr setfloating; hypr resizeactive exact 50% 100%; hypr moveactive exact 0 0; echo "A la izquierda, señor" ;;
derecha:hypr) hypr setfloating; hypr resizeactive exact 50% 100%; hypr moveactive exact 50% 0; echo "A la derecha, señor" ;;
centro:hypr) hypr setfloating; hypr resizeactive exact 70% 80%; hypr centerwindow; echo "Al centro, señor" ;;
*)
echo "en $COMP todavia no esta esa orden de ventanas. Implementadas:" \
"maximiza, restaura, minimiza, izquierda, derecha, centro." \
"Las demas (mover entre pantallas, escritorios) estan en el roadmap."
exit 1 ;;
esac

View file

@ -33,12 +33,24 @@ ALIAS_FICHERO=${JARVIS_ALIAS_PANTALLAS:-$HOME/.config/jarvis-pantallas.json}
hay_x11() { [ -n "${DISPLAY:-}" ] && command -v xdotool >/dev/null 2>&1; }
if ! hay_x11; then
# Diagnostico segun el entorno, no un "no X11" seco.
if [ "${XDG_SESSION_TYPE:-}" = "wayland" ] || [ -n "${WAYLAND_DISPLAY:-}" ]; then
echo "las acciones de ventanas usan xdotool (X11) y estas en Wayland" \
"(${XDG_CURRENT_DESKTOP:-tu compositor}). En Wayland mover ventanas" \
"ajenas depende del compositor; por ahora estas ordenes quedan fuera." \
"El resto de JARVIS funciona igual."
en_wayland() { [ "${XDG_SESSION_TYPE:-}" = "wayland" ] || [ -n "${WAYLAND_DISPLAY:-}" ]; }
# En Wayland con Sway o Hyprland, delega en el backend propio (actua sobre la
# ventana activa). El verbo va en $1 y para las ordenes de ventana el destino
# (izquierda/derecha/centro/maximiza...) suele venir en $3; se le pasa el que
# tenga sentido.
if en_wayland && (command -v swaymsg >/dev/null 2>&1 || command -v hyprctl >/dev/null 2>&1); then
BACKEND="$(dirname "${BASH_SOURCE[0]:-$0}")/ventanas-wayland.sh"
case "${1:-}" in
zona) exec bash "$BACKEND" "${3:-centro}" ;; # zona <ventana> <izquierda|derecha|centro>
maximiza|restaura|minimiza) exec bash "$BACKEND" "$1" ;;
*) echo "en Wayland de momento van: maximiza, restaura, minimiza," \
"y mitades (izquierda/derecha/centro). El resto, en el roadmap."; exit 1 ;;
esac
fi
if en_wayland; then
echo "estas en Wayland (${XDG_CURRENT_DESKTOP:-tu compositor}) sin Sway ni" \
"Hyprland: mover ventanas ajenas no tiene via universal ahi. El resto" \
"de JARVIS funciona igual. Soporte por compositor: ver ROADMAP.md."
elif [ -n "${DISPLAY:-}" ]; then
echo "estas en X11 pero falta xdotool. Instalalo con tu gestor de paquetes."
else