pub struct Theme {Show 15 fields
pub focus: Color,
pub accent: Color,
pub branch: Color,
pub clean: Color,
pub dirty: Color,
pub main: Color,
pub locked: Color,
pub prunable: Color,
pub muted: Color,
pub selection_bg: Color,
pub name: Color,
pub path: Color,
pub staged: Color,
pub modified: Color,
pub untracked: Color,
}Expand description
Role-based colour scheme for the TUI. Every field is a
ratatui::style::Color; the renderer reads them via
App.theme rather than hard-coding palette values.
Order of fields here matches the documented [theme] key order
in examples/gwm.toml.example so the doc and the struct stay
readable side-by-side.
Fields§
§focus: ColorFocused border / cursor / active overlay highlight. Pre-#33
hardcoded as Color::Cyan.
accent: ColorGeneral accent: header title, key hints in the help overlay,
the palette input bar prompt. Pre-#33 hardcoded as Cyan.
branch: ColorBranch name in lists and the sidebar identity card. Pre-#33
hardcoded as Green when the branch is in a healthy state.
clean: Color“Working tree is clean” status indicator. Pre-#33 Green.
dirty: Color“Working tree is dirty” status indicator. Pre-#33 Yellow.
main: ColorMain / trunk worktree badge. Pre-#33 Yellow.
locked: ColorLocked worktree badge (🔒). Pre-#33 Magenta.
prunable: ColorPrunable worktree badge (⚠). Pre-#33 Red.
muted: ColorDe-emphasised text: hints, footers, placeholders. Pre-#33
DarkGray.
selection_bg: ColorSelection highlight background. Pre-#33 DarkGray. Kept as a
separate role so themes that prefer a coloured selection
background (e.g. catppuccin’s surface tone) can move it
independently of muted.
name: ColorPrimary identity text: the worktree name in the table and the
sidebar header, plus the Issue #N / PR #N heads of the link
summary lines. Pre-#170 these were a hard-coded Color::White
with no semantic role (issue #210). Rendered bold at the name
sites; the role only carries the foreground colour.
path: ColorWorktree path column in the table. Pre-#170 a hard-coded
Color::Gray, distinct from muted (DarkGray) so the path
reads as a structural mid-grey rather than dimmed text (issue
#210). The sidebar identity-card path stays on muted and is
intentionally not moved here — doing so would shift its
default appearance.
staged: ColorStaged (index-side) git-status changes in the working-tree panel
— the X column and a staged-only file name. Pre-#211 this
borrowed accent; the dedicated role (default Cyan, issue
#211) decouples a staged file from the focus/accent highlight.
modified: ColorWorktree-side git-status modifications — the Y column and a
modified file name. Pre-#211 this borrowed dirty (a branch
divergence warning); the dedicated role (default Yellow,
issue #211) decouples the two unrelated signals.
untracked: ColorUntracked / created git-status entries (??). Pre-#211 this
borrowed clean (the “working tree is clean” indicator); the
dedicated role (default Green, issue #211) decouples them.
Implementations§
Trait Implementations§
impl Copy for Theme
impl Eq for Theme
impl StructuralPartialEq for Theme
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
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.Source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.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>
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>
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