Launcher: the selected icon in slate, the name in white

The selected icon was dark blue on its cyan tile, which read as black:
it is the Status Bar's slate now. The App's name under the grid is
white instead of cyan.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0162FokPdvY2KsS4NBfwyWPk
This commit is contained in:
2026-10-09 23:23:20 +02:00
co-authored by Claude Opus 5.5
parent e2326e113b
commit 10627e6e18
3 changed files with 6 additions and 5 deletions
+1 -1
View File
@@ -68,7 +68,7 @@ The Launcher was a list of names. It is now a grid of icons.
|---|---|
| Layout | **4 × 3** tiles of 60 × 36, so the 11 Apps are on one page. Only the selected App's name is written, on a line under the grid: a name under every tile doesn't fit 60 pixels ("LoRa Scanner"). More than 12 Apps: the rows scroll |
| Icons | **The website's own**: its nine 16 × 16 pictures (`site/static/img/icons-dark.svg`), doubled to 32 × 32, and two drawn the same way for SSH and the Shell. 1 bit a pixel (128 bytes each, in flash). The pictures are PNGs in `assets/icons/`, named after the App's id; `scripts/make_icons.py` writes `src/ui/icons.cpp` from them and CI checks the two match |
| Colours | **The website's**: cyan (#00dbff) on black, and the selected tile dark blue (#000055) on a cyan fill with notched corners. Both are RGB332 colours. The name under the grid is cyan too |
| Colours | **The website's**: cyan (#00dbff) on black, and the selected tile slate (#494955, the Status Bar's) on a cyan fill with notched corners. Both are RGB332 colours. The name under the grid is white |
| Live state | **A dot** on the tile, from `App::badge()`: IRC (unread messages), GNSS (a Track recording), the LoRa Scanner (a Capture running), SSH (a session open). The Launcher asks every App on each pass and redraws when an answer changes |
| Order | As registered, as before |
| Shortcuts | None for now |
+1 -1
View File
@@ -76,7 +76,7 @@ The Launcher was a list of names. It is now a grid of icons.
|---|---|
| Layout | **4 × 3** tiles of 60 × 36, so the 11 Apps are on one page. Only the selected App's name is written, on a line under the grid: a name under every tile doesn't fit 60 pixels ("LoRa Scanner"). More than 12 Apps: the rows scroll |
| Icons | **The website's own**: its nine 16 × 16 pictures (`site/static/img/icons-dark.svg`), doubled to 32 × 32, and two drawn the same way for SSH and the Shell. 1 bit a pixel (128 bytes each, in flash). The pictures are PNGs in `assets/icons/`, named after the App's id; `scripts/make_icons.py` writes `src/ui/icons.cpp` from them and CI checks the two match |
| Colours | **The website's**: cyan (#00dbff) on black, and the selected tile dark blue (#000055) on a cyan fill with notched corners. Both are RGB332 colours. The name under the grid is cyan too |
| Colours | **The website's**: cyan (#00dbff) on black, and the selected tile slate (#494955, the Status Bar's) on a cyan fill with notched corners. Both are RGB332 colours. The name under the grid is white |
| Live state | **A dot** on the tile, from `App::badge()`: IRC (unread messages), GNSS (a Track recording), the LoRa Scanner (a Capture running), SSH (a session open). The Launcher asks every App on each pass and redraws when an answer changes |
| Order | As registered, as before |
| Shortcuts | None for now |
+4 -3
View File
@@ -70,8 +70,9 @@ void LauncherApp::drawGrid(Canvas& c) {
if (i >= static_cast<int>(apps.size())) break;
int x = kContent.x + col * kTileW, y = kContent.y + row * kTileH;
int ix = x + (kTileW - icons::kSize) / 2, iy = y + (kTileH - icons::kSize) / 2;
// As on the website: cyan on black, and the chosen one dark on a cyan tile with notched corners.
uint16_t ink = i == selected ? kOnAccent : kAccent;
// As on the website: cyan on black, and the chosen one on a cyan tile with notched corners,
// in the Status Bar's slate.
uint16_t ink = i == selected ? kFaint : kAccent;
if (i == selected) {
int tx = ix - 6, tw = icons::kSize + 12;
c.fillRect(tx + 4, y, tw - 8, kTileH, kAccent);
@@ -100,7 +101,7 @@ void LauncherApp::drawGrid(Canvas& c) {
}
if (selected >= 0) {
c.setFont(&fonts::bold);
c.setTextColor(kAccent);
c.setTextColor(kText);
c.setTextDatum(top_center);
c.drawString(apps[selected]->title, kContent.x + kContent.w / 2, kContent.y + kRows * kTileH + 1);
}