🦀 Rustile
Rustile es un gestor de ventanas dinámico (Tiling Window Manager) inspirado en Qtile, escrito completamente en Rust utilizando el protocolo X11 mediante la biblioteca x11rb.
✨ Características
- Tiling Dinámico: Organización automática de ventanas en columnas y stacks.
- Seguridad de Memoria: Gracias a Rust, olvida los errores de segmentación comunes en otros WMs.
- Configuración en Rust: Configura tu WM con la potencia de un lenguaje compilado.
- Protocolo Moderno: Implementación de
WM_DELETE_WINDOWpara cierres elegantes de aplicaciones. - Ventanas Flotantes: Detección automática de diálogos y utilidades mediante
_NET_WM_WINDOW_TYPE. - Ligero y Rápido: Sin dependencias pesadas, usando
xkeysympara una gestión de teclado eficiente y tipada.
🚀 Inicio Rápido
Requisitos previos
Necesitas tener instalado Rust y las bibliotecas de desarrollo de X11 en tu sistema:
# En Debian/Ubuntu
[]
= "0.1.0"
= { = "0.13", = ["all"] }
= "0.2"
🛠 Ejemplo de Configuración
Crea un archivo examples/config.rs o usa tu main.rs para definir la lógica de tu escritorio:
use connect;
use key;
use ;
⌨️ Atajos Sugeridos
| Combinación | Acción |
|---|---|
| Win + Enter,Abrir | Terminal |
| Win + J, | siguiente ventana |
| Win + K, | ventana anterior |
| Win + Shift + J, | Intercambiar ventana con la siguiente |
| Win + Shift + Q, | Cerrar ventana actual (Elegante) |
| Win + [1-9], | Cambiar de Workspace |
🗺️ Hoja de Ruta (Roadmap)
[x] Gestión de teclado con xkeysym.
[x] Soporte para el protocolo WM_DELETE_WINDOW.
[x] Detección de ventanas flotantes.
[ ] Soporte para múltiples monitores (Xinerama/RandR).
[ ] Intercambio físico de ventanas (Swap).
[ ] Barra de estado (StatusBar) integrada.
🤝 Contribuciones
¡Las contribuciones son bienvenidas! Siéntete libre de abrir un Issue o enviar un Pull Request. Este proyecto busca ser una base sólida y educativa para quienes deseen entender cómo funcionan los Window Managers desde cero con Rust. Licencia: MIT o Apache-2.0.