Temas y paletas
El sistema de paletas base16, la edición de paletas en vivo, los bordes de ventana y la propagación de temas entre aplicaciones con theme-sync.
Los colores de equisdots provienen de paletas JSON planas que consumen el shell, los bordes de ventana de Hyprland, las escenas de fondos de pantalla y todas las aplicaciones que gestiona theme-sync. No hay extracción de color por fondo de pantalla: la paleta que elija es la que usan todos los componentes hasta que la cambie.
Contrato de paleta
Una paleta es un archivo JSON con colores base16 más anulaciones opcionales de
fondo, primer plano y roles semánticos. El esquema se publica en
equisdots/palettes (schema.json).
{
"name": "X",
"slug": "x",
"author": "xscriptor",
"base16": {
"color0": "#0a0a0a",
"color1": "#fc618d",
"color7": "#f7f1ff",
"color15": "#f7f1ff"
},
"background": "#0a0a0a",
"foreground": "#f7f1ff",
"roles": { "workspaceActive": "#eab308" }
}
name,slugy los 16 coloresbase16son obligatorios; cada color es#rrggbb.slugcoincide con^[a-z0-9][a-z0-9-]*$y es el nombre del archivo, el identificador del tema y el valor almacenado en los ajustes.backgroundyforegroundrecurren acolor0ycolor7.rolesanula los roles semánticos sobre la derivación base16.
El diseño del repositorio:
| Ruta | Contenido |
|---|---|
*.json |
Una paleta por slug (x.json, tokio.json, ...) |
community/ |
Portes base16 de temas de terminal conocidos, con atribución |
index.json |
Lista ordenada con nombre visible y colores de vista previa; alimenta el panel |
schema.json |
Contrato v1 |
Valide una copia de trabajo con:
scripts/check.sh
python3 tools/validate_palettes.py
Dónde viven las paletas
dots install despliega el conjunto plano, la carpeta community/ e
index.json en la ruta compartida congelada:
~/.config/hypr/scripts/quickshell/dock/palettes/
Esta ruta la leen el shell (ui/bar/Colors.qml, core/Theme.qml),
theme-sync, colors.lua de Hyprland y el proveedor de escenas de xwww. El
slug de la paleta activa vive en settings.json bajo bar.palette; la forma
heredada dock.palette se migra una vez y x es el último recurso, por lo que
siempre debe existir.
La interfaz agrupa las paletas en tres secciones: X (12 integradas), Personalizadas (portes de la comunidad) y Usuario (paletas que usted cree).
Elegir y editar paletas
Abra el panel de ajustes (SUPER + SHIFT + D) y vaya a la tarjeta Paleta, o
use el widget de paleta independiente (SUPER + SHIFT + P). Seleccionar una
paleta escribe bar.palette y el cambio se propaga en vivo.
La paleta activa puede recolorearse in situ:
- Tarjeta Paleta, Editar colores: 18 ranuras editables (
color0acolor15, másbackgroundyforeground). - Al confirmar un hexadecimal se reescribe
dock/palettes/<slug>.jsonde forma atómica conjqsobre un archivo temporal ymv, conservando las claves desconocidas. - La primera edición de una sesión guarda una instantánea prístina en
~/.local/state/quickshell/palette_backup/<slug>.json; Restablecer la recupera. - Crear una paleta escribe su archivo JSON y una entrada en
index.json; eliminarla borra ambos más la instantánea. La paleta integradaxestá protegida.
La propagación es inmediata: las islas de la barra, el cromo del editor, las caras de los widgets de escritorio, los bordes de ventana y los destinos de theme-sync vuelven a leer el archivo de paleta.
theme-sync
equisdots/theme-sync es el motor entre aplicaciones. Lee la paleta activa y regenera la configuración de las aplicaciones; un destino por aplicación, y un destino que falla nunca aborta el resto.
theme-sync --list # targets and availability
theme-sync --dry-run # show what would change, write nothing
theme-sync --targets kitty,xfetch # only these applications
theme-sync --palettes DIR --settings FILE
| Destino | Qué escribe |
|---|---|
kitty |
Tema por paleta más include y borde activo en kitty.conf. |
starship |
Temas por paleta y STARSHIP_CONFIG en los archivos rc del shell. |
xtop |
Temas por paleta y el tema activo. |
vscode |
Tema de color e iconos, o tinte en vivo generado para paletas no listadas. |
nvim |
lua/themes/palettes.lua más el arranque del tema activo. |
browsers |
Preferencias de Brave/Beta y user.js de Firefox. |
opencode |
Temas por paleta más el tema activo. |
rofi |
colors.rasi y config.rasi. |
cava |
Un bloque [color] gestionado con un gradiente de la paleta. |
qt |
Esquemas de color de qt6ct/qt5ct y configuración activa. |
gtk |
Anulaciones CSS de GTK3/4 y el esquema de color del sistema. |
xfetch |
Temas hexadecimales por paleta y el tema activo. |
Los bloques gestionados se marcan con equisdots theme-sync, por lo que
regenerar es idempotente. Añadir un destino es un módulo en
themesync/targets/ con NAME, DESCRIPTION, available(env) y apply(env),
más una línea en el registro.
Bordes de ventana
Los bordes de ventana siguen la paleta por defecto:
bar.borderFollowPalette: trueusa el acento de la paleta (color1) para el borde activo y un tono apagado (color8) para los inactivos.- Establecerlo en
falseusa los valores hexadecimales manualesbar.borderActiveybar.borderInactive.
config/hypr/colors.lua deriva los valores predeterminados en tiempo de carga
del JSON de la paleta activa y exporta X.active_border, X.inactive_border y
los colores en sí. El shell envía las actualizaciones en vivo mediante el
adaptador del compositor:
hyprctl eval 'hl.config({ general = { col = { active_border = "rgb(eab308)" } } })'
Roles semánticos
roles permite que una paleta anule ranuras con nombre derivadas de base16.
Las asignaciones integradas actuales de workspaceActive (el relleno del
espacio de trabajo activo en la barra, con mauve como reserva) incluyen el
oro #eab308 de x, el #666666 de berlin y el #8a6408 de madrid.
Edite el rol directamente en el archivo de paleta; se recarga en caliente
mediante los vigilantes.
Páginas relacionadas
- Shell Quickshell para el editor que controla las paletas.
- Escenas interactivas para fondos de pantalla reactivos a la paleta.
- Fondos de pantalla para la pila de fondos.