Hyprland¶
Índice¶
- Resumen
- Archivos
- hyprland.lua — Configuración principal
- keybinds.lua — Atajos de teclado
- animations.lua
- rules.lua
- Scripts
- Notas y recursos
Resumen¶
El directorio ~/.config/hypr/ contiene la configuración completa del compositor Hyprland (v0.55+). Hyprland usa una API Lua para la configuración, lo que permite lógica programática (bucles, funciones, condiciones) en lugar de un formato de configuración estático.
La configuración está dividida en varios archivos Lua para mantenerla organizada.
Archivos¶
| Archivo | Propósito |
|---|---|
hyprland.lua |
Configuración principal — monitor, apariencia, reglas generales |
keybinds.lua |
Todos los atajos de teclado |
animations.lua |
Definición de animaciones de ventanas |
rules.lua |
Reglas de ventanas (float, tamaño, workspace) |
menu.conf |
Configuración auxiliar (contextual) |
scripts/ |
Scripts de shell invocados por los keybinds |
hyprland.lua — Configuración principal¶
Variables globales¶
Sección general¶
Controla el comportamiento básico del compositor:
| Parámetro | Valor | Descripción |
|---|---|---|
gaps_in |
4 |
Espacio entre ventanas (px) |
gaps_out |
8 |
Espacio entre ventanas y borde de pantalla (px) |
border_size |
2 |
Grosor del borde de ventanas (px) |
resize_on_border |
true |
Permite redimensionar arrastrando el borde |
allow_tearing |
true |
Permite tearing para menor latencia en juegos |
layout |
dwindle |
Layout de ventanas por defecto |
Colores de borde¶
active_border = { colors = {"rgba(89b19eee)", "rgba(33473dee)"}, angle = 45 }
inactive_border = "rgba(2a2a2a00)"
El borde activo usa un gradiente de 45° con los colores $accent (#89B19E) → $primary (#33473D) de la paleta del sistema.
Variables de entorno Qt¶
QT_QPA_PLATFORMTHEME=qt6ct permite que apps Qt (ej. qt6ct/Kvantum) respeten el tema oscuro configurado. No debe forzarse QT_STYLE_OVERRIDE (ej. breeze) — eso sobreescribe el style=kvantum configurado en qt6ct.conf sin importar lo que diga el usuario, causando texto negro illegible sobre fondos oscuros en apps como Dolphin.
Cambios en estas variables requieren relogin/reinicio de Hyprland para tomar efecto — quedan exportadas al entorno de la sesión gráfica completa, no solo al proceso que las lee.
exec-once¶
Comandos que se ejecutan una sola vez al iniciar Hyprland:
-- Ejemplos típicos
exec-once = ags run ~/.config/ags/app.ts -i ags-bar
exec-once = bash ~/.config/wallman/restore.sh
exec-once = /usr/lib/polkit-kde-authentication-agent-1
exec-once = wl-paste --type text --watch cliphist store
keybinds.lua — Atajos de teclado¶
Todos los atajos usan la función hl.bind(combo, action, opts?).
Wrapper Lua de dispatch (hl.dsp.*)
Este fork de Hyprland envuelve los comandos dispatch del IPC en un intérprete Lua que espera sintaxis de llamada a función (hl.dsp.focus({workspace="2"})), no la sintaxis clásica dispatch workspace 2. Cualquier script externo (incluido AGS) que necesite despachar comandos debe usar hyprctl dispatch 'hl.dsp.<fn>({...})' con argumentos como string Lua entre comillas — el método nativo AstalHyprland.dispatch(dispatcher, args) envía la sintaxis clásica y falla con ')' expected near '2'.
Aplicaciones¶
| Atajo | Acción |
|---|---|
SUPER + Return |
Kitty (terminal) |
SUPER + T |
Kitty (terminal) |
CTRL+ALT + T |
Kitty (terminal) |
SUPER + E |
Thunar (explorador de archivos) |
SUPER + W |
Firefox |
SUPER + C |
Command Center (AGS) |
SUPER + X |
Kate (editor de texto) |
SUPER + I |
gnome-control-center |
CTRL+SHIFT + Escape |
gnome-system-monitor |
Lanzador¶
| Atajo | Acción |
|---|---|
SUPER + SUPER_L (soltar) |
Rofi (drun) — toggle |
Super_L (soltar) |
rofi-toggle.sh |
Ventanas¶
| Atajo | Acción |
|---|---|
SUPER + Q |
Cerrar ventana activa |
ALT + F4 |
Cerrar ventana activa |
SUPER+SHIFT+ALT + Q |
hyprctl kill (selector de ventana) |
SUPER+ALT + Space |
Flotar/desflotar ventana |
SUPER + D |
Maximizar (toggle) |
SUPER + F |
Pantalla completa (toggle) |
SUPER + P |
Pin (mantener en todos los workspaces) |
Foco y movimiento¶
| Atajo | Acción |
|---|---|
SUPER + ←/→/↑/↓ |
Mover foco |
SUPER+SHIFT + ←/→/↑/↓ |
Mover ventana |
SUPER + Tab |
Siguiente ventana |
Workspaces¶
| Atajo | Acción |
|---|---|
SUPER + 1-9 |
Ir a workspace 1-9 |
SUPER + 0 |
Ir a workspace 10 |
SUPER+SHIFT + 1-9 |
Mover ventana a workspace 1-9 |
SUPER+ALT + 1-9 |
Mover ventana sin seguir |
CTRL+SUPER + ←/→ |
Workspace anterior/siguiente |
SUPER + S |
Scratchpad (toggle) |
Multimedia¶
| Atajo | Acción |
|---|---|
XF86AudioRaiseVolume |
Volumen +5% |
XF86AudioLowerVolume |
Volumen -5% |
XF86AudioMute |
Silenciar altavoz |
XF86AudioMicMute |
Silenciar micrófono |
SUPER+SHIFT + M |
Silenciar altavoz |
SUPER+ALT + M |
Silenciar micrófono |
XF86MonBrightnessUp/Down |
Brillo +/-5% |
SUPER+SHIFT + N/B/P |
Siguiente / anterior / play-pause |
Herramientas¶
| Atajo | Acción |
|---|---|
SUPER+SHIFT + S |
Captura de región |
Print |
Captura de pantalla completa |
CTRL + Print |
Guardar captura |
SUPER+SHIFT + C |
Color picker (hyprpicker) |
SUPER + V |
Historial del portapapeles |
SUPER + Period |
Selector de emojis |
SUPER + N |
Centro de notificaciones (AGS) — ags toggle -i ags-bar notif-center |
SUPER + ' |
Visor de keybinds (AGS) |
Sesión¶
| Atajo | Acción |
|---|---|
SUPER + L |
Bloquear pantalla (hyprlock) |
SUPER+SHIFT + L |
Suspender |
CTRL+ALT + Delete |
Menú de sesión (AGS PowerMenu) |
XF86PowerOff |
Menú de sesión (AGS PowerMenu) |
Nota: El botón de encendido físico está configurado para NO apagar directamente. Ver systemd-logind.
systemd-logind¶
Para evitar que el botón físico de encendido apague el equipo independientemente de AGS:
Sin esta configuración, logind apaga el equipo y AGS muestra el menú de sesión simultáneamente.
animations.lua¶
Define las animaciones de apertura, cierre y movimiento de ventanas. Usa el sistema de curvas de bezier de Hyprland.
rules.lua¶
Define reglas que se aplican automáticamente a ventanas según su clase o título:
- Ventanas flotantes por defecto (ej. diálogos de archivo, pavucontrol).
- Asignación automática a workspaces.
- Tamaño y posición inicial.
Scripts¶
Todos los scripts se encuentran en ~/.config/hypr/scripts/ y son ejecutables.
screenshot.sh¶
Captura de pantalla usando grim (captura Wayland) y slurp (selección de región).
| Argumento | Acción |
|---|---|
region |
Seleccionar región con slurp, guardar y copiar al portapapeles |
screen |
Pantalla completa, guardar y copiar |
save |
Guardar en ~/Pictures/Screenshots/ |
Las capturas se guardan en ~/Pictures/Screenshots/Screenshot_YYYY-MM-DD_HH.MM.SS.png y se notifican via notify-send.
Portapapeles y emojis: ahora en el Dashboard AGS
Los scripts clipboard.sh (rofi + cliphist) ya no existen; el historial del portapapeles y el selector de emojis viven en el Dashboard de AGS (SUPER+SHIFT+D → Cliphist / Emoji). emoji.sh sigue existiendo para el atajo SUPER+..
emoji.sh¶
Selector de emojis con rofi.
- Si no existe
~/.config/hypr/scripts/emojis.txt, lo genera con una lista de emojis comunes. - Muestra la lista en rofi.
- Copia el emoji seleccionado al portapapeles con
wl-copy. - Envía una notificación de confirmación.
powermenu.sh¶
Menú de sesión alternativo usando rofi puro (sin AGS). Opciones: Lock, Suspend, Logout, Reboot, Shutdown. Ejecuta los comandos correspondientes de loginctl/systemctl.
Este script coexiste con el
PowerMenu.tsxde AGS. El keybindSUPER+Escapeapunta a este script;CTRL+ALT+DELusa el de AGS.
rofi-toggle.sh¶
Hace toggle de rofi: si ya está corriendo lo cierra, si no lo abre. Loguea en /tmp/rofi-debug.log.
Wallpapers: gestionados por wallman
Los scripts init-wallpaper.sh y wallpaper.sh ya no existen. La restauración y selección de fondos la maneja wallman (~/.config/wallman/restore.sh en exec-once, y el selector desde el Dashboard AGS o wallman/wallpicker.sh). Ver Wallman.
Pantalla de bloqueo — hyprlock¶
Config estática en hyprlock.conf (widgets background, image, label, input-field; hyprlock no usa style.scss — es su propio formato). Se lanza vía el wrapper, no hyprlock directo (si no, el espectro no tiene datos). Lo dispara el botón Lock de PowerMenu.tsx y el keybind SUPER+L.
| Script | Rol | Comandos / lo que usa |
|---|---|---|
hyprlock-launch.sh |
Wrapper: arranca el productor cava, prepara fondo, entra al submap lock, corre hyprlock, limpia al desbloquear |
cava (config mono raw en /tmp/hyprlock/cava.conf), grim (frame de wallpaper animado) o ffmpeg (imagen estática), lee lowEndDevice de user-settings.json, hyprctl dispatch 'hl.dsp.submap(...)' |
hyprlock-cava.sh |
Render del espectro (label cmd[update:N]) |
awk genera filas Pango <span foreground> coloreadas por la carátula; lee /tmp/hyprlock/cava.dat + cava.pal; BARS= define el nº de barras (el wrapper lo lee) |
hyprlock-art.sh |
Resuelve la carátula actual a PNG 512² + genera la paleta | ffmpeg (recorte/escala), playerctl metadata; es el reload_cmd del widget image |
hyprlock-meta.sh |
Título/artista para los labels | playerctl metadata |
El submap lock (definido en keybinds.lua) mapea las flechas a control de reproducción mientras la pantalla está bloqueada ({ locked = true }). El modo Low-end device de AGS también desactiva el cava de hyprlock (flag /tmp/hyprlock/lowend).
Notas y recursos¶
- Documentación de Hyprland
- API Lua de Hyprland
- hyprlock — configuración del locker
- hyprpicker — selector de color
- Para los atajos que abren widgets AGS: ver AGS Bar