When a bar with background transparency + blur uses auto-hide, the
ext-background-effect-v1 blur region was only slid off-surface via the
reveal Translate, but the region object stayed non-empty.
Hyprland gates layer-surface blur on `!m_blurRegion.empty()`, so the
non-empty region keeps blur enabled; the renderer then intersects the
off-surface region with the surface box, the clip degenerates to empty,
and an empty clip is treated as "unclipped" — so the whole bar surface
box gets blurred, leaving a blurred strip where the hidden bar would be.
(niri clips correctly, so it never showed there.)
Gate the published blur region on `barRevealed`: tear it down (null)
whenever the bar is not currently shown, so the region is genuinely
empty and the compositor disables the effect. Fixes#2656.
* feat: add battery settings tab and update battery widget interactions
* fix: import Quickshell.Io in BatteryTab.qml to fix Process type compilation error
* feat: move battery tab under media player and add notify when charge limit reached option
* chore: change default notification settings to false
* feat: move battery tab under Power & Security section in settings
* feat: add notification type button selection for battery alerts
Decouple weather data fetching from reverse geocoding so that
weather loads as soon as coordinates are available, even when
Nominatim is unreachable (e.g. mainland China).
- Fetch Open-Meteo weather immediately once lat/lon are known.
- Resolve city name in parallel via Nominatim -> Photon -> BigDataCloud.
- If all reverse geocoding fails, keep displaying weather with a
placeholder city name.
- Skip reverse geocoding entirely when the user has configured a
city name.
- Fall back to ip-api.com when GeoClue2 is unavailable or returns
zero coordinates.
- Add request-generation tracking to discard stale geocoding
responses after location changes.
- Hold explicit WeatherService refs in bar widget and dashboard tab.
Co-authored-by: lingdiansr <2077258365@qq.com>
- Add a full popout Notepad experience w/new layout settings
- New ability to choose the left or right side of the screen
- Add more safegaurds to preserve user data throughout
- New banner to show file reload/conflict handling
- New extensionless file support
- Polish settings with gap controls, compact buttons, and shortcuts help
* feat(control-center): add widget config overlay with showMountPath toggle for DiskUsage
Introduces WidgetConfigOverlay and DiskUsageWidgetConfigMenu components, allowing
users to toggle mount path visibility per DiskUsage widget in edit mode
* refactor(control-center): use Theme.iconSizeLarge and Theme.fontSizeLarge for small tiles
Standardize SmallDiskUsageButton and SmallBatteryButton sizing with Theme.iconSizeLarge
and Theme.fontSizeLarge, and unify font weight to Font.Bold on both tile widgets.
* fix(control-center): adjust SmallDiskUsageButton font size based on showMountPath
* refactor(control-center): simplify DiskUsage config menu i18n strings
Remove the redundant "Disk Usage Widget" title and the toggle description
to reduce translatable strings
* feat(WidgetsTabSection.qml): added dynamic width and static padding for DiskUsage
* feat(DiskUsage.qml):added functionality for dynamic width and static padding, also changed spacing to work like in cpu and ram monitor. Now they look complete and same
* fix(DiskUsage): restore display modes & formatting
---------
Co-authored-by: purian23 <purian23@gmail.com>
Fixes#2354
Root cause (tray freeze): In clickThrough mode, the PanelWindow mask uses
sectionRect() with mapToItem() to compute input regions. After DPMS resume,
the PanelWindow is recreated with width=0, and mapToItem() returns wrong
positions. The right section's implicitWidth doesn't change after creation
(fixed-size tray icons), so the mask binding is never re-evaluated when the
compositor sets the actual screen width. Adding barWindow.width as a binding
dependency ensures the mask recalculates on resize.
Root cause (wallpaper loss): Wallpaper PanelWindows are recreated by Variants
during screen reconnection before the compositor finishes output initialization.
The wallpaper Image renders at 0x0 dimensions, resulting in a black screen.
Changes:
- DankBarWindow: add barWindow.width dependency to clickThrough mask bindings
- DMSShell: add surface recovery mechanism (screen reconnect + session resume)
with progressive 2-pass timer (800ms + 2800ms) that recreates bar, Frame,
wallpaper, and dock surfaces after the compositor is ready
- WlrOutputService: re-request output state on session resume
Pulses the WiFi and Bluetooth status icons while a connection is in
progress (lock screen, DankBar control center button, control center
compound pill). The pulse is implemented as a reusable Widgets/DankBlink
component, and the wifi-connecting condition is centralized as
NetworkService.isWifiConnecting.
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- Replaced fullscreen hide/reveal toggles with Show Over Fullscreen layer toggles
- Added Launcher opt to Show Over Fullscreen setting
- Kept fullscreen stacking compositor-owned via top/overlay layer choices
- Fixed Hyrland Special Workspaces
- Updated DMS Advanced Configuration docs
- Introduces Standalone & Connected Modes
- Updated Animations & Motion effects for both modes
- Numerous QOL tweaks and updates throughout the system
- Highly inspired to the OG Caelestia Shell / @Soramanew