feat: add vesper theme (#71)

This commit is contained in:
Shoubhit Dash
2026-05-06 21:08:20 +03:00
committed by GitHub
parent 523d50ec6c
commit 446eecb4a1
4 changed files with 28 additions and 3 deletions
+2 -1
View File
@@ -140,7 +140,7 @@ focus_pane_right = "alt+l"
## theme
herdr ships with 9 built-in color themes. set one in config:
herdr ships with 10 built-in color themes. set one in config:
```toml
[theme]
@@ -160,6 +160,7 @@ name = "tokyo-night"
| `solarized` | ethan schoonover's classic |
| `kanagawa` | hokusai-inspired |
| `rose-pine` | muted, elegant |
| `vesper` | high-contrast monochrome with peach and mint accents |
theme names are flexible: `tokyo-night`, `tokyonight`, and `tokyo_night` all work.
+1 -1
View File
@@ -115,7 +115,7 @@ not a gui window, not a web dashboard, not electron. herdr runs inside whatever
- **tabs** — first-class in the socket api and cli
- **mouse-native** — click panes, drag borders, select text to copy; not keyboard-only
- **notifications** — sounds and toasts for background events; tab-aware suppression
- **9 built-in themes** — catppuccin (default), tokyo night, dracula, nord, gruvbox, one dark, solarized, kanagawa, rosé pine
- **10 built-in themes** — catppuccin (default), tokyo night, dracula, nord, gruvbox, one dark, solarized, kanagawa, rosé pine, vesper
- **session persistence** — pane processes survive client detach; sessions restore after full restart
## agents can use herdr too
+24
View File
@@ -250,6 +250,28 @@ impl Palette {
}
}
/// Vesper — minimal high-contrast monochrome with peach and mint accents.
pub fn vesper() -> Self {
Self {
accent: Color::Rgb(255, 199, 153),
panel_bg: Color::Rgb(26, 26, 26),
surface0: Color::Rgb(35, 35, 35),
surface1: Color::Rgb(40, 40, 40),
surface_dim: Color::Rgb(16, 16, 16),
overlay0: Color::Rgb(92, 92, 92),
overlay1: Color::Rgb(126, 126, 126),
text: Color::Rgb(255, 255, 255),
subtext0: Color::Rgb(160, 160, 160),
mauve: Color::Rgb(255, 209, 168),
green: Color::Rgb(153, 255, 228),
yellow: Color::Rgb(255, 199, 153),
red: Color::Rgb(255, 128, 128),
blue: Color::Rgb(176, 176, 176),
teal: Color::Rgb(102, 221, 204),
peach: Color::Rgb(255, 199, 153),
}
}
/// Resolve a theme by name. Returns None for unknown names.
pub fn from_name(name: &str) -> Option<Self> {
match name.to_lowercase().replace([' ', '_'], "-").as_str() {
@@ -262,6 +284,7 @@ impl Palette {
"solarized" | "solarized-dark" => Some(Self::solarized()),
"kanagawa" => Some(Self::kanagawa()),
"rose-pine" | "rosepine" => Some(Self::rose_pine()),
"vesper" => Some(Self::vesper()),
_ => None,
}
}
@@ -414,6 +437,7 @@ pub const THEME_NAMES: &[&str] = &[
"solarized",
"kanagawa",
"rose-pine",
"vesper",
];
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
+1 -1
View File
@@ -59,7 +59,7 @@ const DEFAULT_CONFIG: &str = r##"# herdr configuration
[theme]
# Built-in themes: catppuccin, tokyo-night, dracula, nord, gruvbox,
# one-dark, solarized, kanagawa, rose-pine
# one-dark, solarized, kanagawa, rose-pine, vesper
# name = "catppuccin"
# Override individual color tokens on top of the base theme.