← Herramientas
El anti-procrastinación

Modo Foco

Una app que detecta cuándo dejas de trabajar y te lanza un aviso a pantalla completa hasta que vuelves a lo tuyo. Elige cómo la quieres:

Opción 1 · la más fácil La quiero descargar Lista para usar. Descárgala e instálala en tu ordenador. Opción 2 · con IA La quiero construir yo Te llevas el documento y tu IA te la construye paso a paso.

1. Descárgala lista

  1. Pulsa el botón de descargar.
  2. Abre el archivo y sigue la instalación (un par de clics).
  3. Listo: vive en la bandeja del sistema. Pon tu vídeo y a concentrarte.
Descargar para Windows

Personalizar, pausar y quitar

2. Constrúyela tú con IA

  1. Abre tu IA que sepa programar (Claude, Cursor o ChatGPT).
  2. Pulsa Copiar y pégale todo el documento.
  3. Sigue sus pasos. Solo necesitas Node.js (gratis, nodejs.org).
Constrúyeme una app de escritorio con Electron + Node.js y guíame paso a paso como si no supiera programar (Windows; que también valga en Mac).

OBJETIVO: una herramienta "anti-procrastinación". Detecta cuándo llevo un tiempo sin actividad (sin teclear ni mover el ratón EN TODO EL SISTEMA) y muestra un overlay a pantalla completa. Cuando vuelvo a moverme, desaparece solo.

DETECCIÓN:
- Usa powerMonitor.getSystemIdleTime() de Electron (NO librerías de terceros). Polling cada 1 segundo.
- Si el idle >= umbral y el overlay no está visible -> mostrarlo.
- Si el idle < umbral y el overlay está visible -> ocultarlo. (getSystemIdleTime se resetea con cualquier input.)
- Controla el estado con un booleano para que no parpadee.

OVERLAY (BrowserWindow sin marco, alwaysOnTop 'screen-saver', pantalla completa; overlay.html con HTML/CSS/JS plano):
- Muestra, según config: un TÍTULO, un VÍDEO (.mp4 con su audio) o IMAGEN, y un MENSAJE.
- El vídeo se reproduce solo CON sonido (app.commandLine.appendSwitch('autoplay-policy','no-user-gesture-required')).
- Una CAPA oscura semitransparente cubre toda la pantalla para que el aviso resalte (opacidad configurable).
- Dos modos: "suave" (NO bloquea: setIgnoreMouseEvents(true,{forward:true}), focusable:false, transparent:true) y "forzado" (opaco, capta foco).

CONFIG (config.json editable, créalo con defaults si no existe):
{ "umbralSegundos": 30, "modo": "suave", "media": "assets/aviso.mp4", "sonido": "", "titulo": "¡TE PILLÉ PROCRASTINANDO!", "mensaje": "Vuelve al trabajo", "opacidadSuave": 0.72, "volumen": 1.0, "todosLosMonitores": false }

BANDEJA (Tray): menú con Activar/Pausar, Abrir config.json, Recargar config, Salir. La app NO tiene ventana principal: vive en la bandeja. Instancia única (requestSingleInstanceLock). No te cierres al cerrar el overlay.

ESTRUCTURA: package.json, main.js (polling+tray+overlay), overlay.html, overlay.css, overlay.js, config.json, assets/, README.md.

AL TERMINAR, explícame en pasos simples: 1) instalar (npm install), 2) dónde pongo mi vídeo, 3) ejecutar (npm start), 4) cambiar los segundos en config.json, 5) pausar/reactivar desde la bandeja, 6) cerrarla y quitarla del todo.