AvengeMedia / AvengeMedia/DankMaterialShell
dank16 generates low-contrast color5 and identical color5/color13 in light mode
- Dominant language
- QML
- Stars
- 8.1k
- Forks
- 515
- Avg merge
- 1d 8h
- Merged PRs (30d)
- 102
Description
### Compositor
Niri
### Distribution
Fedora
### If Other, please specify
_No response_
### Select your Installation Method
Distro Packaging
### Was this your original Installation method?
Yes
### If no, specify
_No response_
### dms doctor -vC
dms doctor -v (home directory shortened to ~)
```
██████╗ ███╗ ███╗███████╗
██╔══██╗████╗ ████║██╔════╝
██║ ██║██╔████╔██║███████╗
██║ ██║██║╚██╔╝██║╚════██║
██████╔╝██║ ╚═╝ ██║███████║
╚═════╝ ╚═╝ ╚═╝╚══════╝
System Health Check
──────────────────────────────────────
System
● Operating System ····· Fedora Linux 44 (Forty Four)
└─ ID: fedora, Version: 44, Arch: amd64
● Architecture ········· amd64
● Display Server ······· Wayland
└─ WAYLAND_DISPLAY=wayland-1
Versions
● DMS CLI ·············· dms v1.6.1
└─ /usr/bin/dms
● Quickshell ··········· Quickshell 0.3.1 (revision , distributed by Fedora COPR (avengemedia/quickshell))
└─ /usr/bin/qs
● DMS Shell ············ v1.6.1
└─ /run/user/1000/danklinux-shell/d83248ba9119b48a
Installation
● DMS Configuration ···· Found
└─ /run/user/1000/danklinux-shell/d83248ba9119b48a
● shell.qml ············ Present
└─ /run/user/1000/danklinux-shell/d83248ba9119b48a/shell.qml
○ Install Type ········· Unknown
└─ /run/user/1000/danklinux-shell/d83248ba9119b48a
Compositor
● niri ················· 26.04
└─ /usr/bin/niri
○ Active ··············· niri
● Background Blur ······ Supported
└─ Compositor supports ext-background-effect-v1
Quickshell Features
● Polkit ··············· Available
└─ Authentication prompts
● IdleMonitor ·········· Available
└─ Idle detection
● IdleInhibitor ········ Available
└─ Prevent idle/sleep
● ShortcutInhibitor ···· Available
└─ Allow shortcut management (niri)
● BackgroundBlur ······· Available
└─ Background blur API support in Quickshell
Optional Features
● accountsservice ······ Available
└─ User accounts
● power-profiles-daemon Available
└─ Power profile management
● logind ··············· Available
└─ Session management
● cups-pk-helper ······· Available
└─ Printer management
○ I2C/DDC ·············· No monitors detected
└─ External monitor brightness control
● qt6-imageformats ····· Installed (5 formats)
└─ Formats: WebP, TIFF, GIF, JP2, ICNS (/usr/lib64/qt6/plugins/imageformats)
● kimageformats ········ Installed (4 formats)
└─ Formats: AVIF, HEIF, JXL, EXR (/usr/lib64/qt6/plugins/imageformats)
● Terminal ············· kitty
● Network ·············· NetworkManager
└─ NetworkManager present. Using NM API.
● matugen ·············· Installed
└─ Dynamic theming
● cava ················· Installed
└─ Audio visualizer
○ khal ················· Not installed
└─ Calendar events
● danksearch ··········· Installed
└─ File search
○ dankcalendar ········· Not installed
└─ Calendar app
○ fprintd ·············· Not installed
└─ Fingerprint auth
● adw-gtk3 ············· Installed
└─ GTK3 dynamic theming (user copy)
Config Files
● settings.json ········ Present
└─ ~/.config/DankMaterialShell/settings.json
○ clsettings.json ······ Not yet created
└─ ~/.config/DankMaterialShell/clsettings.json
● plugin_settings.json · Present
└─ ~/.config/DankMaterialShell/plugin_settings.json
● session.json ········· Present
└─ ~/.local/state/DankMaterialShell/session.json
● dms-colors.json ······ Present
└─ ~/.cache/DankMaterialShell/dms-colors.json
Services
● dms.service ·········· enabled, active
● greetd ··············· enabled
Environment
○ QT_QPA_PLATFORMTHEME · qt6ct
● qt6ct plugin (Qt6) ··· Installed
└─ /usr/lib64/qt6/plugins/platformthemes/libqt6ct.so
○ QT_QPA_PLATFORMTHEME… Not set
○ QS_ICON_THEME ········ Not set
● XDG_MENU_PREFIX ······ plasma- (menu file not found)
└─ Dolphin 'Open with…' dialog may be empty. Ensure /etc/xdg/menus/plasma-applications.menu exists.
→ https://danklinux.com/docs/dankmaterialshell/cli-doctor#xdg-menu-prefix
Fonts
● Normal Font ·········· Rubik
└─ Available via fontconfig
● Monospace Font ······· JetBrainsMono Nerd Font Mono
└─ Available via fontconfig
──────────────────────────────────────
1 warning(s), 36 ok
```
### Description
`dank16` assigns `color5` and `color13` without any contrast floor, so ANSI 35/95 is
effectively unreadable in both modes. In light mode the two slots are byte-identical, so
there is no normal/bright distinction at all. This is the generated palette rather than any
one tool's config, so every program that prints SGR 35/95 is affected.
**Light mode** — `color5` and `color13` are the same value, at 1.25–2.14:1 on the background:
| # | background | color5 | color13 | on background | color5 vs color13 |
|---|---|---|---|---|---|
| 1 | `#fbfaed` | `#aab18a` | `#aab18a` | 2.14:1 | **1.00:1** |
| 2 | `#fdf7ff` | `#e4dcfd` | `#e4dcfd` | 1.25:1 | **1.00:1** |
| 3 | `#fbf8ff` | `#dbdfff` | `#dbdfff` | 1.25:1 | **1.00:1** |
**Dark mode** — `color13` is fine, `color5` is not:
| # | background | color5 | on background | color13 | on background |
|---|---|---|---|---|---|
| 1 | `#0f1417` | `#1c5070` | 2.15:1 | `#b6e3ff` | 13.61:1 |
| 2 | `#141218` | `#4d3e75` | 2.00:1 | `#ddd1ff` | 12.96:1 |
For comparison, `color6` on the same backgrounds is 6.12–6.15:1 in light and 10.89–10.95:1 in
dark, so the other slots in the same hue family are fine.
### Expected Behavior
`color5` clears the same contrast target as the other normal slots, and `color13` is a
distinct brighter value, as with every other normal/bright pair.
### Steps to Reproduce
1. Set any wallpaper and let matugen regenerate the palette.
2. Read the generated `~/.config/kitty/dank-theme.conf` (or `dank16` in `dms-colors.json`).
3. Compare `color5` and `color13` against `background`, in light mode and again in dark.
Five samples across three unrelated wallpapers are in the tables above; all values were read
back from DMS's own generated output, with no user override for these slots.
### Error Messages/Logs
Cause, read from `core/internal/dank16/dank16.go` at master f864dc2:
- Light: `Color5` (L580–581) and `Color13` (L607–608) both call
`DeriveContainer(primaryColor, true)` with identical arguments, so the two slots are equal
for every source colour.
- Dark: `Color5` (L636–637) is `DeriveContainer(primaryColor, false)`, which scales value by
`0.463` — a container tone used directly as a foreground on the dark background.
- Neither slot passes through `ensureContrastAuto` / `ensureContrastBidirectional`, unlike
`color1`–`color4` and `color9`–`color12`, so nothing enforces a floor on either.
Related but distinct slots: #3405, #3406, #2987.
### Screenshots/Recordings
_No response_
Contributor guide
Research direction
Start in core/internal/dank16/dank16.go at the cited Color5 and Color13 definitions, then compare them with the nearby slots that use ensureContrastAuto or ensureContrastBidirectional. Regenerate the palette from a wallpaper and inspect dank16 in dms-colors.json or ~/.config/kitty/dank-theme.conf in both modes. Done means color5 meets the contrast target and color13 is distinct and brighter.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- go
- Domain
- design, desktop
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Active
- Clarity
- Clearly specified
- Newbie friendliness
- 78/100