Frontend gráfico en GTK3 para Redshift, pensado para Linux Mint MATE (compatible con cualquier entorno GTK3/X11).
Redshift ajusta la temperatura de color y el brillo de la pantalla. Esta app no reemplaza ni modifica Redshift: solo lo controla mediante subprocess, con sliders y un switch en vez de flags de terminal.
Este es mi primer programa publicado — a partir de ahora voy a ir compartiendo más herramientas por acá.
- Activar / desactivar Redshift con un switch.
- Slider de temperatura de color (1000K–10000K).
- Slider de brillo (0.1–1.0).
- Restaurar valores por defecto (6000K / 0.75).
- Recuerda la última configuración usada entre reinicios de la app.
- Detecta si Redshift no está instalado y avisa en la UI.
- Muestra errores de forma clara si algún comando falla.
- Linux con X11 y GTK3.
- Python 3.8+
- Redshift instalado en el sistema.
- PyGObject (bindings de Python para GTK3).
Descargá el .deb desde Releases e instalalo:
sudo apt install ./redshift-gui_1.0.0_all.debEsto instala el binario, el lanzador de menú y resuelve las dependencias automáticamente. Para desinstalar:
sudo apt remove redshift-guisudo apt install redshift python3-gi gir1.2-gtk-3.0
git clone https://github.com/LautaroSantiago/redshift-gui.git
cd redshift-gui
python3 main.py- Activá el switch "Activar Redshift" para aplicar el filtro.
- Ajustá temperatura y brillo con los sliders; los cambios se aplican en tiempo real (con un pequeño debounce para no saturar el sistema mientras arrastrás).
- "Restaurar valores" vuelve a 6000K / 0.75.
- "Salir" (o cerrar la ventana) guarda tu configuración actual para la próxima vez.
Podés asignar un atajo global desde Menú → Preferencias → Métodos abreviados de teclado → Atajos personalizados, apuntando el comando a redshift-gui (si instalaste el .deb) o a python3 /ruta/a/redshift-gui/main.py (si corrés desde el código fuente).
Como la app reutiliza la misma instancia (Gtk.Application), si ya está abierta el atajo solo la enfoca en vez de duplicarla.
redshift-gui/
├── main.py # Punto de entrada
├── app.py # Gtk.Application, ciclo de vida
├── window.py # UI: sliders, switch, botones (sin lógica de negocio)
├── controller.py # Conecta UI <-> redshift_manager <-> config
├── redshift_manager.py # Única capa que ejecuta `redshift` via subprocess
├── config.py # Persistencia en ~/.config/redshift-gui/config.json
├── packaging/debian/ # Estructura para armar el paquete .deb
├── build_deb.sh # Script para generar el .deb
└── README.md
Arquitectura en capas: la UI (window.py) no sabe nada de Redshift ni de subprocess; solo dispara callbacks. El controller.py orquesta redshift_manager.py (ejecución de comandos) y config.py (persistencia). Esto permite testear la lógica de Redshift de forma aislada y cambiar la UI sin tocar el resto.
- Cada aplicación de color usa
redshift -P -O <temp> -b <brillo>. El flag-Presetea las rampas de gamma atómicamente antes de aplicar el nuevo valor, evitando que ajustes sucesivos se acumulen sobre el gamma ya cargado. - Los cambios de slider tienen un debounce de 150ms (
GLib.timeout_add) para no disparar un procesoredshiftpor cada píxel de arrastre. - La configuración persiste en
~/.config/redshift-gui/config.json.
| Problema | Causa probable | Solución |
|---|---|---|
| "Redshift no está instalado" | Falta el binario | sudo apt install redshift |
ModuleNotFoundError: No module named 'gi' |
Faltan bindings de GTK | sudo apt install python3-gi gir1.2-gtk-3.0 |
| Pantalla se pone negra | Versión vieja sin -P, o proceso redshift colgado |
redshift -x y actualizar redshift_manager.py |
| Ventana se abre vacía | Falta self.show_all() en window.py |
Ya corregido en este repo |
MIT — ver LICENSE.
Lautaro Subeldia