pub struct Theme { /* private fields */ }Expand description
Semantic color palette for TUI rendering.
A Theme provides named colors for every visual role in the UI — text, backgrounds, status indicators, markdown rendering, and diffs. Components access colors through the ViewContext rather than hardcoding values, making the entire UI re-skinnable.
When the syntax feature is enabled, the theme also caches a parsed syntect theme for syntax highlighting.
§Construction
Use the builder for custom themes — every field is required:
use tui::{Theme, Color};
let theme = Theme::builder()
.fg(Color::White)
.bg(Color::Black)
.accent(Color::Cyan)
.highlight_bg(Color::DarkBlue)
.highlight_fg(Color::White)
.text_secondary(Color::Grey)
.code_fg(Color::Green)
.code_bg(Color::Rgb { r: 30, g: 30, b: 30 })
.heading(Color::Yellow)
.link(Color::Blue)
.blockquote(Color::DarkGrey)
.muted(Color::DarkGrey)
.success(Color::Green)
.warning(Color::Yellow)
.error(Color::Red)
.info(Color::Cyan)
.secondary(Color::Magenta)
.sidebar_bg(Color::Rgb { r: 20, g: 20, b: 20 })
.diff_added_fg(Color::Green)
.diff_removed_fg(Color::Red)
.diff_added_bg(Color::Rgb { r: 0, g: 20, b: 0 })
.diff_removed_bg(Color::Rgb { r: 20, g: 0, b: 0 })
.build()
.unwrap();Theme::default() provides a dark-theme preset.
§Color categories
- Base —
fg,bg,accent,highlight_bg,highlight_fg - Text —
text_secondary,code_fg,code_bg - Markdown —
heading,link,blockquote,muted - Status —
success,warning,error,info,secondary - Layout —
sidebar_bg - Diffs —
diff_added_fg,diff_removed_fg,diff_added_bg,diff_removed_bg
§Helper methods
selected_row_style()— Returns aStylewithhighlight_fgonhighlight_bg, suitable for selected list rows.selected_row_style_with_fg(color)— Same but with a custom foreground.
§See also
ThemeBuilder— The builder returned byTheme::builder().ThemeBuildError— Returned when a required field is missing.ViewContext— Carries anArc<Theme>to render methods.
Implementations§
Source§impl Theme
impl Theme
Sourcepub fn catppuccin_mocha() -> Self
pub fn catppuccin_mocha() -> Self
Catppuccin Mocha theme (dark, high contrast).
This is the default theme and is always available without any additional dependencies.
Source§impl Theme
impl Theme
Sourcepub fn syntect_theme(&self) -> &Theme
pub fn syntect_theme(&self) -> &Theme
Return the cached syntect theme for syntax highlighting.
Sourcepub fn load_from_path(path: &Path) -> Self
pub fn load_from_path(path: &Path) -> Self
Load theme from a .tmTheme file.
Source§impl Theme
impl Theme
pub fn builder() -> ThemeBuilder
pub fn primary(&self) -> Color
pub fn text_primary(&self) -> Color
pub fn background(&self) -> Color
pub fn code_fg(&self) -> Color
pub fn code_bg(&self) -> Color
pub fn accent(&self) -> Color
pub fn highlight_bg(&self) -> Color
pub fn highlight_fg(&self) -> Color
pub fn selected_row_style(&self) -> Style
pub fn selected_row_style_with_fg(&self, fg: Color) -> Style
pub fn secondary(&self) -> Color
pub fn text_secondary(&self) -> Color
pub fn success(&self) -> Color
pub fn warning(&self) -> Color
pub fn error(&self) -> Color
pub fn info(&self) -> Color
pub fn muted(&self) -> Color
pub fn heading(&self) -> Color
pub fn link(&self) -> Color
pub fn blockquote(&self) -> Color
pub fn diff_added_bg(&self) -> Color
pub fn diff_removed_bg(&self) -> Color
pub fn diff_added_fg(&self) -> Color
pub fn diff_removed_fg(&self) -> Color
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
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more