Cómo hacer themes | CubicLauncher
Cómo hacer themes
CubicLauncher te permite personalizar completamente la interfaz con temas. Cada tema define colores, fuentes, bordes y una imagen de fondo opcional.
Estructura de un tema
Los temas de usuario van dentro de .cubic/themes/. Cada tema es una carpeta con un theme.json y, opcionalmente, una imagen de fondo:
.cubic/
└── themes/
└── theme1/
├── theme.json
└── bg.jpg
El launcher no carga nada que esté fuera de
.cubicpor seguridad.
Formato del theme.json
El archivo theme.json sigue este esquema:
{
"name": "Mi Tema",
"author": "TuNombre",
"type": "user",
"bg_image": "bg.jpg",
"bg_image_blur": "10px",
"bg_image_opacity": 0.6,
"variables": { /* ... */ }
}
Campos del theme.json
| Campo | Tipo | Descripción |
|---|---|---|
name |
string |
Requerido. Nombre visible del tema en el selector. |
author |
string? |
Autor del tema. |
type |
string? |
Siempre "user". Los temas builtin vienen incluidos en el launcher. |
bg_image |
string? |
Nombre del archivo de imagen de fondo (debe estar en la misma carpeta). |
bg_image_blur |
string? |
Desenfoque del fondo (ej: "10px"). |
bg_image_opacity |
number? |
Opacidad del fondo (0 a 1, ej: 0.6). |
variables |
object |
Mapa de variables CSS que definen la apariencia. |
Imagen de fondo
El campo bg_image referencia un archivo dentro de la carpeta del tema (ej: bg.jpg, bg.gif). CubicLauncher:
- Verifica el tipo real por magic number, no confía en la extensión del archivo.
- No carga imágenes de más de 25 MB por seguridad y eficiencia.
- Solo acepta formatos de imagen válidos (PNG, JPG, GIF, WEBP, etc.).
Si el launcher no puede cargar la imagen (archivo corrupto, formato no válido, muy pesado), la ignora y no muestra fondo. Además de los campos anteriores, el launcher maneja internamente estas variables CSS para el fondo:
| Variable | Descripción |
|---|---|
--bg-image |
Se establece automáticamente al cargar la imagen. |
--bg-image-loaded |
Se setea a 0 mientras carga y 1 cuando está lista. |
Variables CSS disponibles
Las variables en theme.json se aplican directamente como CSS custom properties. Estas son las principales:
Colores de fondo
| Variable | Descripción |
|---|---|
--bg-main |
Fondo principal de la ventana |
--bg-sidebar |
Fondo de la barra lateral |
--bg-card |
Fondo de tarjetas |
--bg-item-active |
Fondo del elemento activo |
--bg-overlay |
Fondo de overlays/modal |
--bg-input |
Fondo de inputs |
Colores de texto
| Variable | Descripción |
|---|---|
--text-primary |
Texto principal |
--text-secondary |
Texto secundario |
--text-muted |
Texto desactivado o sutil |
Acento
| Variable | Descripción |
|---|---|
--accent |
Color de acento principal |
--accent-rgb |
Acento en formato RGB (para usar con rgba()) |
--accent-hover |
Acento al hacer hover |
--accent-text |
Color de texto sobre fondo de acento |
Bordes y sombras
| Variable | Descripción |
|---|---|
--border-color |
Color de bordes |
--border-radius |
Radio de borde general |
--border-radius-sm |
Radio de borde pequeño |
--shadow-sm |
Sombra pequeña |
--shadow-md |
Sombra mediana |
--glow-accent |
Brillo del color de acento |
Estados
| Variable | Descripción |
|---|---|
--color-success |
Color de éxito |
--color-success-rgb |
Éxito en RGB |
--color-error |
Color de error |
--color-error-rgb |
Error en RGB |
--color-warning |
Color de advertencia |
--color-warning-rgb |
Advertencia en RGB |
--color-status-starting |
Estado "iniciando" |
--color-status-started |
Estado "iniciado" |
Scrollbar
| Variable | Descripción |
|---|---|
--scrollbar-track |
Fondo de la barra de scroll |
--scrollbar-thumb |
Color del indicador de scroll |
Tipografía
| Variable | Descripción |
|---|---|
--font-family |
Familia de fuente |
--font-size-base |
Tamaño base |
--font-size-sm |
Tamaño pequeño |
--font-size-lg |
Tamaño grande |
Iconos
| Variable | Descripción |
|---|---|
--icon-filter |
Filtro CSS para iconos |
--icon-filter-error |
Filtro para iconos de error |
Publicar un theme
Si querés compartir tu theme con la comunidad, mandate un PR al repositorio oficial de Themes.
La estructura del repo es:
src/
└── <tu-usuario>/
└── <nombre-del-theme>/
├── showcase.png
└── Nombre:Autor.zip
showcase.png— captura del launcher con tu theme aplicado para mostrarlo en la galería.Nombre:Autor.zip— zip con el directorio del theme adentro, que contienetheme.jsony opcionalmentebg.EXTENSION. El nombre del zip sigue la convenciónNombre:Autor.zip.
Formatos de imagen aceptados para el background: PNG, GIF, WEBP, JPG.