Re: [w3c/manifest] Add support for defining a theme color for both light & dark modes (prefers color scheme) (#975)

carlosjeurissen left a comment (w3c/manifest#975)

We could go for a hybrid approach. Keep localised as is, introduce `dark_theme` for colors, retract `icons_localized` and further spec out a flat `icons` list to the likes of `icon_variants` from webExtensions.

### Localised text properties as specified
This has ideal language negotiation and allows setting metadata like the dir. Perfect for text-specific properties.
```json
{
  "lang": "de",
  "name": "Coole App",
  "name_localized": {
    "en": "Cool App",
    "ar": {"value": "تطبيق رائع", "dir": "rtl" }
}
```

### Global `dark_theme` property for color theme specific properties
As proposed in https://github.com/w3c/manifest/issues/975#issuecomment-3754426877

`dark_theme` would remove any connection with `color_scheme` removing the implication of supporting other `color_scheme` overrides. `dark_theme` would also be more flexible for future additions compared to `dark_colors`.
```json
{
 "theme_color": "blue",
 "background_color": "#fff",
 "dark_theme": {
    "theme_color": "lightblue",
    "background_color": "#000"
 }
}
```

### Flat list for `icons`
Drop the `icons_localised` and no support for `dark_theme.icons`. As this would create dozens of buckets. For which a proper algorithm would need to be determined, potentially requiring developers to repeat big chunks of icon declarations across every bucket. See concerns in https://github.com/w3c/manifest/issues/975#issuecomment-3754425660

We could use a flat list inspired by the webExtensions `icon_variants`. We can go for other algorithms like most specific and/or prioritise specific filters. However, having one flat list prevents many of the issues mentioned above.

```json
"icons": [
  { 
    "src": "cyrl-dark-512.png", 
    "sizes": "512x512", 
    "type": "image/png",
    "purpose": "maskable",
    "color_schemes": ["dark"], 
    "lang": ["ru", "uk", "be"]
  },
  { 
    "src": "cyrl-dark-192.png", 
    "sizes": "192x192",
    "type": "image/png",
    "color_schemes": ["dark"], 
    "lang": ["ru", "uk", "be"]
  },
  { "src": "def-512.png", "sizes": "512x512" },
  { "src": "def-192.png", "sizes": "192x192" }
]
```

> @christianliebel What would the exact proposal be?

We can further discuss the specifics for dark icons / localised icons. For the lang attribute, we can consult the i18n folks for the icons flat list.

However I do not see it as a blocker for `dark_theme`, with the exception of making sure `dark_theme.icons` is explicitly blocked for now. And we retract or at least delay implementation of `icons_localised` until further discussion.

-- 
Reply to this email directly or view it on GitHub:
https://github.com/w3c/manifest/issues/975#issuecomment-3786087293
You are receiving this because you are subscribed to this thread.

Message ID: <w3c/manifest/issues/975/3786087293@github.com>

Received on Thursday, 22 January 2026 18:44:26 UTC