Battery critical pulse shows a background on bars with "No background" enabled
Assessment
- Difficulty
- 2/5
- Estimated time
- 1-3 hours
- Newbie friendliness
- 76/100
Research direction
Start by reading Modules/SurfaceWidgets/BarPill.qml for how noBackground sets defaultFillColor, then inspect the critical pulse color bindings in Modules/DBar/Widgets/Battery.qml. Reproduce with “No background” enabled and the battery at critical level while discharging. Done when the background stays transparent and the icon remains visible during the critical pulse.
Written by the indexing model from the issue text.
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
Click to expand
## DMS Doctor ReportSystem
- [ok] Operating System: Fedora Linux 45 (Workstation Edition)
- ID: fedora, Version: 45, Arch: amd64
- [ok] Architecture: amd64
- [ok] Display Server: Wayland
- WAYLAND_DISPLAY=wayland-1
Versions
- [ok] DMS CLI: dms v2.0.0
- /usr/bin/dms
- [ok] Quickshell: Quickshell 0.3.2 (revision , distributed by Fedora COPR (avengemedia/quickshell))
- /usr/bin/qs
- [ok] DMS Shell: 2.0.0
- /home/v8v88v8v88/.config/quickshell/dms
Installation
- [ok] DMS Configuration: Found
- /home/v8v88v8v88/.config/quickshell/dms
- [ok] shell.qml: Present
- /home/v8v88v8v88/.config/quickshell/dms/shell.qml
- [info] Install Type: User config
- /home/v8v88v8v88/.config/quickshell/dms
Compositor
- [ok] niri: 26.04
- /usr/bin/niri
- [info] Active: niri
- [ok] Background Blur: Supported
- Compositor supports ext-background-effect-v1
Quickshell Features
- [ok] Polkit: Available
- Authentication prompts
- [ok] IdleMonitor: Available
- Idle detection
- [ok] IdleInhibitor: Available
- Prevent idle/sleep
- [ok] ShortcutInhibitor: Available
- Allow shortcut management (niri, Aqueous)
- [ok] BackgroundBlur: Available
- Background blur API support in Quickshell
Optional Features
- [ok] accountsservice: Available
- User accounts
- [ok] power-profiles-daemon: Available
- Power profile management
- [ok] logind: Available
- Session management
- [ok] cups-pk-helper: Available
- Printer management
- [info] I2C/DDC: No monitors detected
- External monitor brightness control
- [ok] qt6-imageformats: Installed (5 formats)
- Formats: WebP, TIFF, GIF, JP2, ICNS (/usr/lib64/qt6/plugins/imageformats)
- [ok] kimageformats: Installed (4 formats)
- Formats: AVIF, HEIF, JXL, EXR (/usr/lib64/qt6/plugins/imageformats)
- [ok] Terminal: ghostty
- [ok] Network: NetworkManager
- NetworkManager present. Using NM API.
- [ok] matugen: Installed
- Dynamic theming
- [ok] cava: Installed
- Audio visualizer
- [ok] khal: Installed
- Calendar events
- [ok] danksearch: Installed
- File search
- [info] dankcalendar: Not installed
- Calendar app
- [ok] fprintd: Installed
- Fingerprint auth
- [ok] adw-gtk3: Installed
- GTK3 dynamic theming (system copy, applied on next theme apply)
Config Files
- [ok] settings.json: Present
- /home/v8v88v8v88/.config/dms/settings.json
- [ok] clsettings.json: Present
- /home/v8v88v8v88/.config/dms/clsettings.json
- [ok] plugin_settings.json: Present
- /home/v8v88v8v88/.config/dms/plugin_settings.json
- [ok] session.json: Present
- /home/v8v88v8v88/.local/state/dms/session.json
- [ok] dms-colors.json: Present
- /home/v8v88v8v88/.cache/dms/dms-colors.json
Services
- [ok] dms.service: enabled, active
- Wanted by niri.service
- [info] greetd: disabled
- [ok] xdg-desktop-portal: Settings portal reachable
Environment
- [info] QT_QPA_PLATFORMTHEME: gtk3
- [ok] gtk3 plugin (Qt6): Installed
- /usr/lib64/qt6/plugins/platformthemes/libqgtk3.so
- [info] QT_QPA_PLATFORMTHEME_QT6: Not set, Qt6 uses QT_QPA_PLATFORMTHEME
- [info] QS_ICON_THEME: Not set
- [info] XDG_MENU_PREFIX: Not set
Fonts
- [ok] Normal Font: Adwaita Sans
- Available via fontconfig
- [ok] Monospace Font: Adwaita Mono
- Available via fontconfig
- [ok] Display Font: DM Serif Display
- /home/v8v88v8v88/.config/quickshell/dms/DCommon/assets/fonts/dm-serif-display/DMSerifDisplay-Regular.ttf
Summary: 0 error(s), 0 warning(s), 40 ok
Description
When the bar has "No background" enabled, the battery widget still gets a pulsing background once the battery reaches the critical level. The pill fades from transparent to Theme.error, so a dark reddish blob blinks behind the icon on a bar that should have no widget backgrounds. The icon also fades toward Theme.surface, which makes it hard to see without a background.
Cause: Modules/SurfaceWidgets/BarPill.qml returns "transparent" for defaultFillColor when noBackground is set, but Modules/DBar/Widgets/Battery.qml ignores that during the critical pulse:
fillColor: critical ? battery.mixColor(defaultFillColor, Theme.error, criticalPulse) : defaultFillColor
contentColor: critical ? battery.mixColor(defaultContentColor, Theme.surface, criticalPulse) : defaultContentColor
"transparent" is rgba(0, 0, 0, 0), so mixing it toward Theme.error passes through dark, semi-opaque reds.
Possible fix: when noBackground is on, keep fillColor at defaultFillColor and pulse only the content color between defaultContentColor and Theme.error.
Note: I run a locally patched copy of the shell (DMS_SHELL_DIR), but these lines are unchanged from stock 2.0.0.
Expected Behavior
No background should appears. Only the battery icon pulses to show the critical state.
Steps to Reproduce
- Settings → Bar → enable "No background".
- Leave the battery critical animation enabled (default).
- Let the battery drop to the critical level while discharging.
- A dark red pill pulses behind the battery icon and the icon darkens.
Error Messages/Logs
No response
Screenshots/Recordings
- Dominant language
- QML
- Stars
- 8.4k
- Forks
- 549
- PR merge metrics
- No merged PRs in 30d
Getting set up
- No Dockerfile or Docker Compose file
- Has a pull request template
- Read the contributing guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from AvengeMedia/DankMaterialShell
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 74/100
AvengeMedia/DankMaterialShell#3853 ·
-
bug niri
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
AvengeMedia/DankMaterialShell#3828 ·
-
All Enhancement
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
AvengeMedia/DankMaterialShell#3804 ·
-
discussion
Difficulty 2/5 1-3 hours Newbie friendliness 75/100
AvengeMedia/DankMaterialShell#3543 ·
-
discussion
Difficulty 1/5 Under an hour Newbie friendliness 74/100
AvengeMedia/DankMaterialShell#3485 ·
All issues in AvengeMedia/DankMaterialShell
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 65/100
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
Maintainers usually reply within 1 day
-
status: needs-triage
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
JabRef/jabref#17546 · 1 comment ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
-
Difficulty 1/5 Under an hour Newbie friendliness 88/100
Maintainers usually reply within 1 day