Hacktoberfest 2026: the issues maintainers tagged for October, open and beginner-friendly. Browse Hacktoberfest issues

Battery critical pulse shows a background on bars with "No background" enabled

Open Beginner friendly
#3,834 1 comment 0 reactions 0 assignees View on GitHub

@Mario-Mohar is already working on this.

Since Oct 21, 2026.

  • #3861 by @V8V88V8V88 — open

Assessment

Difficulty
2/5
Estimated time
1-3 hours
Newbie friendliness
76/100
Issue type
Bug
Clarity
Clearly specified
Activity status
Active
Domain
desktop, frontend

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

bug
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 Report

System

  • [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
  1. Settings → Bar → enable "No background".
  2. Leave the battery critical animation enabled (default).
  3. Let the battery drop to the critical level while discharging.
  4. A dark red pill pulses behind the battery icon and the icon darkens.
Error Messages/Logs

No response

Screenshots/Recordings
Image
Dominant language
QML
Stars
8.4k
Forks
549
PR merge metrics
No merged PRs in 30d

Getting set up

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from AvengeMedia/DankMaterialShell

All issues in AvengeMedia/DankMaterialShell

Similar issues

More Desktop Dev issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.