AvengeMedia / AvengeMedia/DankMaterialShell

dank16 generates low-contrast color5 and identical color5/color13 in light mode

Open
#3,408 0 comments 0 reactions 0 assignees View on GitHub
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

Open the contributing 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.