Root a demanda, lanzador de escritorio, captura nueva y ajustes

- Root: no se pide la contraseña al arrancar (echaba para atras). Se pide
  solo la primera vez que una accion necesita sudo, y se cachea. --candado
  para el modo seguro. Aviso de root prominente en el README.
- install.sh crea un lanzador de escritorio (jarvis.desktop) con el icono
  naranja: aparece en el menu de aplicaciones para arrancar con un clic.
- Captura del panel reemplazada por una mas limpia (solo la ventana).
- Quitado "Probado en ..." del README (informacion del equipo).
- ventanas.sh: aviso claro segun el compositor en Wayland.
This commit is contained in:
sito 2026-08-16 16:20:27 +02:00
parent a0b9afe2f9
commit 3a2a1bb111
8 changed files with 118 additions and 33 deletions

View file

@ -219,7 +219,10 @@ def escucha(boca: Boca, modelo="small", fuente=None, callado=False,
def panel(boca: Boca, cerebro=None, escuchando=False, modelo="small",
fuente=None, abre=True, centinela=None, sin_candado=False) -> int:
"""Levanta el panel y, si se pide, ademas escucha el microfono."""
manos = Manos(catalogo())
# Un SOLO Manos, compartido con el cerebro: asi hay una unica sesion de root
# y un unico sitio donde pedir la contraseña. Antes el cerebro tenia su Manos
# y el panel otro, con roots separados: desbloquear en uno no abria el otro.
manos = cerebro.manos if (cerebro and getattr(cerebro, "manos", None)) else Manos(catalogo())
cara = Cara()
p = Panel(cara, boca, manos, cerebro, candado=not sin_candado,
centinela=centinela)
@ -273,8 +276,10 @@ def main() -> int:
help="levantar el panel pero no abrir el navegador")
p.add_argument("--palabra", action="store_true",
help=f"exigir que le llamen «{NOMBRE}» antes de cada orden")
p.add_argument("--sin-candado", action="store_true",
help="no pedir la contraseña al abrir (solo para probar)")
p.add_argument("--candado", action="store_true",
help="pedir la contraseña al abrir y bloquear el panel. Por "
"defecto NO: no molesta al arrancar, y el root se pide "
"solo la primera vez que una accion lo necesita")
a = p.parse_args()
boca = Boca(a.voz or "davefx")
@ -322,7 +327,7 @@ def main() -> int:
if a.panel:
return panel(boca, cerebro, a.escucha, a.modelo, a.fuente,
abre=not a.sin_abrir, centinela=centinela,
sin_candado=a.sin_candado)
sin_candado=not a.candado)
if a.escucha:
return escucha(boca, a.modelo, a.fuente, a.callado, cerebro,