Skip to content

Releases: noctalia-dev/noctalia-shell

v4.7.0

19 Mar 12:12

Choose a tag to compare

🌙 Release Notes v4.7.0

A major update featuring a native audio analyzer, overhauled networking, advanced notification rules, and expanded compositor support.


✨ New Features

  • Audio: Native Pipewire spectrum (no external Cava needed), volume limit events, and per-app volume persistence.
  • Networking: Fully revamped UI with better signal icons and WPA-Enterprise support.
  • Notifications: Added pattern-based display rules (filter by app/body) and quick-access settings.
  • Dock: Native distro/custom icons, renamed "Static" mode to "Attached," and improved auto-hide performance.
  • Wallpaper: Precise interval timers, granular transition selection, and an expanded Wallhaven browser (70% height).
  • Clipboard: Added categories and "time ago" indicators.
  • Theming: Enhanced Ghostty and Zen Browser Kitty and the Pywalfox template.
  • Compositors: Improved native support for MangoWC (DWL-based) and Labwc (workspace/window tracking).
  • System: Support for GIF profile pictures, ddcutil dynamic sleep for brightness.

⚡ Improvements

  • Performance: Reduced GPU overhead on Dock auto-hide; optimized animations for blur compatibility.
  • UX: Added onTextChanged autosave for inputs, fixed Night Light visual noise, and improved settings search indexing.
  • Widgets: Fixed Media Mini width logic and Lock Screen text wrapping.

🐛 Bug Fixes

  • Stability: Resolved SIGSEGV crashes in Hyprland and Workspace pills; fixed re-entrant QML incubation crashes.
  • Hardware: Fixed crashes during monitor hotplugging and resolved Bar auto-hide race conditions.
  • UI: Patched OSD visibility logic, fixed Dock blur positioning, and corrected NCheckbox alignment.
  • Input: Prevented accidental settings loss on popup close.

Changes since v4.6.7

  • Release v4.7.0 (16c6181ba) by Lemmy
  • fix(config): ensure trailing slash (e8bca1722) by Lemmy
  • fix(wallhaven): adjust height calculation to prevent overshooting (5eb8b9cbc) by Lysec
  • chore(sysstat): removed dead code (d2396b3e6) by Lemmy
  • chore(autofmt): lysec cloned again (0065d9b53) by Lemmy
  • fix(about): show noctalia-qs new version string (7a6541617) by Lemmy
  • chore(i18n): add notification rules translations (5547a2716) by Lysec
  • fix(notification-rules): do not allow empty patterns (bc258254d) by Lysec
  • feat(notifications): add notification display rules (381444bc2) by Lysec
  • fix(ntextinput): use onTextChanged for autosave, onEditingFinished instead of onAccepted (9f8bf988f) by Lysec
  • Revert "fix(ntextinput): going back to "textEdited" so you dont have to press enter or change focus to apply the changes." (0756e9f56) by Lemmy
  • fix(Settings): prevent keyboard search from clearing/navigating on second keystroke (e6ca3889c) by Lysec
  • fix(wallpaper): fixed wallhaven pager. increased height from 45% to 70% (ecad305dd) by Lemmy
  • Merge pull request #2211 from nZo-sp/fix/ignore-sounde-notification (79207af62) by Lysec
  • Fix ignore sound for app without a name but with a desktopEntry defined (339443932) by nZo-sp
  • Merge pull request #2210 from linusammon/main (f3386cd81) by Lemmy
  • chore(flake): bump flake.lock (8222cf3d5) by Linus Ammon
  • fix(labwc): minor fixes to support upstream ext-workspace-v1 (bbee20a1a) by Lemmy
  • Revert "add logging to HyprlandService & CompositorService" (739d84a21) by Lysec
  • Merge branch 'dwl-mango' (09b4c927c) by Lemmy
  • Merge branch 'labwc' (9610e3672) by Lemmy
  • chore(merge): bar autohide + hyprland fixes (1ed2e5762) by Lemmy
  • Merge pull request #2205 from nZo-sp/feat/audio-service-min-max-event (d9ae5e617) by Lysec
  • Added min/max events in audio service to notify subscribers when audio limit is reached (71568bd2a) by nZo-sp
  • fix(bar): never unload content when bar is hidden (2ffb41a2b) by Lemmy
  • fix(network): force opaque on nbox delegate to avoid ugly opacity. (23a5b1de5) by Lemmy
  • fix(hyprland): same fix but with a simpler Qt.callLater approach (08ed43d9a) by Lemmy
  • fix(notif/workspace): reverting some of the previous attempt from timer back to Qt.callLater (306279716) by Lemmy
  • fix(hyprland): defer workspace ListModel updates to prevent SIGSEGV during incubation (8370ef36a) by Lemmy
  • Merge pull request #2203 from haikalllp/fix/update-pywalfox-colors (d51bc9578) by Lysec
  • fix(hyprland): correct focusedWindowIndex after sorting window list (5e95658fa) by Lysec
  • fix(bar): attempt to avoid crash when autohide is used (311fc08ac) by Lysec
  • Revert "fix(bar): defer update to next cycle" (46a3c7e2d) by Lysec
  • fix(bar): defer update to next cycle (2fcd219c3) by Lysec
  • fix: remap pywalfox colors to better support light color theme (467bac002) by haikalllp
  • fix(popup): disable autoclose by clicking outside to avoid loosing settings by accident. (e39ff3a81) by Lemmy
  • fix(ntextinput): going back to "textEdited" so you dont have to press enter or change focus to apply the changes. (c2d961712) by Lemmy
  • fix(tooltip): limit tooltip radius when box is too small, larger horizontal padding for grid mode. (dd6485871) by Lemmy
  • fix(network): ethernet info - fix box border color (515eece59) by Lemmy
  • fix(network): removed hover effect, adjusting size and radius. (088c1e070) by Lemmy
  • chore(audioservice): minor cleanup (5614c16ea) by Lemmy
  • fix(zen-browser): more template adjustments (f6d398ecc) by Lysec
  • fix(zen-browser): add overflow button to template (8b356a2c3) by Lysec
  • fix(zen-browser): adjust template for new zen update (b647e385a) by Lysec
  • fix(bar): attempt at resolving widget incubation r...
Read more

v4.6.7

12 Mar 10:08

Choose a tag to compare

🌙 Release Notes v4.6.7

Quality-of-life improvements, workspace polish, and continued stability hardening.

✨ New Features

  • Workspace App Preview on Hover: Hovering over a workspace indicator now shows running application icons with smooth transition animations.
  • Exclusion Zone Inset Toggle: New bar setting to enable a 1px exclusion zone inset, giving more control over compositor window placement.
  • Lock/Unlock Hook Parameters: Screen lock and unlock hooks now receive a $1 parameter (lock or unlock) for scripting flexibility.
  • Audio Interface Nickname in Tooltip: The bar audio widget tooltip now shows the interface nickname for easier device identification.
  • Dock Blur Toggle: The dock now respects the blur toggle setting.
  • Disable Changelog Display: Added an option in About to hide the changelog popup on updates.

⚡ Improvements

  • Smarter Settings Search: Settings search index now supports visibility conditions, preventing results that point to settings invisible to the user.
  • Light Mode Panel Backgrounds: Reduced opacity applied to panel backgrounds in light mode for better readability.
  • Desktop Widget Settings Dialog: Improved title styling for a cleaner look.
  • Lock Screen Monitor Disconnect: Lock screen now detects and handles monitor disconnection gracefully.
  • noctalia-qs v0.0.8: Upgraded runtime with fixes for Wayland wl_output use-after-free crash on monitor hotplug, incomplete socket reads, toplevel deactivation cleanup.

🐛 Bug Fixes

  • Crash Fixes (SIGSEGV): Fixed workspace crashes by deferring compositor signal handlers and refreshWorkspaces to the next event loop with Qt.callLater.
  • Hyprland Keyboard Layout: Ignore bogus "error" keyboard layout reported by Hyprland.
  • Hyprland Toplevel Ordering: Sort toplevels by x/y coordinates to fix widget ordering in scrolling and master layouts.
  • Bluetooth TypeError: Prevent TypeError when Bluetooth device name or icon are not strings.
  • GTK Theming: Fixed noctalia.css not being appended correctly in gtk3/4.css.
  • Tab Button Transparency: Fixed NTabButton forcing full transparency incorrectly.

Changes since v4.6.6

  • Release v4.6.7 (3ab57ce06) by Lysec
  • fix(workspace): potential fix for SIGSEGV caused by re-entrant incubation (d0b505245) by Lysec
  • feat(bt): improve ui/ux for the auto-reconnect feature (3cdd99966) by Lemmy
  • feat(ncheckbox): allow custom labelSize (02a3d74c2) by Lemmy
  • fix(launcher): restore background behind icons (175e85302) by Lemmy
  • Revert "feat(launcher): trying a less boxy look" (71ca1b3f6) by Lemmy
  • feat(launcher): trying a less boxy look (96930af75) by Lemmy
  • feat(settings): allow up/down navigation in search results when settings are windowed (74b2bce93) by Lemmy
  • feat(settings): unified the settings search in a new singleton (49db78a22) by Lemmy
  • fix(workspace): more defer Workspace compositor signal handlers with Qt.callLater to avoid SIGSEGV (039be7d85) by Lemmy
  • chore(i18n/lockscreen): relocate the language to dateformat map for easier maintenance (84229bc74) by Lemmy
  • chore(i18n): update + autofmt (09dab00f2) by Lemmy
  • Merge pull request #1991 from tmarti2/workspace-show-app-hover (bb5ade4c4) by Lemmy
  • Merge pull request #2154 from pa1va/patch-2 (40e85956e) by Lemmy
  • Merge pull request #2155 from shalakushka1/patch-1 (dbb2e1568) by Lysec
  • Update translation for 'earlier' in Portuguese (995868004) by shalakushka
  • Merge pull request #2094 from rivera-diego/main (cc9bf7d33) by Lysec
  • Merge pull request #2152 from Aitor42/main (786013479) by Lysec
  • fix: prevent TypeError when Bluetooth device name or icon are not strings (cf4f6b70a) by pa1va
  • feat(settings): improved search index to support visibility conditions, prevent showing results that would be invisible to the user. Fix #2113 (d35f399f5) by Lemmy
  • Applies Lemmy's review (0c503ccea) by Thibault Martin
  • Add hover feedback on window icons (f3699e786) by Thibault Martin
  • Add hover feedback on border color (fd15bcf2d) by Thibault Martin
  • Add animation between workspace displays (a9526c3ab) by Thibault Martin
  • Remove unused hovered properties (c161f0496) by Thibault Martin
  • Show workspace applications on hover (a2443c6f8) by Thibault Martin
  • fix(workspace): defer refreshWorkspaces to next event-loop (8005958b8) by Lysec
  • detect monitor configured disconnect (9c9df0c15) by Aitor
  • feat(dock): respect blur toggle (45beac2f1) by Lysec
  • Merge branch 'main' of https://github.com/noctalia-dev/noctalia-shell (13f0b8fce) by Lysec
  • i18n (4a510629e) by Lysec
  • Merge pull request #2149 from iynaix/bump-flake-lock (a6c945c93) by Lysec
  • Bump flake.lock (cbb59f5a5) by Lin Xianyi
  • fix(hyprland): ignore bogus "error" keyboard layout. fix #1390 (719fd7ba7) by Lemmy
  • chore(settings): update settings-default.json (ec40cb81a) by Lemmy
  • feat(bar-audio): added interface nickname in tooltip (cc9dea142) by Lemmy
  • Merge pull request #2066 from SpeakingPNG/feat/configurable-exclusion-zone (6eacb55f4) by Lemmy
  • Merge branch 'main' of https://github.com/noctalia-dev/noctalia-shell (ffb37d529) by Lysec
  • fix(gtk): append noctalia.css in gtk3/4.css (a22d2c7d1) by Lysec
  • autofmt (2ee59546c) by Lemmy
  • Merge pull request #2147 from notiant/patch-22 (f4340333d) by Lemmy
  • Merge pull request #2148 from spiros132/main (836814bce) by Lysec
  • fix(desktop-widget-settings): Desktop widget settings dialog, title should look much better (6085f7b88) by Spyridon Siarapis
  • feat(hooks): add $1 lock/unlock parameter to screen lock and unlock hooks (aa0059851) by Lysec
  • Battery: ad...
Read more

v4.6.6

10 Mar 14:08

Choose a tag to compare

🌙 Release Notes v4.6.6

A stability-focused release - squashing crashes, hardening the rendering pipeline, and polishing rough edges across the shell.

✨ New Features

  • Smart Transparency: Auxiliary components now support smart translucency, with a toggle in Appearance settings.
  • Desktop Widget Grid Snapping: Desktop widgets can snap to a configurable grid, with a toggle for snapping scale.
  • Usage-Based Launcher Ranking: Launcher results are now ranked by usage frequency across all providers.
  • Wallpaper Refresh IPC: Added a new IPC call to refresh the wallpaper externally.
  • Draggable Desktop Settings: The desktop settings dialog popup can now be repositioned by dragging.
  • Scrollbar Visibility Toggle: Added an option to always show the scrollbar or only on hover.

⚡ Improvements

  • Floating Bar Margins: Increased max floating margins to 500px with spinbox controls, debounced updates, and correct smart panel positioning.
  • Launcher Refactor: Split Launcher into smaller files for maintainability; improved record usage.
  • Async Shape Rendering: Enabled async rendering for all CurveRenderer shapes for better performance.
  • Plugin Settings Popup: Custom width support for plugin settings popups.
  • Graphical Battery: Fixed scaling to not follow bar font size.

🐛 Bug Fixes

  • Crash Fixes (SIGSEGV): Fixed multiple crashes caused by re-entrant ListModel incubation in bar widgets, notifications, and settings; degenerate Shape paths in backgrounds; qTriangulate crashes on flat corner arcs; and CurveRenderer crash in NWaveSpectrum (replaced with shader).
  • Templating: Fixed user templates not processing when standard templates are disabled.
  • Launcher Navigation: Fixed up/down keyboard navigation with dynamic grid columns.
  • Hooks: Deferred HooksService init to delayedInitTimer for reliable startup hook execution.
  • Widgets: Added layout margins to bordered widgets to prevent border clipping.

Changes since v4.6.5

  • Release v4.6.6 (ed9f64cbb) by Lysec
  • feat(settings): moving translucent widgets toggle to appearance subtab (2b12dcbf9) by Lemmy
  • feat(settings): add translucent widgets toggle to gate smart transparency (eafcb91b8) by Lemmy
  • i18n(update) (0d495490c) by Lemmy
  • Merge pull request #2138 from tibssy/feat/smart-transparency (8ac14b185) by Lemmy
  • perf(shapes): enable async rendering for all CurveRenderer shapes (e8ee0548c) by Lemmy
  • fix(settings): defer ListModel population to prevent re-entrant incubation SIGSEGV (87c072e2c) by Lemmy
  • fix(notifications): defer Loader activation to prevent re-entrant incubation SIGSEGV (835b12ed0) by Lemmy
  • Merge pull request #2141 from pa1va/patch-1 (d4d173ebb) by Lemmy
  • Update AdvancedMath.js (f4f75cbd2) by pa1va
  • Revert "fix(launcher): prevent arbitrary js execution. fix #2115" (7bb88e691) by Lemmy
  • fix(hooks): defer HooksService.init to delayedInitTimer for startup hook reliability (93deeda58) by Lemmy
  • fix(launcher): fix gradients and nbox colors (4a198b546) by Lemmy
  • feat(widgets): implement smart transparency for auxiliary components (5fb4286d9) by tibssy
  • fix(widgets): add Layout.margins to bordered widgets to prevent border clipping (8450adfda) by Lemmy
  • feat(launcher): splitted in smaller files for easier maintainability. improved record usage. (15decbe05) by Lemmy
  • fix(backgrounds): prevent qTriangulate crash on framed bar outer rectangle arcs (44045fa02) by Lemmy
  • fix(backgrounds): enforce minimum arc radius to prevent qTriangulate SIGSEGV on flat corners (77b253f1c) by Lemmy
  • Merge pull request #2117 from spiros132/desktopwidgets-grid-scale (8be7a34b4) by Lysec
  • Merge branch 'main' of https://github.com/noctalia-dev/noctalia-shell (e8e5d87fc) by Lysec
  • feat(launcher): implement usage-based ranking for results across providers (7decba160) by Lysec
  • fix(desktop-widgets): Added a toggle for snapping the scale (87299dda0) by Spyridon Siarapis
  • Merge branch 'noctalia-dev:main' into desktopwidgets-grid-scale (d95806f44) by Spyridon Siarapis
  • fix(bar): defer ListModel sync to prevent re-entrant incubation SIGSEGV (54ec0878f) by Lemmy
  • fix(backgrounds): another take on fixing potential degenerate Shape paths (4d0897d6e) by Lemmy
  • fix(audio): replace NWaveSpectrum CurveRenderer with shader to fix SIGSEGV crash (e4593216f) by Lemmy
  • fix(desktop-widgets): resolve widgetMetadata ReferenceError in DraggableDesktopWidget (d3732cb19) by Lemmy
  • fix(plugins): ensure settings.json is never copied on update (97ab97d4f) by Lemmy
  • feat(ui): add toggle to show/hide scrollbars on hover (9536553dc) by Lysec
  • feat(plugins): settings popup allow for custom width (0294759a5) by Lemmy
  • chore(niconbutton): renamed allowScroll to handleWheel for clarity (29d0b1f63) by Lemmy
  • fix(ntextinput): fix chopped off border due to fractional scaling + never swallow mousewheel events (cab111771) by Lemmy
  • fix(launcher): use a binding for dynamic gridColumns - fix up/down navigation. (372eaeed2) by Lemmy
  • Merge pull request #2112 from spiros132/main (fe9f52d35) by Lysec
  • Merge pull request #2122 from notiant/patch-21 (4fcc622c5) by Lemmy
  • fix(launcher): prevent arbitrary js execution. fix #2115 (2f4b80d72) by Lemmy
  • fix(nbox): update comment (250242c26) by Lemmy
  • fix transparency issues with connected box for Bluetooth/WiFi (e5a6bcdf1) by notiant
  • feat(desktop-widgets): Added support for grid snapping of the desktop widgets (cbc650751) by Spyridon Siarapis
  • fix(bar): graphical battery - dont eyeball the scale (bfdf883b0) by Lemmy
  • chore: format (1be78b506) by Spyridon Siarapis
  • fix(bar): graphical battery should not follow bar font size. (864d6ad72) by Lemmy
  • fix(bar): simplified floating margins ui ([4d07c8a](4d07c8ad187d000ef...
Read more

v4.6.5

08 Mar 12:34

Choose a tag to compare

🌙 Release Notes v4.6.5

✨ New Features

  • System-wide Translucency: NBox containers now default to partial opacity for a consistent glass-effect shell.
  • Audio Visualizer: Added a brand new configurable desktop widget.
  • Plugin Settings API: Simplified widget setting creation for plugins, including built-in value saving.
  • Launcher Blur: Added support for background blur/overlay effects in Launcher overlay mode.
  • Workspace Fonts: Added font-weight customization for the Workspaces bar.

⚡ Improvements

  • NGraph Shaders: Replaced Shape elements with a pure shader approach for superior performance and stability.
  • Settings UX: Reorganized System Monitor into a System > Performance hierarchy.
  • Smart OSD: Volume OSD now takes priority over input volume to reduce UI noise.
  • Connectivity: Added a queue system for more reliable Bluetooth auto-connect.
  • Code Cleanup: Simplified version parsing; removed legacy pacman code and terminal.py.
  • Sway Mapping: Floating windows are now correctly included in workspace mapping.

🐛 Bug Fixes

  • Resolution: Fixed reactive UI scaling when compositor resolution changes.
  • Templating: Fixed issues where user templates wouldn't run if built-ins were disabled; hardened user-templates.toml creation.
  • Session Menu: Fixed keybind renumbering and added a hotkey for Userspace Reboot.
  • Widget Manifests: Fixed missing settings context actions for plugins.

Changes since v4.6.4

  • Release v4.6.5 (6447221fa) by Lemmy
  • chore(i18n) update (0cbc42f2f) by Lemmy
  • feat(nbox): clamping min opacity instead of using a ratio. (5f319987a) by Lemmy
  • fix(display): reactively update resolution when compositor reports changes. fix #1845 (846106047) by Lemmy
  • fix(emacs): fix template tooltip path (2480e1097) by Lysec
  • Merge pull request #2095 from spiros132/main (88f95c82e) by Lemmy
  • fix: Change from referencing widgetData to widgetSettings.data (46b149cb9) by Spyridon Siarapis
  • fix(templating): run user templates even when no build-int templates are enabled (5f2020151) by Lemmy
  • fix(templating) implemented a more robust creation of user-templates.toml (1f8d1bb37) by Lemmy
  • fix(session-menu): renumber keybinds on toggle and assign number to Userspace Reboot (4d56a2aa9) by Lysec
  • chore(cava): CavaService => SpectrumService (77de0b0ad) by Lemmy
  • Merge pull request #2091 from notiant/patch-19 (552543091) by Lemmy
  • Merge pull request #2092 from notiant/patch-20 (8aaf39212) by Lemmy
  • Merge pull request #2100 from Mathew-D/main (f80f10c51) by Lemmy
  • chore(dead-code): removing terminal.py (367d82404) by Lemmy
  • feat(nbox): added comment (cd8a650b4) by Lemmy
  • feat(nbox): less transparency on containers (e50361f2f) by Lemmy
  • feat(ui): using panel opacity on all nboxes (unless marked as opaque) + launcher adjustments for a nice transluent look (76e7f30fc) by Lemmy
  • i18n(update): font weight (b47a6e22b) by Lemmy
  • settings-widgets-default (73a6717a7) by Lemmy
  • Merge branch 'main' of github.com:noctalia-dev/noctalia-shell (90dd430c1) by Lemmy
  • Merge pull request #2099 from markvincze/add-workspace-fontweight-setting (525d1bb74) by Lemmy
  • sway: include floating_con windows in workspace mapping (dcf8c3846) by Mathew-D
  • i18n (f75fce63e) by Lysec
  • feat(desktop-widgets): add configurable audio visualizer widget and fix CAVA deregistration lifecycle (5533d3552) by Lysec
  • Introduce setting to configure the font weight in the Workspaces widget (af76e6a44) by Mark Vincze
  • docs(bug report): add noctalia-qs version to template (6f81d7d56) by Lysec
  • i18n(system): removed "threshold" and use Warning and Critical directly (c0311c170) by Lemmy
  • Merge branch 'main' of https://github.com/noctalia-dev/noctalia-shell (82a5507e9) by Lysec
  • chore(PR template): add info about drafts (67e1c7054) by Lysec
  • Merge branch 'main' of github.com:noctalia-dev/noctalia-shell (3c36cfa63) by Lemmy
  • feat(launcher): launcher in overlay now support blur/background effect (ea4fd3c27) by Lemmy
  • i18n (88006647e) by Lysec
  • chore(settings): remove unused system performance description key (74e959874) by Lysec
  • Merge branch 'main' of https://github.com/noctalia-dev/noctalia-shell (bb4e8fd9e) by Lysec
  • fix(settings): turn System Monitor into System with Performance subtab (3452619f5) by Lysec
  • Merge pull request #2098 from D3rJust1n/main (f2d16688b) by Lemmy
  • Merge branch 'main' into main (25ab856c6) by Lemmy
  • feat (about/version): removed fallback to board_name, made it simpler (aac61f12a) by D3rJust1n
  • Merge branch 'main' of github.com:noctalia-dev/noctalia-shell (1a5cf691f) by Lemmy
  • fix(ngraph): removed Shapes and using a pure shader approach. (113544085) by Lemmy
  • Revert "Merge pull request #2096 from D3rJust1n/main" (31b636ee2) by Lysec
  • Merge pull request #2096 from D3rJust1n/main (b9bde5476) by Lysec
  • feat (about/version): added fallback to board_name if product_family is N/A (6d7d5dfcd) by D3rJust1n
  • fix format (d0772d993) by Spyridon Siarapis
  • fix(desktop-widgets): Fixed a bug where the widget settings context action didn't show if you didn't have the settings in the manifest (c2b2dac1f) by Spyridon Siarapis
  • feat(desktop-widgets): Added a better way for plugins to create the desktop widget settings. This includes a save function to save the values that have been changed ([397c5d1](https://github.com/noctalia-dev/noctalia-shell...
Read more

v4.6.4

06 Mar 13:43

Choose a tag to compare

🌙 Release Notes v4.6.4

This update focuses on system stability and performance. We’ve cleared out several underlying bugs and potential crashes to ensure a smoother, more reliable experience alongside some sleek UI refinements.

✨ New Features

  • Settings UI: Added panel scrollbars, overhauled the Version/About tab, and introduced a new toggle for blur effects.
  • Bluetooth Control: New per-device toggle to manage Auto-Connect behavior.

⚡ Improvements

  • Performance: Launcher plugins now persist across cycles for faster startup; Bluetooth polling now pauses during lock to save resources.
  • Theming: Improved readability for Ayu and Emacs templates; added automated migrations for outdated color schemes.
  • Navigation: Refined Tab/Shift+Tab focus in the Launcher and improved notification spanning across multiple screens.

🐛 Bug Fixes & Stability

  • System Stability: Resolved several potential crashes related to shape rendering.
  • Lock Screen: Reduced focus churn and improved stability after system resume.
  • Workspace: Fixed interaction issues where empty space wasn't clickable in grouped mode.
  • Wallpapers: Restored the autoswitch functionality by fixing the Power service connection.

Changes since v4.6.2

  • v4.6.4 (b455dbb11) by Lemmy
  • fix(launcher/sessionProvider): executeAction was broken due to panel content being unloaded before the action could run (072eb6d05) by Lemmy
  • feat(blur): added a new option to toggle it on/off (cd0da159c) by Lemmy
  • i18n-update (149592656) by Lemmy
  • Merge pull request #2037 from tmarti2/fix-tab-selected-in-launcher (ccb730c82) by Lemmy
  • perf(launcher): persist plugin provider instances across open/close cycles. (8cdf6c061) by Lemmy
  • fix(lockscreen): reduce focus churn after resume (f8ee28436) by Lysec
  • Merge branch 'main' of https://github.com/noctalia-dev/noctalia-shell (3b3589ae5) by Lysec
  • feat(settings): show scrollbar when scrollable (db3b5bad0) by Lysec
  • Merge pull request #2086 from HANDZCZ/edit-qt-template (9b8af28b2) by Lysec
  • chore(README): adjust noctalia shell capital letters (7c7267d8d) by Lysec
  • fix(BluetoothService): pause bluetoothctl polling during lockscreen (11a7f2694) by Lysec
  • fix(workspace): make empty space clickable in grouped mode (7a58a130c) by Lysec
  • autofmt (52a7165b4) by Lemmy
  • i18n-update for bt auto connect (4ef03e6ac) by Lemmy
  • Merge pull request #2085 from turannul/pr/bluetooth-improve-auto-connect (acdcc2ce0) by Lemmy
  • Merge pull request #2035 from DzmingLi/fix/calendar-events-location (babcf5cdd) by Lemmy
  • -- unnecessary variable -- (read desc) (bdc263ea6) by Turann_
  • fix(theming): fix and add colors to qt template (a3eb10078) by HANDZCZ
  • Update BluetoothSubTab.qml (237227f28) by Turann_
  • Merge branch 'noctalia-dev:main' into pr/bluetooth-improve-auto-connect (c998d4bbd) by Turann_
  • make the text interactive. (6d4ca49da) by Turann_
  • ngraph: avoid crashing CurveRenderer by using linear fill paths (38e75bb24) by Lemmy
  • ngraph: move shape safeguarding (6eb5085d0) by Lemmy
  • Merge branch 'noctalia-dev:main' into pr/auto-connect-improvements (47e48bdcb) by Turann_
  • brightness: use declarative binding instead of updateMonitor (7a3f54964) by Lemmy
  • Merge branch 'main' of https://github.com/noctalia-dev/noctalia-shell (80f93b395) by Lysec
  • fix(NSlider): guard filled CurveRenderer shape against zero-height geometry (1ea8654d5) by Lysec
  • Merge branch 'noctalia-dev:main' into auto-connect-improvements (6fab8f05e) by Turann_
  • screen-corners: safeguard shape (b9f876ed0) by Lemmy
  • Update BluetoothService.qml (62c794765) by Turann_
  • add autoconnect control (e4295843c) by Turann_
  • Update en.json (8058cbe3b) by Turann_
  • backgrounds: even more safeGuard (879bdce70) by Lemmy
  • launcher-overlay: safeguard Shape (10f7ed017) by Lemmy
  • widget-sliders: safeguard Shape (a43b944b9) by Lemmy
  • fix(PanelBackground): avoid degenerate ShapePath when panel slot is not renderable (baf4971a6) by Lysec
  • Merge branch 'main' of https://github.com/noctalia-dev/noctalia-shell (2f8764c91) by Lysec
  • fix(NWaveSpectrum): prevent CurveRenderer triangulation crash on degenerate/invalid paths (df231d586) by Lysec
  • Merge pull request #2084 from qalqa-dev/main (91d7d07b2) by Lysec
  • chore(zen-browser): removed unused groupboxes background (f40eafcdc) by qalqa-dev
  • Merge pull request #2082 from onyx-tty/feat/improve-headline-visibility-with-high-opacity-colors (2619d99d5) by Lysec
  • Merge pull request #2081 from CLEMENTINATOR/fix-wallpaper-switching (187071c13) by Lysec
  • fix(wallpaper): add missing Power service import to fix autoswitch (4987e4cb5) by Clement Bouvet
  • Templates/emacs: improve headline visibility with high opacity colors (#2034) (d38cc1dd9) by onyx-tty
  • that was not required. (cac1b19b7) by Turann_
  • fix(ayu): adjust text color to make it more readable (e60ce173d) by Lysec
  • migration(theming): redownload outdated color schemes to fix terminal format (677413e6f) by Lysec
  • templates: terminal: foot-predefined: replace [colors] with [colors-dark] (6ce879866) by Lemmy
  • Merge branch 'colorgen': m...
Read more

v4.6.3

05 Mar 04:08

Choose a tag to compare

Release v4.6.3

Changes since v4.6.2

  • v4.6.3 (465deb54c) by Lemmy
  • backgrounds: fix coincident subpath causing invisible bar fill on simple bar type (37153772e) by Lemmy
  • Bumping version (3ec738e75) by Lysec

v4.6.2

05 Mar 01:18

Choose a tag to compare

🌙 Release Notes v4.6.2

⚠️ IMPORTANT

Starting with v4.6.2, noctalia-shell now strictly requires noctalia-qs to function. Please ensure both are updated to the latest version.

✨ New Features

  • Niri Blur: Added support for background blur for users on the unreleased Niri blur branch.
  • Bluetooth: Added startup auto-connect for trusted devices (toggleable).
  • Bar: New configurable right/middle-click actions; supports custom shell commands for all mouse events.
  • System Stats: Added per-core CPU monitoring and "Open Settings" action to System Monitor.
  • Performance: Background rendering is now disabled in Performance Mode.
  • IPC: Restored wallpaper get; added immediate geocoding/weather refreshes.
  • Session: Added Userspace Reboot option.

⚡ Improvements

  • Launcher: Major performance overhaul (deferred initialization, async loading, smarter reloading).
  • UI/Styles: Refined widget scaling, reduced launcher font sizes, and removed fullscreen sharpening.
  • Templates: Updated Yazi and Foot; made Cava backgrounds transparent.

🐛 Bug Fixes

  • Idle/Power: Fixed lost lock/suspend events and resolved "never-lock" logic bugs.
  • Stability: Added null guards for screen reconnections and Media Service; prevented ShapePath crashes.
  • Widgets: Fixed vertical taskbar thickness, duplicate pinned icons, and custom button click behaviors.
  • Misc: Fixed Toast density scaling, Settings search highlights, and Session Menu localization.

Changes since v4.6.1

  • Release v4.6.2 (b3b20c73e) by Lysec
  • main-screen: screen can be null for a moment when reconnecting (ebeca6c26) by Lemmy
  • media-service: add null guard and use dbusName for player blacklist matching (c56fa106b) by Lemmy
  • Merge pull request #2070 from notiant/patch-17 (57b208f04) by Lemmy
  • Merge pull request #2069 from tibssy/fix/bar-behavior-i18n (c122e6901) by Lemmy
  • i18n-update (a8e22a4e9) by Lemmy
  • Fix Bluetooth auto-connect not working on startup (ff0297d56) by notiant
  • fix(i18n): add missing error toast translation for custom commands (dddbb4627) by tibssy
  • backgrounds: fix degenerate inner hole subpath in BarBackground when not framed (c9b6fc9ef) by Lemmy
  • location: IPC call now triggers geocoding and weather refresh. Fix #2065 (cf326a71f) by Lemmy
  • media-mini: properly handle cava unregistration when hidden. (13dad3965) by Lemmy
  • default-settings: proper generation (44510a61e) by Lemmy
  • combobox: add textRole to silence QVariantMap-to-QString warnings (fbbf419b3) by Lemmy
  • backgrounds: guard against degenerate ShapePaths crashing Qt CurveRenderer (4163fc763) by Lemmy
  • nlineargauge: comment cleanup and simplified logic with a single "raw" property (57b9c2edd) by Lemmy
  • Merge pull request #2063 from 1Naim/fix/foot-1.26 (ced71e945) by Lysec
  • i18n (c8dc4934b) by Lysec
  • nlineargauge: more accurate but more squished at low values (896c67893) by Lemmy
  • nlineargauge: snapping to zero if the value is too small to be rendered beautifully. (d55f81c41) by Lemmy
  • autofmt (6732eac58) by Lemmy
  • nlineargauge: tweaking for vertical vs horizontal (f342abf44) by Lemmy
  • Templates: terminal: foot: Replace [colors] with [colors-dark] (ca74a5e74) by Eric Naim
  • Merge pull request #2062 from AstronW/fix/idle-fade-stage-queue (0a7e81c34) by Lysec
  • Merge pull request #2046 from tibssy/feat/bar-behavior-actions (c2b84a53e) by Lysec
  • i18n (229da6473) by Lysec
  • idle: queue staged actions during fade to prevent lost lock/suspend (72570bab3) by astronw
  • idle: removed suppressUntil, fixes bug where a 'monitor' (lock) would not execute (92161fa13) by Lemmy
  • launcher: cleanup (7ff84f78c) by Lemmy
  • Merge pull request #2044 from eric-handley/fix/launcher-performance (3f54b9657) by Lemmy
  • sysstat: dont make showCpuCore disabled when showCpuUsage is off - as it's also used in the tooltips. (7742f09d4) by Lemmy
  • nlineargauge: enforce minium fill size to avoid a weird look. It's either that or removing the rounded corners. (f2d40c2d2) by Lemmy
  • sysstat: show cpu-cores at false by default (259aa1b93) by Lemmy
  • Merge pull request #1962 from tmarti2/per-core-cpu-stats (3bc4b0fc4) by Lemmy
  • bt: auto-connect cleanup (a513db084) by Lemmy
  • Merge pull request #1981 from cbxcvl/feature/bluetooth-autoconnect (abb770469) by Lemmy
  • userspace-reboot: cleanup (19d720fab) by Lemmy
  • fix(launcher): use readonly prop to check if animations are enabled (52ae4333e) by Eric Handley
  • Merge pull request #2026 from turannul/pr/implement-userspace-reboot (eec84e66d) by Lemmy
  • wallpaper: removing subtle sharpeing for fullscreen wallpapers - kept it on thumbnails. Fix #2041 (f70966558) by Lemmy
  • Merge branch 'noctalia-dev:main' into pr/implement-userspace-reboot (2bd8160da) by Turann_
  • refactor(bar): remove verbose logging from custom command execution (6fbe7e6cc) by tibssy
  • feat(bar): add custom command support for bar mouse actions (fa3f4a9b8) by tibssy
  • refactor(settings): remove redundant right-click option from control center (ef166d8ea) by tibssy
  • fix(i18n): add missing scroll behavior translations (646d4e633) by tibssy
  • feat(bar): implement middle-click action support for Bar Behavior (f1b5e41d3) by tibssy
  • feat(bar): extend rightClickFollowMouse support to the Settings panel (829babad2) by tibssy
  • feat(bar): implement optional mouse-following for right-click panel placement ([bd91405](https://github.com/...
Read more

v4.6.1

01 Mar 22:34

Choose a tag to compare

🌙 Release Notes v4.6.1

⚠️ Action Required: Migrate to noctalia-qs

Starting with this release, Noctalia Shell requires noctalia-qs instead of quickshell. The shell will not work with a plain quickshell binary going forward.

noctalia-qs is our own maintained fork of Quickshell and is now the only supported runtime. This lets us ship shell-specific features, fix bugs, and keep the QML API stable without depending on upstream Quickshell releases.

Please update before or immediately after upgrading to v4.6.0. Continuing to run Noctalia with the old quickshell binary will cause breakage and is no longer supported.

⚠️ Systemd Startup No Longer Supported

The systemd service assets have been removed from the repository. Launching Noctalia via systemd is no longer a supported startup method. Please switch to launching it directly from your compositor's startup configuration (e.g. exec noctalia-qs -c noctalia-shell in your compositor config).

✨ New Features

  • Dock: Indicator Customization: Indicator thickness, color, and opacity are now configurable. Frame indicator support added for all bar and dock types. Indicator aligns to the absolute edge for easier triggering, with animated position and size transitions.
  • Bar: Workspace Scroll Actions: Scroll on empty bar areas to switch workspaces, with wrap-around and reverse scroll options. Niri content scrolling is also supported.
  • Bar: Media Mini Side Buttons: The media mini bar widget now responds to mouse side buttons for track navigation.
  • Bar: Tabular Clock Numbers: The bar clock uses the tnum OpenType feature so digits don't shift width as time changes.
  • Lock Screen: Media Controls: Optional media controls can now be shown on the lock screen.
  • IPC: Monitor Power: New monitors-off and monitors-on IPC commands to toggle display power.
  • IPC: Wallpaper Random Screen: The wallpaper random IPC command now accepts a screen argument to target a specific monitor.
  • Notifications: Focus on Click: Clicking a notification in the history panel now focuses the sender window.
  • Control Center: Right-Click Toggle: New option to disable the "open at cursor position" behavior when right-clicking the bar.
  • About: noctalia-qs Version: The About panel now shows the running noctalia-qs version.
  • Theming: Vencord Flatpak Template: Added a theming template for the Vencord Flatpak variant.

⚡ Improvements

  • Idle Settings: Settings tab layout overhauled. User-defined commands can now be mixed in with built-in idle actions. Updated default values.
  • NSpinBox: Enter key now confirms the value.
  • Settings: Enter is now a second default keybind for confirming settings dialogs.
  • System Stats: Network speed, disk space, memory, and swap now use decimal units for consistency.

🐛 Bug Fixes

  • Idle: Monitors are now correctly restored when resuming from idle screen-off.
  • Dock: Fixed floating dock centering with vertical bars.
  • Dock: Fixed auto-close/hover edge cases and edge trigger reliability.
  • Bar: Blur region now collapses correctly when the bar is auto-hidden.
  • Notifications: Fixed action invocation order when dismissing a notification.
  • Launcher: Item images now correctly respect preferredGridCellRatio in grid view.
  • Launcher: Fixed scroll being interrupted when hovering the pin button.
  • Keyboard Layout: Sway keyboard layout now updates reactively via compositor events.
  • Calendar: Fixed multi-day Khal events not displaying correctly.
  • Calendar: Fixed a spurious space in the header when the city name is disabled.
  • Bluetooth: No longer attempts to invoke bluetoothctl when it is not installed.
  • Workspace (Hyprland): Removed spurious "previous workspace doesn't exist" warning on a single workspace.
  • Session Menu: Fixed NBox background color in regular (non-blur) mode.
  • Widgets: Widget tooltips are now hidden while a panel is open.
  • Custom Button: Default action is now set correctly.

Changes since v4.6.0

  • release v4.6.1 (573de3b21) by Lemmy
  • control-center: added a new option to disable the right click open at cursor pos. (1c3760b73) by Lemmy
  • about: added noctalia-qs version display (fcd08289a) by Lemmy
  • idle: updated default settings (025a49f36) by Lemmy
  • mango: simplified monitor turnOff/on commands in a single call to avoid race conditions (72ac33c77) by Lemmy
  • i18n (16f2adf0a) by Lysec
  • Merge branch 'main' of https://github.com/noctalia-dev/noctalia-shell (419c30e8c) by Lysec
  • MangoService: fix idle monitor turn off/on (#2024) (eded9777f) by Lysec
  • Merge pull request #2025 from notiant/patch-14 (6f95ce189) by Lemmy
  • Change idle settings title & add Enter key for acceptance in NSpinBox (4025d7fb8) by notiant
  • Merge branch 'main' of https://github.com/noctalia-dev/noctalia-shell (cf7255b93) by Lysec
  • wallpaper-random: more robust after PR 1697 (e5e12b499) by Lemmy
  • sway: autofmt (7a288650b) by Lemmy
  • Idle: add user defined commands to basic commands, overhaul tab layout (bad2d7dd2) by Lysec
  • Merge pull request #1697 from fboulay/feature/add-option-to-choose-monitor-for-ipc-random-wallpaper (109f8109b) by Lemmy
  • Merge branch 'main' into feature/add-option-to-choose-monitor-for-ipc-random-wallpaper (74a816de2) by Lemmy
  • Merge pull request #833 from 3akev/main (1e56f67f8) by Lemmy
  • settings db + autofmt (81d145952) by Lemmy
  • Merge pull request #1889 from tibssy/feat/bar-scroll-actions (c0292d0d8) by Lemmy
  • launcher-core: more accurate comment + autofmt (bb0f875b8) by Lemmy
  • Merge pull request #1937 from krendil/main (95ff07fb9) by Lemmy
  • Merge pull request #1955 from AlexNabokikh/main (e785c16fe) by Lemmy
  • Merge branch 'main' of github.com:noctalia-dev/noctalia-shell (b562f964a) by Lemmy
  • ncolorchoice: added to the search index. (e6849d924) by Lemmy
  • Merge pull request #2020 from elrondforwin/main (d5c2a32db) by Lysec
  • i18n-update (128b2d3b6) by Lemmy
  • autofmt (2f4922f9b) by Lemmy
  • Add vencord-flatpak template to TemplateRegistry (490b7ce30) by elrond
  • Merge pull request #1990 from tmarti2/and-yet-another-default-settings-pass (33a7b3707) by Lemmy
  • Merge pull request #1997 from tmarti2/hide-tooltip-when-opened (05ec0d4f3) by Lemmy
  • Merge branch 'main' into hide-tooltip-when-opened (d8732d766) by Lemmy
  • Merge pull request #2019 from PonyLucky/main (26a0791cd) by Lemmy
  • Merge pull request #1966 from Pulsar33550336/main (b22277a35) by Lemmy
  • Merge pull request #1989 from tmarti2/custom-button-setting-default ([f63dc7f](f63dc7f...
Read more

v4.6.0

28 Feb 16:12

Choose a tag to compare

🌙 Release Notes v4.6.0

⚠️ Action Required: Migrate to noctalia-qs

Starting with this release, Noctalia Shell requires noctalia-qs instead of quickshell. The shell will not work with a plain quickshell binary going forward.

noctalia-qs is our own maintained fork of Quickshell and is now the only supported runtime. This lets us ship shell-specific features, fix bugs, and keep the QML API stable without depending on upstream Quickshell releases.

Please update before or immediately after upgrading to v4.6.0. Continuing to run Noctalia with the old quickshell binary will cause breakage and is no longer supported.

⚠️ Systemd Startup No Longer Supported

The systemd service assets have been removed from the repository. Launching Noctalia via systemd is no longer a supported startup method. Please switch to launching it directly from your compositor's startup configuration (e.g. exec noctalia-qs -c noctalia-shell in your compositor config).

How to update:

  • NixOS / Nix flake: The flake now pulls noctalia-qs automatically - just run nix flake update && nixos-rebuild switch (or equivalent).
  • CachyOS / Arch-based distros: noctalia-qs is available in the CachyOS repository and in the AUR - update it through your package manager.
  • Other distros: See the installation documentation for instructions specific to your distribution.

✨ New Features

  • Idle & Lock Screen: Added full idle management, multi-monitor password input, caps lock indicators, and a dedicated appearance settings tab.
  • Dock & Bar Customization: Introduced app grouping and a launcher icon for the Dock. The Bar gets new settings for padding, spacing, font scale, and auto-showing on workspace switches.
  • New IPC Commands: Programmatically fetch the current wallpaper, and trigger notification actions.
  • Themes & Locales: Full Italian language support, plus new theming templates for Steam and Labwc.
  • Desktop & UI Control: Added CPU-intensive widget toggles, an option to hide widgets in the overview, and drag-and-drop cross section editing.

🐛 Improvements & Bug Fixes

  • Performance Boosts: Optimized system stat CPU polling (down to 1 Hz), bounded clipboard memory usage, and disabled animations when widgets are idle.
  • System & Media: Smoother brightness controls (reduced OSD spam) and more reliable audio volume syncing using an event-driven setup.
  • UI/UX Polish: Improved dock centering and dynamic tooltips. Cleaned up the settings panel layout and refined button/list visual behaviors.
  • Key Bug Fixes: Resolved issues with notification expansion and caching, sticky control center panels, session menu keyboard navigation, and dock hover states.

Changes since v4.5.0

  • Bumped version v4.6.0 (012046e87) by Lemmy
  • autofmt (052ffcc5a) by Lemmy
  • systemstat-panel: readded minimal padding to avoid bug with extreme container rouding (7e3b1d25d) by Lemmy
  • IPCService: adjust lock/lockAndSuspend logic (a692cfb65) by Lysec
  • i18n-hu (e725020c6) by Lemmy
  • Merge pull request #1992 from maxbol/fix/se-translation-error-suspend (15d0e1f3f) by Lemmy
  • Merge pull request #1998 from MachXNU/get-wallpaper (d886dd786) by Lysec
  • IPC Call Wallpaper Get (5ca37a9a1) by Jb
  • Merge pull request #1994 from iynaix/nix-bump-noctalia-qs (f21d5fee6) by Lemmy
  • Bump noctalia-qs for flake.lock (1deb98b5c) by Lin Xianyi
  • idle: better/sane default (5e78c21a9) by Lemmy
  • settings-widget: fixed typo (903648fa2) by Lemmy
  • Settings: set contentPadding default to 2 (5cf1add30) by Lysec
  • fix(i18n): better swedish translation for suspend (3f31fc63b) by Max Bolotin
  • plugins: fix panels attach logic that would override user's settings (d4941da27) by Lemmy
  • idleInhibitor: improved IPC (82fb54e1b) by Lemmy
  • Merge branch 'main' into niri-blur (cbdc7cca7) by Lemmy
  • autofmt (85467d7f7) by Lemmy
  • gitignore: updated (17695e4e0) by Lemmy
  • Merge pull request #1986 from tibssy/fix/notification-history-expansion (72cc11f98) by Lemmy
  • fix(notifications): prevent expansion of non-expandable items in history (63d117d13) by tibssy
  • i18n-update (28dc8229b) by Lemmy
  • merge main -> niri-blur (46136c2bd) by Lemmy
  • Merge pull request #1941 from tmarti2/fix-notification-hovering (49e164283) by Lysec
  • Merge branch 'niri-blur' of github.com:noctalia-dev/noctalia-shell into niri-blur (b9812ecf4) by Lemmy
  • tootlip: use effectiveDirection (c4e637b75) by Lemmy
  • Merge branch 'main' of https://github.com/noctalia-dev/noctalia-shell (5137c5efc) by Lysec
  • Assets: remove systemd folder (c172f2f3d) by Lysec
  • Assets: remove systemd folder (cd37e20ed) by Lysec
  • Settings/GeneralTab: add Documentation button (196e071d7) by Lysec
  • smart-panel: boolean to disable blur + SessionMenu modifications: disable fullscreen blur, change a few colors. (7dc28fbd1) by Lemmy
  • background-effect/blur: updated usage to match noctalia-qs (4e3c385d7) by Lemmy
  • SettingsPanelWindow: keep transparency on separate window setting (5919996bf) by Lysec
  • settings: reduced padding between entries in the sidebar to accomodate more tabs (a72ba3967) by Lemmy
  • Merge pull request #1974 from bokicoder/main (2e43e5348) by Lemmy
  • update flake to use noctalia-qs (45d215c93) by wxlyyy
  • Use HoverHandler to manage notif hovering (0daeed81f) by Thibault Martin
  • Move Notif content inside a sub item with the right size (314ac2c99) by Thibault Martin
  • Fix hovering not working on compact density (d242a326b) by Thibault Martin
  • Fix notification hovering not working on content/close button (ce3b014bf) by Thibault Martin
  • i18n-update (73ae2c4e9) by Lemmy
  • Merge pull request #1945 from emrecancorapci/add-bar-padding-setting (bc34f550f) by Lemmy
  • autofmt ([cca156e](https://github.c...
Read more

v4.5.0

18 Feb 00:38

Choose a tag to compare

🌙 Release Notes v4.5.0

Welcome to v4.5.0! This release introduces a brand-new static dock mode, a completely refactored Bluetooth panel, and a new NColorChoice widget for streamlined per-widget color selection. You'll also find new markdown support for notifications, alongside significant performance boosts across the board—particularly for Cava, NGraph, and system stats.

✨ New Features

  • Static Dock Mode: Run the dock as a persistent, edge-anchored panel. This includes a new frame indicator, a "sit on frame" inner edge alignment, and options for frame integration.
  • Bluetooth Panel Refactor: Completely reworked with a dedicated BluetoothSubTab, smarter filtering, active discovery while the tab is open, and a much cleaner layout.
  • NColorChoice Widget: A new color-picker widget is now available for settings UIs.
  • Notification Upgrades: Notifications now support inline markdown formatting in the history panel (toggleable in settings), and a new compact density option is available for popup styles.
  • Custom Button Tooltips: Bar and Control Center custom buttons now support configurable tooltips, featuring separate toggles for command execution feedback and custom label text.
  • Reboot to UEFI: Added a Reboot to UEFI action, accessible from the session menu.
  • Global Brightness: A new toggle in the brightness widget allows you to sync brightness across multiple monitors simultaneously.
  • Airplane Mode: A new toggle in the network settings and control center makes it easy to toggle airplane mode.
  • Keybind Improvements: The notification history panel now fully supports keybind controls. Additionally, all system keybinds now strictly require a modifier (Ctrl/Alt) unless a function key is used.
  • IPC bar setPosition: A new IPC command allows for programmatic control of the bar's position.
  • Bar Display Mode Override: Added support for per-monitor bar display mode overrides.

⚡ Improvements

  • Performance Optimizations:
    • cava now suspends when nothing is listening.
    • NGraph defaults to the Shapes renderer to prevent the high CPU loads caused by the Canvas renderer.
    • Desktop widgets are automatically disabled while the lock screen is active to reduce overhead.
  • System Stats: Major polling optimizations implemented. The lock-keys service now relies on a component registration system, polling only when an active consumer exists.
  • Connections Tab: Unified the routing from Bluetooth and WiFi panels so settings open directly to the specific tab/subtab. Container outlines and layouts have also been refined.
  • Wallpaper Handling: Screens without an assigned wallpaper will now fall back to the latest wallpaper instead of going blank. Cache sizes are now orientation-aware.
  • SmartPanel Layout: Accurately ignores floating-bar margins and framed offsets on barless screens to prevent misalignment.
  • Framed Bar: attachmentOverlap now correctly applies to all four screen edges.
  • Session Menu: Added an option to hide keyboard shortcut hints from the UI.
  • Calendar Integration: The calendar now supports viewing Khal events.
  • TemplateRegistry: Updated the Zen browser template path for newer versions while maintaining legacy support.
  • System Definitions: The generated systemd service now defaults to --no-duplicate. Additionally, fixed the Nix Flake type for systemd Unit.X-Restart-Triggers.
  • Application Provider: Improved parsing for quoted arguments in .desktop exec fields.
  • Custom Button IPC: Registration is now fully reliable regardless of bar visibility.

🐛 Bug Fixes

  • Notifications: Simple HTML tags are now properly supported and sanitized.
  • Hyprland: workspaceChanged is now emitted correctly when the toplevel list updates, fixing stale workspace states.
  • NCircleStat: Eliminated the white FBO flash on initial render.
  • NListView: Scrollbars now auto-hide when unnecessary, allowing right-edge elements to be clickable.
  • SettingsPanelWindow: The Escape key no longer accidentally closes the settings panel while a keybind is being recorded.
  • BarPill Widget: Tooltips now dismiss correctly when the widget is clicked.
  • MediaPlayer Panel: Fixed a Cava display glitch and corrected bar widget settings lookups.
  • MangoWC: mmsg now uses spawn_shell to properly support spaces in commands.

Changes since v4.4.3

  • Release v4.5.0 (dbfe3634d) by Lemmy
  • Brightess: adjust settings access (b5c791253) by Lysec
  • brightness cleanup (64109296d) by Lemmy
  • Merge pull request #1868 from notiant/patch-3 (96f4168db) by Lysec
  • wallpaper: reverting to the usual battle tested implementation (9ae8f17ff) by Lemmy
  • bt: autofmt (2ba86f4eb) by Lemmy
  • wallpaper: getMaxCacheSizeForOrientation (7287cd91f) by Lemmy
  • Merge branch 'main' into patch-3 (f81a36a29) by notiant
  • Merge pull request #1848 from turannul/pr/bluetooth-pin-fix (1982222e1) by Lemmy
  • Merge pull request #1872 from tibssy/fix/notification-span-sanitization (e2774a76f) by Lemmy
  • help needed (3a97a0927) by Turann_
  • Thanks to UI you can't send empty pin even if you wanted to. (21bc73251) by Turann_
  • v0.0.2: Add additonal time if device not found at first sight. flush messages. (01d286a4a) by Turann_
  • fix(notifications): sanitize notification text by removing unknown tags so attribute noise doesn’t appear in rendered messages (604f709ad) by tibssy
  • Merge branch 'main' of https://github.com/noctalia-dev/noctalia-shell (c2629c3c2) by Lysec
  • BrightnessWidget: add global brightness toggle (#1865) (7b536c74c) by Lysec
  • background: attempt at saving a bit of VRAM - marginal gains due to Qt caching. (232303200) by Lemmy
  • i18n-update (df94ec485) by Lemmy
  • dock-static: fixed invalid bindings (a1437ee04) by Lemmy
  • Merge pull request #1870 from lonerOrz/bar-cb-tooltip (7c210ef00) by Lysec
  • qmlfmt (266503da3) by loner
  • feat: Add default fields for CustomButton widget (896ddbec1) by loner
  • feat(bar-cb): add custom tooltip option to CustomButton widget (451e84494) by loner
  • fix(cc-cb): add showExecTooltip option and fix tooltip logic (201eb7f8d) by loner
  • fix(cc-cb): saveSettings accessible from Repeater delegate (b889dadd6) by loner
  • improve CustomButtonSettings layout (fe37f5621) by notiant
  • ControlCenter: add Airplane Mode widget (926dbd526) by notiant
  • Merge pull request #1863 from lonerOrz/cb-tooltip (c33db6b99) by Lysec
  • fix I18n (6b1e96577) by loner
  • fix tr (065d4cbd9) by loner
  • fix: adjust tooltip logic and add i18n for default tooltip (f92d2398e) by loner
  • feat: add separate tooltips toggles for custom button widget (b78de5c93) by loner
  • bar: added override for display mode for other monitors ([1ecbf4d](https://github.com...
Read more