57 lines
3.4 KiB
Markdown
57 lines
3.4 KiB
Markdown
|
|
# ADR 0031: The apps' icons, one family
|
|||
|
|
|
|||
|
|
- **Status:** decided 28 Oct 2026, by the developer (D1–D4 below). Not built yet: Train's
|
|||
|
|
icon comes with its shell (ADR 0030, D12), Learn's and Todo's follow, Meditate's with
|
|||
|
|
Meditate.
|
|||
|
|
- **Builds on:** ADR 0030, D12 (Train's icon is Lucide's `bike`).
|
|||
|
|
|
|||
|
|
## Context
|
|||
|
|
|
|||
|
|
Halkyon's apps had no family. Learn's icon is the kingfisher, Halkyon's emblem (a
|
|||
|
|
picture, `halkyon_learn_flutter/assets/icon/halkyon_icon.png`); Todo's is Lucide's
|
|||
|
|
`list-checks`, its strokes drawn with Pillow in cobalt fading into sky
|
|||
|
|
(`apps/todo/tool/app_icons.py`). On 28 Oct, choosing Train's, the developer asked for
|
|||
|
|
"a fading of the colors, like in the icons of Proton's services", whose blog post
|
|||
|
|
(proton.me/blog/new-visual-universe) says: "Every icon starts with the Proton purple
|
|||
|
|
and then fades into the service color", so that the icons read as one family.
|
|||
|
|
|
|||
|
|
Drawn and compared on 28 Oct (the previews in the session's scratchpad): fading from
|
|||
|
|
cobalt straight into one other colour looks, in the developer's words, "bland and odd",
|
|||
|
|
cobalt into sky "like everything is completely blue", and cobalt straight into an orange
|
|||
|
|
turns grey-brown halfway, as blue and orange are opposite colours. A gradient passing
|
|||
|
|
through a colour between them (violet or sky) stays bright.
|
|||
|
|
|
|||
|
|
## Decisions (28 Oct 2026, the developer's)
|
|||
|
|
|
|||
|
|
- **D1 Every app's icon is a Lucide glyph on white, fading from cobalt through a colour
|
|||
|
|
between into the app's own**, top left to bottom right across Lucide's 24-unit box, at
|
|||
|
|
Lucide's stroke width (2), the white tile's corners rounded by the platforms as today.
|
|||
|
|
Cobalt is what the family shares, as Proton's purple; the end colours lie apart on the
|
|||
|
|
colour wheel, so the icons are told apart small, the shapes doing the rest (Learn's and
|
|||
|
|
Train's are related, as are Todo's and Meditate's; the developer kept them so).
|
|||
|
|
- **D2 The four**:
|
|||
|
|
|
|||
|
|
| App | Glyph | Gradient |
|
|||
|
|
|---|---|---|
|
|||
|
|
| Learn | `graduation-cap` | cobalt `#3C57E5` → violet `#8E4FD6` → strawberry `#EC3E7C` |
|
|||
|
|
| Todo | `list-todo` | cobalt `#3C57E5` → pacific `#179FD9` → fern `#3CBB3A` |
|
|||
|
|
| Train | `bike` | cobalt `#3C57E5` → violet `#8E4FD6` → strawberry `#EC3E7C` → carrot `#F78400` |
|
|||
|
|
| Meditate | `circle-dot` | cobalt `#3C57E5` → pacific `#179FD9` → reef `#1DA583` |
|
|||
|
|
|
|||
|
|
The stops are evenly spaced. Cobalt is the icon's brighter cobalt Todo's icon uses, not
|
|||
|
|
the palette's (`#273EB2`); violet is no palette colour (between cobalt and strawberry);
|
|||
|
|
the others are halkyon_ui's palette's.
|
|||
|
|
- **D3 Learn's icon becomes the graduation cap; the kingfisher stays Halkyon's emblem**,
|
|||
|
|
in the logo and the wordmark. Installed Learn apps change their icon once, when the new
|
|||
|
|
one is built, as do F-Droid's listing and the snap's.
|
|||
|
|
- **D4 Meditate's glyph is `circle-dot`** (the developer's, over `flower-2`, recommended,
|
|||
|
|
`wind`, `sprout`, `leaf` and `flower`): a point to rest the eyes on.
|
|||
|
|
|
|||
|
|
## What follows (the agent's proposals, to be put to the developer when built)
|
|||
|
|
|
|||
|
|
- One icon tool for every app at the repository's root, each app naming its glyph and
|
|||
|
|
stops, instead of a script per app: Lucide's glyphs have arcs and curves (`bike`'s
|
|||
|
|
wheels, `graduation-cap`), which Todo's tool, drawing straight strokes with Pillow,
|
|||
|
|
can't draw. librsvg through PyGObject and pycairo (Ubuntu's `python3-gi`,
|
|||
|
|
`gir1.2-rsvg-2.0`, `python3-cairo`) renders them exactly; the previews were drawn so.
|
|||
|
|
- Lucide's licence (ISC) beside each icon and in each app's licence list, as Todo's is.
|