Skip to content

vicogarcia16/Awake

Repository files navigation

Keep Awake 👁️

Una aplicación de escritorio para Windows que mantiene tu sistema activo evitando el bloqueo automático y la suspensión. Perfecta para presentaciones, descargas largas o cuando necesitas que tu computadora permanezca despierta sin interacción manual.

📖 ¿Qué hace esta aplicación?

Keep Awake simula actividad del teclado de forma automática y no intrusiva, presionando la tecla Scroll Lock cada minuto. Esta técnica:

  • No interfiere con tu trabajo - Scroll Lock no afecta la mayoría de aplicaciones
  • Mantiene el sistema activo - Evita que Windows entre en modo de suspensión
  • Previene el bloqueo automático - Tu sesión permanece desbloqueada
  • Es completamente invisible - Funciona silenciosamente en segundo plano

✨ Características

  • 🎨 Interfaz oscura moderna con tema Catppuccin Mocha
  • ⏱️ Temporizador flexible de 1 a 480 minutos (8 horas)
  • 🎯 Presets rápidos para tiempos comunes (30 min, 1h, 2h, 4h, 8h)
  • 🔔 Icono en bandeja del sistema con tiempo restante visible
  • 👁️ Icono de ojo personalizado que refleja el estado de la aplicación
  • 🖱️ Controles desde el tray para monitorear y detener
  • 💤 Método no intrusivo usando la tecla Scroll Lock
  • Inicio instantáneo sin parpadeos ni ventanas molestas

🚀 Instalación y Uso

Opción 1: Ejecutable (Recomendado)

  1. Descarga KeepAwake.exe desde Releases
  2. Ejecuta el archivo
  3. Selecciona el tiempo deseado
  4. ¡Listo! La aplicación se minimizará a la bandeja del sistema

Opción 2: Desde el código fuente

# Clonar el repositorio
git clone https://github.com/vicogarcia16/Awake.git
cd Awake

# Instalar dependencias
pipenv install

# Ejecutar la aplicación
pipenv run python main.py

Compilar tu propio ejecutable

# Compilar con PyInstaller
pipenv run build

# El ejecutable estará en: dist/KeepAwake.exe

Ver BUILD.md para más detalles sobre la compilación.

🎮 Guía de Uso

  1. Iniciar la aplicación - Se abrirá una ventana con diseño oscuro moderno
  2. Seleccionar tiempo - Usa el slider o los botones de sugerencias rápidas:
    • 🕐 30 minutos
    • 🕐 1 hora
    • 🕑 2 horas
    • 🕓 4 horas
    • 🕗 8 horas
  3. Hacer clic en "Iniciar" - La ventana se cerrará y aparecerá un icono de ojo en la bandeja del sistema
  4. Monitorear - Haz clic en el icono de la bandeja para ver el tiempo restante
  5. Detener - Haz clic derecho en el icono → "Detener y Salir"

🔧 Arquitectura del Proyecto

Estructura Modular

Awake/
├── app/                    # Código fuente modular
│   ├── __init__.py         # Inicialización del paquete
│   ├── config.py           # Configuración y constantes (colores, teclas)
│   ├── dialogs.py          # Diálogos personalizados (éxito, error)
│   ├── gui.py              # Interfaz gráfica principal
│   ├── keep_awake.py       # Lógica del bucle de actividad
│   └── tray_icon.py        # Gestión del icono de bandeja
├── legacy/                 # Versión antigua (archivo único)
│   ├── keep_awake_tray.py  # Implementación legacy
│   └── KeepAwake.spec      # Spec de PyInstaller legacy
├── main.py                 # Punto de entrada principal
├── awake_icon.ico          # Icono del ojo
├── KeepAwakeModular.spec   # Configuración PyInstaller
├── Pipfile                 # Dependencias del proyecto
├── BUILD.md                # Instrucciones detalladas de compilación
└── README.md               # Este archivo

Flujo de la Aplicación

main.py
   ├─> setup_gui()          # Muestra interfaz y obtiene minutos
   └─> run_tray_icon()      # Inicia icono de bandeja
         └─> keep_awake_loop()  # Ejecuta bucle en hilo separado
               └─> press_scroll_lock()  # Simula tecla cada 60s

🎨 Diseño

Paleta de Colores (Catppuccin Mocha)

Color Hex Uso
Base #1E1E2E Fondo principal
Mantle #313244 Fondo secundario
Surface #45475A Elementos elevados
Text #CDD6F4 Texto principal
Blue #89B4FA Botones y acentos
Green #A6E3A1 Indicadores de éxito
Teal #94E2D5 Slider y controles
Pink #F38BA8 Errores y alertas

🛠️ Tecnologías

  • Python 3.13 - Lenguaje de programación
  • Tkinter - Framework de UI nativo de Python
  • pystray - Gestión de iconos de bandeja del sistema
  • Pillow (PIL) - Generación y procesamiento de imágenes
  • PyInstaller - Empaquetado de ejecutables
  • ctypes - Interacción con Windows API para simular teclas

🤔 Preguntas Frecuentes

¿Es seguro usar esta aplicación?
Sí, el código es completamente open source y solo simula la tecla Scroll Lock. No recopila datos ni accede a información sensible.

¿Funciona en otros sistemas operativos?
No, actualmente solo está diseñado para Windows debido al uso de Windows API (ctypes).

¿Puedo cambiar la tecla que se presiona?
Sí, puedes modificar VK_SCROLL en app/config.py por otra tecla virtual de Windows.

¿Por qué Scroll Lock?
Porque es una tecla que casi ninguna aplicación moderna utiliza, por lo que no interfiere con tu trabajo.

📝 Licencia

Este proyecto es de código abierto y está disponible bajo la licencia MIT.

👨‍💻 Autor

Víctor García
GitHub: @vicogarcia16

About

Aplicación Windows que previene el bloqueo automático simulando actividad del teclado de forma no intrusiva

Topics

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages