aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CONFIGURATION.md3
-rw-r--r--README.md2
-rw-r--r--src/app/state.rs24
-rw-r--r--src/main.rs2
4 files changed, 28 insertions, 3 deletions
diff --git a/CONFIGURATION.md b/CONFIGURATION.md
index 6bf06b27..6a40f71e 100644
--- a/CONFIGURATION.md
+++ b/CONFIGURATION.md
@@ -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.
diff --git a/README.md b/README.md
index f1e237bc..05dc5629 100644
--- a/README.md
+++ b/README.md
@@ -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
diff --git a/src/app/state.rs b/src/app/state.rs
index 831d8b7d..97f87f3c 100644
--- a/src/app/state.rs
+++ b/src/app/state.rs
@@ -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)]
diff --git a/src/main.rs b/src/main.rs
index d0a535da..df16b951 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -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.