Skip to content

jorgedihe/ka

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

KA — Keep Awake

KA — Keep Awake

Mantén Windows despierto y tu estado "Disponible" en cualquier app de comunicación. Una utilidad minimalista que vive en la bandeja del sistema y evita que el PC se bloquee, la pantalla se apague o tu estado pase a "Ausente" — funciona con Microsoft Teams, Slack, Zoom, Discord, Webex, Google Chat, Skype y prácticamente cualquier app que detecte inactividad del teclado.

Windows Python License: MIT PyInstaller


¿Para qué sirve?

¿Te ha pasado que tu app de chat o videollamada te pone como "Ausente" mientras estás leyendo un documento, atendiendo una llamada en el móvil o concentrado en algo que no toca el teclado? ¿O que Windows apaga la pantalla justo cuando estás presentando? KA resuelve esos casos:

  • 🟢 Evita el estado "Ausente" en Teams, Slack, Zoom, Discord, Webex, Google Chat, Skype... simulando una pulsación discreta cada minuto.
  • 💡 Impide que la pantalla se apague mientras KA está activo (ES_DISPLAY_REQUIRED).
  • 🔋 Bloquea el modo suspensión / hibernación automático del sistema (ES_SYSTEM_REQUIRED).
  • 🖱️ Sin ventanas, sin distracciones: solo un icono en la bandeja con un clic para activar/desactivar.
  • Consumo mínimo: un único hilo de fondo, sin telemetría, sin red.
  • 🔌 Agnóstico de aplicación: KA actúa a nivel de sistema operativo (WinAPI + pulsación SHIFT), no hace integración específica con ningún chat — por eso funciona con cualquiera.

Capturas

Bandeja del sistema con KA activo

KA en la bandeja de Windows con el menú desplegado

Estados del icono


Activo · evita el bloqueo y el "Ausente"

Inactivo · comportamiento normal de Windows

Cómo funciona

KA combina dos mecanismos para máxima fiabilidad:

Mecanismo Para qué
SetThreadExecutionState (WinAPI) Le dice a Windows que el sistema y la pantalla deben permanecer activos. Es la API oficial que usan VLC al reproducir vídeo o PowerPoint en modo presentación.
Pulsación virtual de SHIFT cada 60 s Reinicia el contador de inactividad que usan las apps de chat (Teams, Slack, Zoom, Discord, Webex, Skype, Google Chat...) para marcarte como "Ausente". SHIFT no produce ningún efecto visible en la ventana activa.

Como KA actúa a nivel de sistema (no hace integración específica con ningún chat), funciona con cualquier aplicación que detecte inactividad del teclado/ratón — presente o futura.

Instalación

Opción A — Descarga directa (recomendado)

  1. Ve a la sección Releases del repo.
  2. Descarga ka.exe.
  3. Doble clic. Aparece el círculo verde en tu bandeja.

No requiere instalación, ni Python, ni permisos de administrador.

Opción B — Desde código fuente

git clone https://github.com/jorgedihe/ka.git
cd ka
python -m venv .venv
.venv\Scripts\activate
pip install -r requirements.txt
python ka.py

Opción C — Compilar tu propio .exe

pip install pyinstaller
pyinstaller ka.spec
# El binario queda en dist\ka.exe

Uso

  1. Lanza ka.exe (o python ka.py).
  2. Aparece un círculo verde en la bandeja del sistema.
  3. Clic derecho sobre el icono:
    • Desactivar KA → el círculo pasa a rojo, Windows vuelve al comportamiento normal.
    • Salir → cierra la app y libera el bloqueo de suspensión.

Eso es todo. No hay configuración, no hay archivos, no hay registro de Windows. KA empieza ON por defecto en cada ejecución.

Iniciar con Windows (opcional)

Pulsa Win + R, escribe shell:startup y arrastra un acceso directo a ka.exe dentro de esa carpeta. KA arrancará al iniciar sesión.

Alternativas y por qué KA

Hay varias utilidades parecidas. Las he probado y estos son los puntos a favor de KA:

Herramienta Cierre por icono Mantiene "Disponible" en chats Open source Tamaño
KA ✅ (Teams, Slack, Zoom, Discord...) ~10 MB
Caffeine (Zhornsoftware) ❌ (solo evita screensaver) ~100 KB
PowerToys Awake ~250 MB (incluye todo PowerToys)
Mouse Jiggler ⚠️ mueve cursor visible ~1 MB

KA es honesto en el código (40 líneas Python que puedes auditar en 2 minutos), no mueve el cursor (no estorba) y combina los dos mecanismos correctos a la vez.

Limitaciones

  • Solo Windows. El código usa ctypes.windll (WinAPI). En macOS hay caffeinate, en Linux systemd-inhibit o caffeine-ng.
  • No es un keylogger ni reproduce macros: solo emite SHIFT cada 60 s, suficiente para la mayoría de chats (Teams, Slack, Zoom, Discord, Webex, Skype...) pero insuficiente si una herramienta concreta exige movimiento del ratón.
  • No engaña a sistemas de monitorización corporativos serios que miden actividad real (clicks útiles, foco de ventana, etc.).

⚠️ Uso responsable

KA está pensado para los casos legítimos en los que un humano está realmente disponible pero no escribe en el teclado (lectura, llamadas por teléfono, presentaciones, descargas largas, etc.). No lo uses para falsear tu disponibilidad en un puesto de trabajo donde las normas internas lo prohíban — eso es responsabilidad tuya, no de la herramienta.

Roadmap

  • Intervalo de "tap" configurable
  • Atajo de teclado global para toggle
  • Versión multiplataforma (macOS / Linux)
  • Modo "horario laboral" (activo solo de 9 a 18)

Stack técnico

Licencia

MIT — © 2025 Jorge Díaz Hernández. Úsalo, modifícalo y compártelo libremente.


Keywords para los buscadores: keep awake windows, prevent sleep windows, anti-afk, mantener disponible en chats, evitar estado ausente, mantener teams activo, mantener slack activo, mantener zoom activo, mantener discord activo, evitar suspensión windows, mantener pantalla encendida, alternativa caffeine windows, system tray utility windows, pystray ejemplo, python tray icon, prevent windows screen lock, keep computer awake, no idle, keep status green, anti idle chat.

About

Mantén tu PC despierto y «Disponible» en cualquier app de comunicación — Teams, Slack, Zoom, Discord, Webex, Skype, Google Chat... · Utilidad minimalista de bandeja del sistema que evita el bloqueo, la suspensión y los estados de inactividad.

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages