Una configuración moderna y optimizada de Qtile, un window manager dinámico para Linux escrito en Python. Esta configuración está diseñada para ser eficiente, visualmente atractiva y altamente funcional.
- Intervalos de widgets optimizados - Reducción del 40-50% en carga de CPU
- Cache de interfaz de red - Evita llamadas repetidas a
psutil - Autostart no bloqueante - Inicio más rápido usando
subprocess - Widgets inteligentes - Actualización basada en importancia y frecuencia
- 8 temas predefinidos - Gruvbox, Dracula, Nord, Solarized, One Dark, Ayu Dark, Catppuccin, Tokyo Night
- Sistema de colores consistente - Organizado por categorías (red, sistema, media, estado)
- Iconos Nerd Font - Iconografía moderna y legible
- Layouts personalizables - MonadTall, MonadWide, BSP, Matrix, RatioTile, Max
- Email (IMAP) - Monitoreo de correo con notificaciones
- Sistema - CPU, Memoria, Disco, Batería
- Red - WiFi/Ethernet con detección automática
- Multimedia - Volumen, Brillo, Bluetooth
- Estado - Actualizaciones de sistema, Layout actual, Teclado
- Scratchpads - Terminal, Calculadora y Notas flotantes
- Multi-monitor - Soporte automático con barras personalizadas
- Gestión de sesión - Menú rofi para shutdown, reboot, lock, logout
- Atajos de teclado extensos - Navegación eficiente y lanzamiento rápido de apps
- Qtile - Window manager base
- Python 3.8+ - Para ejecutar la configuración
- Picom - Compositor para efectos visuales
- Rofi - Lanzador de aplicaciones
- Feh - Gestor de fondos de pantalla
pip install psutil keyringsudo pacman -S qtile picom rofi feh brightnessctl \
kitty brave thunar vim scrot \
light-locker-command zenity evolution \
blueman-manager galculator mousepad- Hack Nerd Font - Fuente principal con iconos
# Instalar desde AUR
yay -S nerd-fonts-hack# Hacer backup de tu configuración actual (si existe)
mv ~/.config/qtile ~/.config/qtile.backup
# Clonar este repositorio
git clone https://github.com/tu-usuario/qtile-config.git ~/.config/qtile
# Instalar dependencias de Python
pip install --user psutil keyring- Copia todos los archivos a
~/.config/qtile/ - Asegúrate de que los permisos de ejecución están correctos:
chmod +x ~/.config/qtile/config.py chmod +x ~/.config/qtile/scripts/session_menu.sh
- Instala las dependencias necesarias
Esta configuración usa un archivo .env para datos sensibles y personalizaciones. Es importante configurarlo antes de usar Qtile.
-
Copia el archivo de ejemplo:
cp ~/.config/qtile/env.example ~/.config/qtile/.env
-
Edita el archivo
.envcon tus datos:nano ~/.config/qtile/.env -
Configuración mínima requerida:
QTILE_CONFIG_PATH: Ruta de tu configuración (ajusta a tu usuario)EMAIL_USER,EMAIL_SERVER: Si quieres usar el widget de emailBACKLIGHT_NAME,DISK_DEVICE: Ajusta según tu hardware
-
Configurar Email (Opcional):
Primero configura las variables en
.env:EMAIL_USER=tu-email@ejemplo.com EMAIL_SERVER=mail.ejemplo.com EMAIL_KEYRING_SERVICE=mail.ejemplo.comLuego guarda la contraseña en keyring:
python -c "import keyring; keyring.set_password('mail.ejemplo.com', 'tu-email@ejemplo.com', 'tu-contraseña')"
Nota: El archivo .env está en .gitignore y NO se subirá a git. Es seguro para guardar datos sensibles.
| Atajo | Acción |
|---|---|
Super + h/j/k/l |
Navegar entre ventanas |
Super + Shift + h/j/k/l |
Mover ventana |
Super + Ctrl + h/j/k/l |
Redimensionar ventana |
Super + Space |
Cambiar foco entre ventanas |
Super + Tab |
Cambiar layout |
Super + w |
Cerrar ventana |
| Atajo | Acción |
|---|---|
Super + Return |
Terminal (kitty) |
Super + b |
Navegador (brave) |
Super + e |
Explorador de archivos (thunar) |
Super + m |
Menú de aplicaciones (rofi) |
Super + Ctrl + m |
Menú de ventanas (rofi) |
Super + v |
Editor de texto (vim) |
Super + s |
Captura de pantalla |
| Atajo | Acción |
|---|---|
Super + y |
Terminal flotante |
Super + u |
Calculadora |
Super + i |
Notas (mousepad) |
| Atajo | Acción |
|---|---|
Super + 1-9 |
Cambiar a grupo |
Super + Shift + 1-9 |
Mover ventana a grupo |
| Atajo | Acción |
|---|---|
Super + x |
Menú de sesión |
Super + Ctrl + r |
Recargar configuración |
Super + Ctrl + q |
Cerrar Qtile |
Super + r |
Ejecutar comando |
Super + f |
Pantalla completa |
Super + t |
Ventana flotante |
| Atajo | Acción |
|---|---|
XF86AudioMute |
Silenciar/Activar audio |
XF86AudioLowerVolume |
Bajar volumen |
XF86AudioRaiseVolume |
Subir volumen |
XF86MonBrightnessUp |
Aumentar brillo |
XF86MonBrightnessDown |
Disminuir brillo |
La configuración incluye 8 temas predefinidos:
- Catppuccin (default) - Moderno y suave
- Gruvbox - Tono cálido y acogedor
- Dracula - Oscuro y vibrante
- Nord - Frío y minimalista
- Solarized Dark - Clásico y legible
- One Dark - Inspirado en Atom
- Ayu Dark - Profesional y elegante
- Tokyo Night - Nocturno y moderno
Edita ~/.config/qtile/.theme y escribe el nombre del tema:
echo "dracula" > ~/.config/qtile/.themeLuego recarga la configuración: Super + Ctrl + r
En src/config.py, cambia:
_use_random_theme = Trueqtile/
├── config.py # Archivo principal de configuración
├── env.example # Plantilla de variables de entorno
├── .env # Variables de entorno (NO se sube a git)
├── .gitignore # Archivos ignorados por git
├── actions.md # Lista de ideas y mejoras
├── MEJORAS.md # Documentación de mejoras implementadas
├── README.md # Este archivo
├── scripts/
│ └── session_menu.sh # Script de menú de sesión
└── src/
├── app_rules.py # Reglas para asignar apps a grupos
├── autostart.py # Aplicaciones al inicio
├── colors.py # Paletas de colores
├── config.py # Configuración base (mod, terminal, etc.)
├── functions.py # Funciones auxiliares
├── groups.py # Grupos de trabajo y scratchpads
├── keys.py # Atajos de teclado
├── layouts.py # Layouts de ventanas
├── screens.py # Configuración de pantallas
├── status_bar.py # (Reservado para futuras mejoras)
└── widgets.py # Widgets de la barra de estado
El archivo .env contiene todas las configuraciones sensibles y personalizables:
- Email: Credenciales para el widget IMAP
- Paths: Rutas de configuración, screenshots, wallpapers
- Aplicaciones: Terminal, navegador, editor, etc.
- Hardware: Backlight, disco, interfaz de red
- Tema: Tema por defecto y configuración aleatoria
- Display: Configuración de monitores (xrandr)
- Sesión: Comando de bloqueo de pantalla
Ver env.example para todas las opciones disponibles.
Método recomendado: Edita el archivo .env:
TERMINAL=alacritty
BROWSER=firefox
FILE_MANAGER=nautilus
EDITOR=code
EMAIL_CLIENT=thunderbirdAlternativa: También puedes editar src/config.py directamente, pero usar .env es más limpio y seguro.
Las aplicaciones se pueden asignar automáticamente a grupos específicos cuando se abren. Esto se configura en src/app_rules.py.
Cómo funciona:
- Cuando abres una aplicación, Qtile busca su
wm_class - Si hay una regla definida, la aplicación se mueve automáticamente al grupo correspondiente
- También cambia automáticamente a ese grupo
Para encontrar el wm_class de una aplicación:
xprop WM_CLASS
# Haz click en la ventana de la aplicaciónPara configurar reglas:
Edita src/app_rules.py y agrega tu aplicación al diccionario app_rules:
app_rules = {
'brave': '2', # Brave en grupo 2
'Sublime_text': '3', # Sublime Text en grupo 3
'code': '3', # VS Code en grupo 3
# ... más aplicaciones
}Grupos disponibles: 1-9 (corresponden a Super+1 a Super+9)
Ejemplos preconfigurados:
- Navegadores → Grupo 2
- Editores de código → Grupo 3
- Terminales → Grupo 1
- Gestores de archivos → Grupo 4
- Multimedia → Grupo 5
- Office → Grupo 6
- Email → Grupo 7
- Chat → Grupo 8
Edita src/widgets.py para personalizar widgets:
- Agregar/quitar widgets
- Cambiar colores y estilos
- Ajustar intervalos de actualización
Edita src/layouts.py para:
- Cambiar gaps entre ventanas
- Modificar colores de bordes
- Agregar/quitar layouts
- Verifica que Qtile esté ejecutándose:
qtile check - Recarga la configuración:
Super + Ctrl + r - Verifica que el archivo
.envexiste y está bien configurado
- Verifica dependencias:
pip list | grep psutil - Revisa logs:
tail -f ~/.local/share/qtile/qtile.log - Verifica que las variables en
.envestén correctas
- Verifica que
EMAIL_USERyEMAIL_SERVERestén configurados en.env - Asegúrate de haber configurado la contraseña en keyring
- Si no quieres usar email, el widget se ocultará automáticamente
- Verifica que el archivo
.themeexiste - O configura
DEFAULT_THEMEen.env - Asegúrate de recargar la configuración después de cambiar
- Verifica que el archivo
.envtenga formato correcto (clave=valor) - No debe haber espacios alrededor del
= - Comentarios deben empezar con
#
- Limpia el cache: Importa
clear_network_cache()desdesrc.functions - O reinicia Qtile
Esta configuración está optimizada para:
- 40-50% menos carga de CPU en widgets
- Inicio más rápido con autostart no bloqueante
- Menor uso de memoria con cache inteligente
- Actualizaciones eficientes según importancia
Ver MEJORAS.md para detalles técnicos.
Las contribuciones son bienvenidas! Siéntete libre de:
- Reportar bugs
- Sugerir mejoras
- Enviar pull requests
Este proyecto está bajo la Licencia MIT. Siéntete libre de usar, modificar y distribuir.
- Qtile - El window manager base
- Nerd Fonts - Iconografía
- Comunidad de r/qtile - Inspiración y ayuda
Nota: Agrega screenshots de tu configuración aquí para mostrar cómo se ve.
⭐ Si te gusta esta configuración, considera darle una estrella en GitHub!