pub struct Theme {Show 17 fields
pub name: &'static str,
pub bg_app: Color,
pub bg_panel: Color,
pub bg_panel_alt: Color,
pub bg_input: Color,
pub bg_input_focus: Color,
pub bg_button: Color,
pub bg_button_hover: Color,
pub bg_selected: Color,
pub bg_row_hover: Color,
pub fg_text: Color,
pub fg_muted: Color,
pub fg_placeholder: Color,
pub fg_destructive: Color,
pub border: Color,
pub border_focus: Color,
pub accent: Color,
}Expand description
Paleta de la app. Slots semánticos que cubren los casos comunes
(fondo, texto, hover, foco, acento). Los widgets reusables toman su
Palette específico desde acá vía Palette::from_theme(&theme).
Fields§
§name: &'static strNombre legible del preset — alimenta Theme::by_name,
next_after, y los UIs que ciclan presets (theme-switcher).
bg_app: ColorFondo de la ventana / superficie raíz.
bg_panel: ColorFondo de paneles (sidebars, cards).
bg_panel_alt: ColorFondo alternativo para barras / strips (tab bar, status bar).
bg_input: ColorFondo de campos de input (texto editable).
bg_input_focus: ColorFondo de input cuando tiene foco.
Fondo de botón (chip).
Fondo de botón al hover.
bg_selected: ColorFondo de la fila/item seleccionado (lista, tree).
bg_row_hover: ColorFondo de fila al hover (sin selección).
fg_text: Color§fg_muted: Color§fg_placeholder: Color§fg_destructive: Color§border: Color§border_focus: Color§accent: ColorAcento primario — divisores activos, borde de input focado, underline del tab activo, etc. Tono único de la app.
Implementations§
Source§impl Theme
impl Theme
Sourcepub const fn dark() -> Self
pub const fn dark() -> Self
Tema oscuro — el default. Análogo al nahual-theme dark en su
versión Llimphi: tonos azulados profundos, acento azul claro.
Sourcepub const fn tawa() -> Self
pub const fn tawa() -> Self
Tema “Tawa” — el LOOK FIRMA de la suite, el que se publica en screenshots. Decisiones de paleta:
- Base negro cálido, no azul marino. A diferencia de
dark()(un navy genérico, R<B) acá el fondo es un casi-negro con temperatura: los canales rojo/verde van un punto por encima del azul, así el grafito “respira” tibio en vez de frío. Jerarquía de superficies en escalera suave:bg_app(más profundo) →bg_panel/bg_input→ barras → chips, sin saltos bruscos. - Acento teal-eléctrico (#2BD9A6), NO azul. El mar de unixporn es
todo azul (Catppuccin/Tokyo Night); elegimos un verde-aguamarina
vibrante para destacar de inmediato — distintivo pero no chillón, con
raíz en el teal del CDE / del logo de la suite.
accentyborder_focuscomparten ese tono; la selección lo usa atenuado para no encandilar filas enteras. - Texto legible (WCAG AA).
fg_text(#E8E6E0, marfil cálido) supera 12:1 sobrebg_appy ~10:1 sobrebg_panel;fg_mutedronda 5:1 (texto secundario cómodo);fg_placeholderqueda como hint tenue. - Armonía: todos los grises llevan el mismo tinte cálido y el acento es el único color saturado — la paleta se lee como una sola pieza.
Sourcepub const fn light() -> Self
pub const fn light() -> Self
Tema claro — contraste revisado para WCAG AA sobre bg_app:
fg_text ~12:1, fg_muted ~5.4:1 (texto secundario legible),
fg_destructive y accent oscurecidos para superar 4.5:1 sobre
fondos claros. fg_placeholder queda deliberadamente tenue
(hint, no contenido).
Sourcepub const fn aurora() -> Self
pub const fn aurora() -> Self
Tema “Aurora” — verdes nocturnos con acento aqua. Análogo al preset del nahual-theme.
Sourcepub const fn print() -> Self
pub const fn print() -> Self
Tema “Print” — blanco y negro de alto contraste para impresión.
Fondo blanco papel, tinta negra, sin grises decorativos: todo lo
que se imprime tiene que leerse en una fotocopiadora. fg_muted
es un gris medio (3.5:1) reservado a metadatos; el cuerpo va en
negro puro. Acento y bordes negros — la tinta es una sola.
Sourcepub const fn xp_blue() -> Self
pub const fn xp_blue() -> Self
Skin Windows XP “Luna” — escritorio azul-gris claro, selección y
acento en el azul XP (#316AC5), chrome celeste. Para la vista windows-xp.
Sourcepub const fn mac_light() -> Self
pub const fn mac_light() -> Self
Skin macOS (Big Sur claro) — casi blanco, grises sutiles, acento
azul de sistema (#0A84FF). Para la vista mac.
Sourcepub const fn kde_breeze() -> Self
pub const fn kde_breeze() -> Self
Skin KDE Plasma “Breeze” (claro) — gris papel (#eff0f1), acento
azul Breeze (#3daee9). Para la vista kde.
Sourcepub const fn win31() -> Self
pub const fn win31() -> Self
Skin Windows 3.1: gris Motif (#c0c0c0) con barra de título azul
marino (#000080) y escritorio teal. La era de los biseles. Para la vista
windows-3.1.
Sourcepub const fn cde() -> Self
pub const fn cde() -> Self
Skin Solaris CDE (era dorada): gris-beige Motif con acento teal —
el Common Desktop Environment. Para la vista solaris.
Sourcepub fn sunken(&self) -> Color
pub fn sunken(&self) -> Color
Superficie “hundida” — un escalón más profunda que bg_app, para
áreas de lectura intensa (output de terminal, viewports de log,
IDE-text) que deben recibir el texto con más contraste que el chrome
y leerse recesadas respecto del marco. En temas oscuros oscurece
bg_app hacia el negro; en claros lo aleja un paso del blanco. Las
cards/strips (bg_panel, bg_panel_alt) quedan flotando por encima.
Derivada de la paleta — no inventa un color suelto.
Sourcepub fn all() -> Vec<Self>
pub fn all() -> Vec<Self>
Todos los presets del repo, en el orden canónico de rotación
(Tawa → Dark → Light → Aurora → Sunset → Tawa…). tawa() va al
frente: es el look firma de la suite, el primero que se ve. El
theme-switcher los consume vía Theme::next_after. print() queda
fuera de la rotación a propósito — es un modo deliberado (imprimir), no
un gusto estético que se cicle por accidente.
Sourcepub fn by_name(name: &str) -> Option<Self>
pub fn by_name(name: &str) -> Option<Self>
Busca un preset por nombre exacto. Incluye los modos deliberados que
quedan fuera de la rotación casual (print y los skins de vista
WinXP/macOS/Breeze), para que Config::theme los resuelva.
Sourcepub fn next_after(current: &str) -> Self
pub fn next_after(current: &str) -> Self
Próximo preset en la rotación de Theme::all. Si current no
se encuentra, retorna el primero — el switcher nunca se traba.
Trait Implementations§
Auto Trait Implementations§
impl Freeze for Theme
impl RefUnwindSafe for Theme
impl Send for Theme
impl Sync for Theme
impl Unpin for Theme
impl UnsafeUnpin for Theme
impl UnwindSafe for Theme
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.