Los dotfiles son ese proyecto que nunca se termina, pero cada vez que los miro veo reflejada mi forma de trabajar. Arrancaron como un puñado de configs sueltas y terminaron siendo un ecosistema con theme manager propio, dual-backend X11/Wayland, y scripts que me salvan horas todos los días.

Mi sistema principal es Arch Linux con Qtile como window manager. Windows 11 está en otro disco y lo uso exclusivamente para laburo y cosas puntuales de la facultad. El día a día pasa acá, en la terminal.

La arquitectura del entorno

El setup está diseñado alrededor de tres principios: keyboard-driven (control total sin mouse), estética unificada (tema cyberpunk oscuro con acentos rojos, consistente en todos los componentes), y modularidad (cada pieza es independiente y fácil de modificar).

La columna vertebral es Qtile, un window manager escrito en Python que soporta tanto X11 como Wayland. Uso los dos backends según el día y el momento, y el sistema detecta automáticamente cuál está corriendo para arrancar los componentes correspondientes:

  • Barra: Polybar en X11, Waybar en Wayland
  • Compositor: Picom (X11) / wlroots nativo (Wayland)
  • Wallpaper: Nitrogen (X11) / Qtile nativo (Wayland)
  • Lock screen: betterlockscreen (X11) / swaylock (Wayland)
  • Screenshots: Flameshot (X11) / grim + slurp (Wayland)

El stack completo

WM:          Qtile (Python) — X11 + Wayland
Barra:       Polybar (X11) / Waybar (Wayland)
Terminal:    Kitty (X11 + Wayland nativo)
Shell:       Zsh + powerlevel10k
Launcher:    Rofi (X11 + Wayland nativo)
Compositor:  Picom (X11) / wlroots (Wayland)
Notifs:      Dunst + Rofi notification center
Editores:    Neovim (LazyVim) / Sublime Text
File Mgr:    Thunar
Info:        Fastfetch
AI:          opencode (skills personalizadas)
Cloud:       Proton Drive
Automation:  n8n

Todo está sincronizado via symlinks desde ~/dotfiles/ a sus ubicaciones del sistema. Un solo install.sh levanta el entorno completo desde cero.

El theme manager

Una de las partes que más me gusta del proyecto es el sistema de temas dinámicos. theme-switch.sh es un script que, a partir de un archivo theme.json, genera configuraciones de colores para todos los componentes simultáneamente: Polybar, Waybar, Kitty, Zsh, Qtile, GTK, incluso los colores de opencode.

# Cambiar de tema con un solo comando
theme city-sci-fi

# El script actualiza:
# - polybar/colors.ini  → barra X11
# - waybar/theme.css    → barra Wayland
# - kitty/colors.conf   → terminal
# - ~/.zsh_colors       → prompt
# - gtk-3.0/gtk.css     → apps GTK
# - qtile/screens.py    → wallpaper
# - opencode.jsonc      → colores del agente

Tiene 8 temas guardados y puedo switchear al toque. El flujo de datos está diagramado en los docs del repo, pero en criollo: un solo archivo fuente propaga colores a todos lados.

Para qué uso este entorno

Laburo en ciberseguridad del lado de blue team, DFIR e IAM. Mi día a día incluye análisis de logs, threat hunting, automatización con scripts y administración de identidades. Este setup me permite tener todo lo que necesito a un par de keybindings de distancia: terminal siempre lista, herramientas de red, editores configurados, y un flujo de trabajo sin interrupciones.

El repo también incluye herramientas específicas para el lab: BlackArch repos (opcional), Ollama con modelos locales, y scripts de automatización con n8n.

Lo que aprendí manteniéndolo

Si tuviera que rescatar tres lecciones:

  • La modularidad paga. Separar cada componente en su propio directorio con su propia config hace que cambiar una pieza no rompa las otras. Cuando migré a Wayland, solo tuve que agregar la carpeta waybar/ sin tocar el resto.
  • Documentá mientras construís. Los docs del repo (docs/) los fui escribiendo a medida que armaba cada pieza. Me salvaron cuando volví a instalar todo desde cero.
  • Un theme manager bien pensado vale oro. Poder cambiar la apariencia completa del sistema con un comando no es un lujo estético: es tener el control de cómo se ve y se siente tu herramienta de trabajo principal.

El repo está en GitHub si alguien quiere mirar el código, las configs, o robarme ideas para sus propios dotfiles.