IMPORTANT: This project is for educational and ethical cybersecurity purposes only.
Este repositorio es una colección completa de dotfiles y scripts de automatización de post-instalación para un entorno de escritorio Linux basado en Bspwm, el gestor de ventanas en mosaico (tiling window manager) orientado a la productividad y la eficiencia de flujo de trabajo.
El proyecto está diseñado con un enfoque en la reproducibilidad y modularidad:
el script de instalación (install.sh) automatiza la configuración completa del
entorno desde cero, aplicando todos los archivos de configuración incluidos en
configs/ sin intervención manual. La estructura sigue lineamientos de
DevSecOps aplicados al mundo del ricing Linux, garantizando que ninguna
credencial, token ni configuración sensible específica del host se publique en
el repositorio.
El entorno integra Bspwm como gestor de ventanas, Sxhkd como daemon de atajos de teclado, Polybar como barra de estado modular, Rofi como lanzador de aplicaciones, Picom como compositor con efectos visuales, y Kitty como emulador de terminal de alta performance.
- Gestor de ventanas en mosaico Bspwm con configuración (
bspwmrc) completamente personalizada, incluyendo reglas de ventana, nodos, espacios de trabajo y comportamientos por aplicación. - Daemon de hotkeys Sxhkd con mapa de atajos de teclado ergonómico
documentado en
docs/commands.md, cubriendo gestión de ventanas, espacios, lanzador de apps, capturas y más. - Barra de estado Polybar con módulos personalizados: red, batería, volumen, fecha/hora, espacio de trabajo activo y scripts auxiliares modulares.
- Lanzador de aplicaciones Rofi configurado con el tema
rounded-purple-dark, activable con selector interactivo (rofi-theme-selector → Alt-a). - Compositor Picom con efectos de transparencia, sombras y animaciones
configurables desde su propio archivo en
configs/. - Emulador de terminal Kitty con fuente, esquema de color y layout personalizados para máxima legibilidad en el entorno de trabajo.
- Shell Zsh con configuración dedicada en
configs/, incluyendo aliases, prompt personalizado y plugins de productividad. - Script de instalación automatizado (
install.sh) que aplica todos los dotfiles, instala dependencias y configura el entorno de forma reproducible. - Wallpaper incluido (
data/wallpapers/Fondo.png) como referencia visual del aspecto final del escritorio. - Documentación de atajos en
docs/commands.mdcon referencia completa del flujo de trabajo en Bspwm.
| Componente | Herramienta | Rol en el entorno |
|---|---|---|
| Window Manager | Bspwm | Gestión de ventanas en árbol binario de mosaico |
| Hotkey Daemon | Sxhkd | Manejo de atajos de teclado globales |
| Status Bar | Polybar | Barra de estado modular y scriptable |
| App Launcher | Rofi | Lanzador de aplicaciones y selector de ventanas |
| Compositor | Picom | Transparencias, sombras y animaciones |
| Terminal | Kitty | Emulador de terminal GPU-acelerado |
| Shell | Zsh | Shell interactivo con configuración personalizada |
| Scripting | Bash / Shell | Scripts de instalación y automatización |
| Licencia | GPL-3.0 | Copyleft — libre redistribución y modificación |
- Distribución Linux con soporte para Xorg (Debian, Arch, Kali, Parrot, etc.)
- Paquetes base:
bspwm,sxhkd,polybar,rofi,picom,kitty,zsh - Git instalado en el sistema
git clone https://github.com/devsebastian44/Bspwm-linux.git
cd Bspwm-linuxchmod +x scripts/install.sh./scripts/install.sh
⚠️ Recomendación: Revisa el contenido descripts/install.shantes de ejecutarlo para comprender qué cambios realizará sobre tu sistema de paquetes y directorio de usuario. Los dotfiles son aplicados a~/.config/.
# Recargar configuración de bspwm sin reiniciar sesión
bspc wm -r
# O bien cerrar sesión y volver a iniciar con Bspwm como WMSi prefieres aplicar solo partes del entorno:
# Copiar configuración de Bspwm
cp configs/bspwmrc ~/.config/bspwm/bspwmrc
chmod +x ~/.config/bspwm/bspwmrc
# Copiar configuración de Sxhkd
cp configs/sxhkdrc ~/.config/sxhkd/sxhkdrc
# Copiar configuración de Polybar
cp -r configs/polybar ~/.config/polybar
# Copiar configuración de Rofi
cp -r configs/rofi ~/.config/rofi
# Copiar configuración de Kitty
cp configs/kitty.conf ~/.config/kitty/kitty.conf
# Copiar configuración de Picom
cp configs/picom.conf ~/.config/picom.conf
# Copiar configuración de Zsh
cp configs/.zshrc ~/.zshrcSi usas un display manager (LightDM, SDDM, etc.), selecciona Bspwm como
sesión de escritorio al iniciar sesión. Si usas .xinitrc:
# Al final de ~/.xinitrc
exec bspwm# Abrir selector de temas interactivo
rofi-theme-selector
# Seleccionar: rounded-purple-dark → confirmar con Alt-aConsulta la referencia completa en docs/commands.md.
Los atajos más frecuentes inferidos de la configuración típica de Bspwm + Sxhkd:
| Acción | Atajo |
|---|---|
| Abrir terminal (Kitty) | Super + Return |
| Abrir lanzador (Rofi) | Super + d |
| Cerrar ventana activa | Super + q |
| Alternar modo mosaico / flotante | Super + Space |
| Cambiar de espacio de trabajo | Super + 1..9 |
| Mover ventana a otro espacio | Super + Shift + 1..9 |
| Recargar Sxhkd | Super + Escape |
| Recargar configuración Bspwm | Super + Shift + r |
El proyecto cuenta con pruebas locales para asegurar que el entorno puede validarse sin dependencias externas ni credenciales:
# Ejecutar verificación de sintaxis de scripts de forma segura
bash tests/test_install.shEsto ejecutará una prueba "seca" (dry-run) sobre los archivos principales para confirmar su validez antes de hacer modificaciones en el entorno real.
¡Las contribuciones son bienvenidas para mejorar este portafolio y entorno! Para mantener un código de calidad:
- Realiza un Fork del repositorio.
- Clona tu fork y prueba el código localmente sin acceso externo (usa mocks si añades funcionalidades).
- Revisa la guía completa en CONTRIBUTING.md para detalles sobre pull requests, ejecución local y configuración del
.env.example. - El repositorio cuenta con un pipeline de CI/CD en GitHub Actions que validará automáticamente la instalación, pruebas y el linting de tus Pull Requests.
Bspwm-linux/
│
├── configs/ # Archivos de configuración de cada herramienta
│ ├── bspwmrc # Configuración principal de Bspwm (reglas, workspaces)
│ ├── sxhkdrc # Mapa completo de atajos de teclado (Sxhkd)
│ ├── polybar/ # Configuración de barras y módulos de Polybar
│ │ ├── config.ini # Configuración principal de Polybar
│ │ └── scripts/ # Scripts auxiliares para módulos (red, volumen, etc.)
│ ├── rofi/ # Temas y configuración de Rofi
│ │ └── rounded-purple-dark/ # Tema visual activo del lanzador
│ ├── picom.conf # Configuración del compositor (transparencias, sombras)
│ ├── kitty.conf # Configuración del emulador de terminal Kitty
│ └── .zshrc # Configuración del shell Zsh (aliases, prompt, plugins)
│
├── data/
│ ├── wallpapers/
│ │ └── Fondo.png # Wallpaper de referencia del escritorio
│ └── packages/
│ └── .gitkeep # Carpeta para paquetes .deb (excluidos del repo)
│
├── docs/
│ ├── commands.md # Referencia completa de atajos de teclado Bspwm
│ └── ... # Tutoriales y notas adicionales del entorno
│
├── scripts/
│ └── install.sh # Orquestador de instalación automatizada del entorno
│
├── .gitignore # Excluye: logs, .env, *.pem, *.key, paquetes binarios
├── LICENSE # GNU General Public License v3.0
└── README.md # Documentación principal del proyecto
La personalización de entornos Linux puede implicar la ejecución de scripts con permisos elevados y la modificación de configuraciones del sistema. Este proyecto sigue principios de mínimo privilegio y auditoría del código:
- Revisar
install.shantes de ejecutar: El instalador modifica el directorio de usuario (~/.config/) y posiblemente instala paquetes del sistema. Es recomendable leerlo íntegramente antes de ejecutarlo en cualquier entorno. - Sin credenciales en el repositorio: El
.gitignoreexcluye explícitamente.env,*.pem,*.key,credentials.jsonysecrets.yaml, previniendo filtraciones de configuraciones personales del host. - Sin paquetes binarios: Los archivos
*.deb,*.tar.gzy*.zipestán excluidos del repositorio mediante.gitignore, manteniendo el repo limpio y auditables solo los archivos de configuración de texto plano.
Mejoras sugeridas a partir de la arquitectura y herramientas detectadas:
- Soporte multi-distribución en
install.sh: Añadir detección automática del gestor de paquetes (apt,pacman,dnf) para hacer el instalador portable entre Debian, Arch y Fedora sin modificación manual. - Módulos adicionales de Polybar: Integrar módulos para clima, estado de GPU, temperatura del sistema y notificaciones dunst.
- Script de rollback: Crear un
uninstall.shque restaure los dotfiles originales del usuario en caso de querer revertir el entorno. - Temas adicionales de Rofi: Incluir variantes de color del tema
rounded-purple-darkpara adaptar la paleta al wallpaper activo. - Configuración de Dunst: Añadir daemon de notificaciones con estilo coherente al resto del entorno visual.
- Soporte Wayland: Migración experimental del entorno a Hyprland/Sway como alternativa a Bspwm en Wayland, manteniendo la misma filosofía de configuración modular.
- Tests de integridad en CI/CD: Expandir la batería de tests en GitHub Actions
para validar la sintaxis de
bspwmrc,sxhkdrcy scripts Bash conshellchecken cada push. - Gestión de múltiples perfiles: Sistema de perfiles intercambiables (trabajo, gaming, minimal) con scripts de activación rápida.
Este proyecto está distribuido bajo la licencia GNU General Public License v3.0 (GPL-3.0).
La GPL-3.0 garantiza las libertades de uso, estudio, distribución y modificación, exigiendo que cualquier trabajo derivado se distribuya bajo los mismos términos de libertad.
Copyright © 2025 Sebastián Zhunaula (devsebastian44)
|
Sebastián Zhunaula Full-Stack Developer · Linux Enthusiast · DevSecOps |
Este proyecto forma parte de un portafolio de desarrollo y personalización de entornos Linux profesionales, demostrando conocimiento avanzado del ecosistema de herramientas de escritorio en sistemas Unix, scripting de automatización y principios de DevSecOps aplicados a proyectos de configuración personal.
