Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -114,7 +114,7 @@ See [docs/architecture.md](docs/architecture.md) for the full layout. Short vers
- `src/sections.rs` — categories + filter logic.
- `src/ui/` — widgets and panels (sidebar, app grid, detail view, settings).
- `src/ui/theme.rs` — a re-export of [colony-ui](https://crates.io/crates/colony-ui)
plus Colony's own button styling. The 25 theme families and 57 palettes live
plus Colony's own button styling. The 26 theme families and 59 palettes live
in that crate, generated from the design tokens in
[Project-Colony-Resources](https://github.com/Project-Colony/Project-Colony-Resources).

Expand Down
4 changes: 2 additions & 2 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ rust-version = "1.88"
anyhow = "1.0.100"
# The shared theme, palettes, accents, labels and widgets, generated from the
# design tokens in Project-Colony-Resources.
colony-ui = "0.1.1"
colony-ui = "0.1.4"
iced = { version = "0.14.0", features = ["tokio", "markdown", "advanced", "image-without-codecs"] }
shell-words = "1.1.1"
serde = { version = "1.0.228", features = ["derive"] }
Expand Down
6 changes: 3 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -77,20 +77,20 @@ Requires Rust 1.88+ and, on Linux, `libgtk-3-dev`, `libxdo-dev`, `libdbus-1-dev`

## Theming

Colony ships with **25 theme families and 57 palettes**, compiled into the
Colony ships with **26 theme families and 59 palettes**, compiled into the
binary with zero runtime cost. They come from
[colony-ui](https://crates.io/crates/colony-ui) and are shared with every other
Project Colony program, so a theme looks the same wherever you meet it:

| | | | |
|---|---|---|---|
| Catppuccin (Latte, Frappé, Macchiato, Mocha) | Gruvbox | Everblush | Kanagawa (Wave, Dragon, Lotus) |
| Catppuccin (Latte, Frappé, Macchiato, Mocha) | Gruvbox | Everblush | Kanagawa (Lotus, Wave, Journal, Dragon) |
| Nord | Dracula | Solarized | Tokyo Night |
| Rosé Pine (Main, Moon, Dawn) | One Dark | Monokai Pro (Pro, Classic, Spectrum) | Ayu (Dark, Mirage, Light) |
| Everforest | Material (Oceanic, Palenight, Deep Ocean) | Flexoki | Nightfox |
| Sonokai | Oxocarbon | Night Owl | Iceberg |
| Horizon | Mélange | Synthwave '84 | Modus (Operandi, Vivendi) |
| Stellar Blade (Eve, Tachy, Lily, Enya, Kaya) | | | |
| Stellar Blade (Eve, Tachy, Lily, Enya, Kaya) | Parchment | | |

Each palette includes full semantic tokens: backgrounds, text layers, accents, success/warning/error states, button states, and more.

Expand Down
2 changes: 1 addition & 1 deletion docs/architecture.md
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ src/
├── i18n/ — fr.rs, en.rs, and the Locale lookup (mod.rs)
└── ui/
├── mod.rs — UI module declarations
├── theme.rs — 25 theme families, 57 palettes, semantic tokens
├── theme.rs — 26 theme families, 59 palettes, semantic tokens
├── sidebar.rs — Sidebar (sections, GitHub, rescan, update badge)
├── app_grid.rs — Application card grid with search
├── detail.rs — Detail view (README, changelog, license, actions)
Expand Down
2 changes: 1 addition & 1 deletion docs/faq.md
Original file line number Diff line number Diff line change
Expand Up @@ -152,7 +152,7 @@ Yes. Edit `~/.config/Colony/Colony/preferences/preferences.json` and add custom

### I changed a theme and don't see it — why?

Themes apply immediately, no restart. If a palette looks off, verify Settings → Theme has the expected family + palette selected. All 57 palettes are compiled into the binary, so if it's missing you're on an old version — update.
Themes apply immediately, no restart. If a palette looks off, verify Settings → Theme has the expected family + palette selected. All 59 palettes are compiled into the binary, so if it's missing you're on an old version — update.

---

Expand Down
2 changes: 1 addition & 1 deletion docs/tutorial.md
Original file line number Diff line number Diff line change
Expand Up @@ -122,7 +122,7 @@ Switch the sidebar origin to **Linux** (or **Windows**) to see only those.
## 5. Customize the theme

Click the **gear icon** at the bottom of the sidebar → **Theme**. Colony ships
25 theme families and 57 palettes (Catppuccin, Gruvbox, Nord, Dracula, Rosé
26 theme families and 59 palettes (Catppuccin, Gruvbox, Nord, Dracula, Rosé
Pine, Tokyo Night, etc.). Theme changes apply instantly, no restart needed.

## 6. Connect your GitHub account (optional)
Expand Down
15 changes: 12 additions & 3 deletions src/ui/settings.rs
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ use iced::{Element, Fill, Length};
use crate::i18n;
use crate::message::Message;
use crate::state::App;
use crate::ui::theme::Palette;
use crate::ui::theme::{self, Palette};

/// Settings category names (keys for i18n).
const SETTINGS_CATEGORIES: &[&str] = &[
Expand Down Expand Up @@ -67,8 +67,15 @@ impl App {
};
button::Style {
background: Some(bg.into()),
// Not TEXT_PRIMARY: on an accent fill that pairing
// is below 4.5:1 on fifty-eight of the fifty-nine
// themes and reaches 1.01:1 on Ayu Dark, where the
// selected category was invisible. `contrast_on`
// picks the legible end for whatever accent the
// user has chosen — app_grid.rs already uses it for
// exactly this.
text_color: if is_selected {
Palette::TEXT_PRIMARY()
theme::contrast_on(Palette::ACCENT())
} else {
Palette::TEXT_MUTED()
},
Expand Down Expand Up @@ -1226,7 +1233,9 @@ impl App {
radius: 6.0.into(),
},
text_color: Palette::TEXT_PRIMARY(),
selected_text_color: Palette::TEXT_PRIMARY(),
// The highlighted row of an open dropdown is an accent fill, and
// has the same problem as the category button above.
selected_text_color: theme::contrast_on(Palette::ACCENT()),
selected_background: Palette::ACCENT().into(),
shadow: iced::Shadow::default(),
});
Expand Down
8 changes: 4 additions & 4 deletions src/ui/theme.rs
Original file line number Diff line number Diff line change
Expand Up @@ -90,14 +90,14 @@ mod doc_parity_tests {
.sum();

assert_eq!(
families, 25,
"the docs say 25 theme families; colony-ui ships {families}. Update README.md \
families, 26,
"the docs say 26 theme families; colony-ui ships {families}. Update README.md \
(including its table of family names), docs/faq.md, docs/tutorial.md, \
docs/architecture.md and CONTRIBUTING.md."
);
assert_eq!(
palettes, 57,
"the docs say 57 palettes; colony-ui ships {palettes}. Update the same five documents."
palettes, 59,
"the docs say 59 palettes; colony-ui ships {palettes}. Update the same five documents."
);
}
}
Loading