Narrative

Build the nest, don’t copy it

“Like the hornero, build your digital nest: robust, beautiful, and tailored to you.”

The hornero nest

HorneroConfig is named after the hornero, the bird that builds robust nests adapted to its environment. Each layer — from chezmoi to shell — plays a structural role: isolated in development, integrated in use.

The philosophy is modular and resilient: graceful degradation without optional dependencies, a single source of truth in ~/.cache/dots/ and ~/.config/, and automation that turns an empty system into a productive desktop.

Live stack, not a config collection

The stack unites Hyprland/Wayland with Quickshell (QML + Hornero C++ plugin), GPU-accelerated Kitty, Zsh/Powerlevel10k, and ~46 dots-* scripts. Each of the 22 rices is a self-contained directory with config.json, backgrounds/, and preview.png — no apply.sh.

Chezmoi orchestrates templates and idempotent hooks. Install with chezmoi init --apply ulises-jeremias, then manage appearance with dots appearance and Smart Colors.

Color with purpose

Smart Colors analyzes the wallpaper with python-materialyoucolor, detects luminance for light/dark mode, maps semantics (red→error, green→success), and optimizes WCAG contrast. It generates once and caches scheme.json (Material Design 3) plus variants for Hyprland, shell, and GTK.

When you change wallpaper, the Quickshell Colours service regenerates the palette and applies it atomically to bar, borders, kitty, and lock — no hardcoded theme values.

22themed rices
~46dots-* scripts
1install command
0manual drift (chezmoi)

Architecture

Layered stack — shell · compositor · terminal · scripts · chezmoi

Five isolatable layers that chezmoi unites into an atomic system. Bottom-up: declarative foundation (chezmoi) → automation (scripts) → render (terminal + compositor) → interaction (shell). Tab or use screen readers to explore each layer.

HorneroConfig layers diagramVertical diagram of five layers: shell (zsh/p10k) on top, then compositor (Hyprland + Quickshell), terminal (Kitty), scripts (dots-*) and chezmoi as base. Arrows show each upper layer depends on the lower; the entire stack is distributed via chezmoi.shell — Fluid daily interactionZsh + Powerlevel10k instant prompt. config.d/plugins, keybindings, paths. handlr, git, ssh, modular .zshrczshshellFluid daily interactioncompositor — Modern animated Wayland desktopHyprland + per-rice animation profiles. Quickshell: bar, launcher, dashboard, notifications, OSD. Hyprlock + wallpaper flowhyprlandcompositorModern animated Wayland desktopterminal — GPU rendering and observabilityKitty + fontconfig + ligatures. btop, cava, fastfetch, yazi, tmux. M3 palette via ~/.cache/dots/smart-colors/kittyterminalGPU rendering and observabilityscripts — Orchestration of ~46 dots-* utilitiesdots-* with EasyOptions and set -euo pipefail. dots appearance, dots-wallpaper-set, dots-rice. dots-smart-colors, config.json, python-materialyoucolordotsscriptsOrchestration of ~46 dots-* utilitieschezmoi — Declarative, idempotent foundation.chezmoiroot → home/. .chezmoi.toml.tmpl + run_onchange_* hooks. State in ~/.config/.current_rice and ~/.cache/dots/chezmoichezmoiDeclarative, idempotent foundation

chezmoi

Declarative, idempotent foundation

  • .chezmoiroot → home/
  • .chezmoi.toml.tmpl + run_onchange_* hooks
  • State in ~/.config/.current_rice and ~/.cache/dots/

scripts

Orchestration of ~46 dots-* utilities

  • dots-* with EasyOptions and set -euo pipefail
  • dots appearance, dots-wallpaper-set, dots-rice
  • dots-smart-colors, config.json, python-materialyoucolor

terminal

GPU rendering and observability

  • Kitty + fontconfig + ligatures
  • btop, cava, fastfetch, yazi, tmux
  • M3 palette via ~/.cache/dots/smart-colors/

compositor

Modern animated Wayland desktop

  • Hyprland + per-rice animation profiles
  • Quickshell: bar, launcher, dashboard, notifications, OSD
  • Hyprlock + wallpaper flow

shell

Fluid daily interaction

  • Zsh + Powerlevel10k instant prompt
  • config.d/plugins, keybindings, paths
  • handlr, git, ssh, modular .zshrc
Como leer el diagrama
  • Vertical flow: from foundation (chezmoi) to surface (shell). Each layer delegates downward.
  • Chezmoi: plantillas, run_onchange y external.toml — source of truth declarativo.
  • Scripts: dots-* idempotentes con set -euo pipefail y EasyOptions.
  • Terminal + Compositor: Kitty/Quickshell/Hyprland consumen la misma M3 palette.
  • Shell: Zsh/P10k es la interfaz humana sobre toda la pila.

Smart Colors

From wallpaper to apps in one continuous pipeline

Four stages: wallpaper → extraction → palette → apps. Pause, replay, or use the static fallback. Honorsprefers-reduced-motion.

Wallpaper

Image curated per rice in backgrounds/

dots appearance / dots-wallpaper-set records the change and triggers the pipeline.

Extraction

Quantization and luminance analysis

python-materialyoucolor extracts dominants, computes luminance, and decides light/dark.

Palette

Material Design 3 scheme.json

Generates primary/secondary/tertiary/error/neutral in ~/.cache/dots/smart-colors/.

Apps

Atomic application across the desktop

Quickshell Colours, Hyprland, Kitty, GTK, and Hyprlock consume the same source.

↳ Full pipeline visible without animation. Enable the animated view with “Show animation” if your system allows it.

  1. Wallpaper

    Image curated per rice in backgrounds/

    dots appearance / dots-wallpaper-set records the change and triggers the pipeline.

  2. Extraction

    Quantization and luminance analysis

    python-materialyoucolor extracts dominants, computes luminance, and decides light/dark.

  3. Palette

    Material Design 3 scheme.json

    Generates primary/secondary/tertiary/error/neutral in ~/.cache/dots/smart-colors/.

  4. Apps

    Atomic application across the desktop

    Quickshell Colours, Hyprland, Kitty, GTK, and Hyprlock consume the same source.

Step 1 of 4: Wallpaper — Image curated per rice in backgrounds/

License verification

Verified licenses — MIT + GPL-3.0 with attribution

This site and HorneroConfig share author and base MIT license, with an attributed exception for Quickshell adapted from caelestia-dots/shell (GPL-3.0). Verify before redistributing binaries or wallpapers.

website (this site)

MITLICENSE — Copyright (c) 2025-2026 Ulises Jeremias Cornejo Fandos

Dotfiles feature content and /dotfiles page under the site MIT license.

HorneroConfig dotfiles

MITgithub.com/ulises-jeremias/dotfiles/LICENSE (2019-2025)

dots-* scripts, hypr/kitty/zsh/tmux configs, rices, and docs. MIT-compatible reuse.

Quickshell shell (adapted)

GPL-3.0caelestia-dots/shell by soramanew — GPL-3.0

Quickshell implementation adapted from caelestia-dots/shell. Redistributing derived binaries requires GPL-3.0 compliance and source.

Screenshots and assets

MIT (dotfiles) — wallpapers varypublic/media/dotfiles/* from dotfiles/static

First-party captures are MIT. Individual rice wallpapers may carry their own licenses — verify before redistribution.

Local verification 2026-08-07

  • website/LICENSE exists — MIT Copyright (c) 2025-2026 Ulises Jeremias Cornejo Fandos — valid.
  • dotfiles/LICENSE (sibling repo) — MIT 2019-2025 — same author — compatible.
  • caelestia-dots/shell referenced in dotfiles README with attribution and GPL-3.0 — respected in /dotfiles.
  • Screenshots dotfiles/static/* — MIT — safe for placeholders; per-rice wallpapers — verify individually.
  • No GPL binary is redistributed on this site (docs/placeholder only) — source clause not triggered; if you embed the Hornero C++ plugin, publish source.

Tools: cat LICENSE + manual README review + pnpm knip with no extra conflicting licenses. This page is not legal advice.

Ready to nest?

Clone, apply a rice and let Smart Colors handle the rest. Your nest, your rules.