🌙 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-qsautomatically - just runnix flake update && nixos-rebuild switch(or equivalent). - CachyOS / Arch-based distros:
noctalia-qsis 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 (cca156e3a) by Lemmy
- Merge pull request #1963 from tmarti2/use-ncolorchoice-in-workspace-settings (3044a09da) by Lemmy
- brightness: reduced debounce to 33ms for non DDC monitors. Fix #1965 (26203a32d) by Lemmy
- Volume/MicrophoneSettings: adjust i18n key (b2ab1c45c) by Lysec
- Merge pull request #1952 from tmarti2/notification-close-margin (f5ad38234) by Lysec
- Merge pull request #1973 from Aitor42/main (83a1edd64) by Lysec
- i18n (9d447e9bf) by Lysec
- Revert "TrayMenu: use live menu model for dynamic tray state (#1957)" (795e93288) by Lysec
- Show reset button on pill size setting (6589fa237) by Thibault Martin
- readd register and unregister (b27bbe3d4) by Aitor
- i18n (51f424306) by Lysec
- VolumesSubTab: add option to change volume change audio feedback sound (5a0c13dd4) by Lysec
- Plugins: 3rd party repo plugins open gh repo instead of noctalia.dev (2ad246285) by Lysec
- Merge pull request #1971 from 01micko/labwc-osd (777395325) by Lysec
- Update labwc.conf osd bg color (b85cbc657) by micko
- Allow password input from monitors without LockScreen (a589506da) by Aitor
- Same changes for workspaces groups (a7ac971a6) by Thibault Martin
- Merge branch 'main' of github.com:noctalia-dev/noctalia-shell (fe8e23f1d) by Lemmy
- settings: when changed externally refresh bar widgets, fix #1925 (ce4be173a) by Lemmy
- settings: when changed externally refresh bar widgets (b1f751e55) by Lemmy
- autofmt (07be43462) by Lemmy
- bar-launcher: added icon customization (similar to control-center) fix #1897 (2704ef2d1) by Lemmy
- Use NColorCoice for workspace widget settings (ad5dd5672) by Thibault Martin
- AudioService: use event driven update logic, fall back to wpctl for stale volume (a6a4225a9) by Lysec
- TrayMenu: use live menu model for dynamic tray state (#1957) (5b359d2ae) by Lysec
- LockScreen: add capslock indicator (closes #1960) (237845c65) by Lysec
- Merge pull request #1959 from linuxmobile/helix-template (a0ac3750c) by Lysec
- Templates: improve helix highlights (837b79ff7) by Braian A. Diez
- clipboard: prevent restart spin loop of watchers. Fix #1954 (c13db3635) by Lemmy
- settings: added missing "Settings panel" translation (f7c156a50) by Lemmy
- settings: added missing "Settings panel" translation (99021b530) by Lemmy
- Merge branch 'main' into niri-blur (eccd76a31) by Lemmy
- settings: more blur goodness - no more 75% transparency detection for the sidebar. (ad4bda107) by Lemmy
- i18n-hu (c8d98f790) by Lemmy
- i18n-italian: after fixes and refresh from i18n platform (e0d8ead79) by Lemmy
- Merge pull request #1940 from ToRvaLDz/feat/i18n-italian-translation (8572ac598) by Lemmy
- network: cleaning up duplicate settings and simplifying logic (e6b399624) by Lemmy
- ncolorpickerdialog: live mode (40b299f94) by Lemmy
- Increase notification close button margin (864023f1d) by Thibault Martin
- Merge branch 'main' into add-bar-padding-setting (4e3065822) by Emre Can
- autofmt (90e44d6ed) by Lemmy
- brightness: fix OSD showing on every settings update. (3f8f4156f) by Lemmy
- chore: add translations for padding setting (1e68861fb) by Emre Can Çorapçı
- feat: add padding setting for the bar (d1100bd03) by Emre Can Çorapçı
- merge (df8d93564) by Lemmy
- Merge branch 'main' into idle (88826b40f) by Lemmy
- Merge branch 'main' of https://github.com/noctalia-dev/noctalia-shell (17760955a) by Lysec
- i18n (b1de75bca) by Lysec
- Merge pull request #1933 from notiant/patch-10 (716c3574a) by Lysec
- feat(i18n): add full Italian locale support and enable it in language selector (57bd9f9c9) by Marco Migozzi
- Merge pull request #1899 from yuzujr/feat/add-setting-display-backlight (3495b165c) by Lysec
- Merge pull request #1922 from turannul/downstream-main (a8dfb46cb) by Lysec
- Merge branch 'main' of https://github.com/noctalia-dev/noctalia-shell (a05927ed8) by Lysec
- HostService: fallback to /etc/conf.d/hostname for distros like gentoo (02938a09c) by Lysec
- Merge pull request #1927 from AlexNabokikh/1926 (be38aafde) by Lysec
- Merge pull request #1929 from notiant/patch-8 (d39ac05d3) by Lysec
- Merge pull request #1930 from notiant/patch-9 (3f61c16dc) by Lysec
- IPCService: add lock call (implements #1935) (81b08fc0e) by Lysec
- adjust dock peek area length (fe0c7a4f6) by notiant
- template-processor: pass wallpaper path for predefined color schemes too. (bceeb9894) by Lemmy
- i18n-update (5043d0739) by Lemmy
- i18n-update (78c00f24e) by Lemmy
- idle: added support for custom commands (a12de93d4) by Lemmy
- Merge branch 'main' into idle (90ae42bda) by Lemmy
- i18n-update (aa512a409) by Lemmy
- Update Dock.qml (d6d5bcd84) by notiant
- DockMenu: layout adjustments (9e30a6112) by notiant
- Merge pull request #1931 from HANDZCZ/fix-control-center-position (243d40801) by Lysec
- CustomButton: prevent long delay for tooltip (c347563a3) by notiant
- fix(control-center): prevent panel being stuck in one position (9f9d3a44a) by HANDZCZ
- Fix border clipping for tooltips and dock (88c715427) by notiant
- fix(1926): cache notification icons (fa090313e) by Alexander Nabokikh
- Merge pull request #1924 from tmarti2/fix-session-menu-grid-initial-press (76a58bcd6) by Lysec
- Fix Grid SessionMenu right/down press when nothing is selected (df0dceae0) by Thibault Martin
- Do not try to display the Session Menu if its empty (5c27c6739) by Thibault Martin
- tiny typo (2f560763c) by Turann_
- ncolorchoice: fix default setting and indicator (341c5ee13) by Lemmy
- autofmt (d678db7d5) by Lemmy
- i18n-update (dd6acb6dd) by Lemmy
- idle: i18n cleanup (03644db84) by Lemmy
- idle: added fade out before action to serve as a warning for the user and grace period (cc50b59d6) by Lemmy
- autofmt (cba199eda) by Lemmy
- idle-management (9ee707d30) by Lemmy
- i18n: add en translation for panels.desktop-widgets.cpu-intensive-note (d709779c5) by Lysec
- DesktopWidgetsTab: add toggle to show/hide widgets in overview (d9a37187c) by Lysec
- Merge branch 'main' of github.com:noctalia-dev/noctalia-shell (835d632e5) by Lemmy
- Merge pull request #1913 from tibssy/fix/dock-alignment-and-triggers (198a9f740) by Lysec
- AudioService: add wpctl fallback for default sink volume/mute sync (#1911) (1f84b3835) by Lysec
- nbattery: increase width of graphical battery when at 100% (141ba9602) by Lemmy
- Merge branch 'main' into niri-blur (bd0d8687c) by Lemmy
- i18n: fix leading space in "Font Scale" + update (f240a7ca2) by Lemmy
- Merge pull request #1917 from tibssy/fix/bar-settings-organization (2911fd07a) by Lemmy
- lockscreen: fix warning when accessing lockSurface.screen.name (45120caaf) by Lemmy
- layout: more double margins implementations (db56321f5) by Lemmy
- layout: implement double margin (e.g. Style.margin2M) instead of what PR #1408 did. (b36bef4cc) by Lemmy
- style(settings): group bar opacity toggle and slider for better UX (6a83ab48d) by tibssy
- i18n-update (8885be678) by Lemmy
- autofmt (75e844405) by Lemmy
- bar: added control for font scale (01c5103f3) by Lemmy
- Merge pull request #1611 from bryanm1529/feat/notification-action-ipc (6b9550e76) by Lemmy
- i18n-update (adbb17889) by Lemmy
- bar: reordering widget spacing slider (e5863eaeb) by Lemmy
- Merge pull request #1806 from dudujerry452/features/bar-display-on-workspace-change (ff2c3df82) by Lemmy
- Merge pull request #1842 from Cleboost/feat/relative-wallpaper (bdd1c36e4) by Lemmy
- Merge pull request #1844 from Cleboost/feat/bar-widget-spacing (6ea93d682) by Lemmy
- i18n cleanup (6602f860f) by Lemmy
- Merge pull request #1880 from notiant/patch-5 (5b10bee13) by Lemmy
- Merge pull request #1891 from iynaix/plugin-reinstall (16be413a7) by Lemmy
- Merge pull request #1915 from tmarti2/add-settings-bar-widget (976a1fd83) by Lemmy
- Merge pull request #1876 from notiant/patch-4 (95e57065e) by Lemmy
- Add a Settings widget (fcd1de398) by Thibault Martin
- Use Color.resolveColorKey when possible (d92dad581) by Thibault Martin
- NSectionEditor: make DesktopWidgetsTab d&d between sections (22527b903) by Lysec
- fix(dock): dynamically adjust tooltip direction based on dock position (3d8de7745) by tibssy
- fix(dock): adjust centering logic to account for bar dimensions and margins (a1aeeb116) by tibssy
- fix(dock): ensure frame indicator correctly fills the trigger area (02bde2a90) by tibssy
- Merge branch 'main' into niri-blur (bc38f0201) by Lemmy
- NSectionEditor: add drag & drop between sections (c6f4a6bc1) by Lysec
- Merge branch 'main' into niri-blur (02d8d3874) by Lemmy
- dock: i18n-update (487afcea4) by Lemmy
- dock: autofmt (5fbcf870d) by Lemmy
- bar-clock: fix detection if panel is open (9513d8441) by Lemmy
- Merge pull request #1900 from Dadangdut33/dock-group-apps (67fa0865a) by Lysec
- Merge branch 'main' into dock-group-apps (3e841942e) by Fauzan F A
- Merge pull request #1905 from tibssy/feat/dock-refinements (adf888e0c) by Lysec
- Merge pull request #1909 from AlexNabokikh/1771 (09b6d4822) by Lysec
- Merge pull request #1835 from CLEMENTINATOR/display-cc-on-right-click-pos (04fe24a08) by Lysec
- fix(1771): start clipboard watchers at shell boot instead of first launcher open (c7c4394ee) by Alexander Nabokikh
- fix(dock): adjust dock peek window size to match dock length and screen minimum (3ad4ac1b8) by tibssy
- fix(dock): isolate dock launcher color setting in dock appearance tab (6aea22ef2) by tibssy
- feat(dock): prevent opening empty static dock panel (022d6d33d) by tibssy
- feat(dock): static dock frame indicator sizing with launcher icon (c192d248e) by tibssy
- blur: added closing panel and extra framed bar region (wip) (e579e6376) by Lemmy
- Merge branch 'main' into niri-blur (7ac7075fb) by Lemmy
- i18n-update (8eef8ef71) by Lemmy
- widgets: add a way to show cpu intensive ones (3541ae954) by Lemmy
- i18n-update (a47998455) by Lemmy
- desktop-sysmon: fix interval var. (5fae6b7b9) by Lemmy
- sys-stat: cpu usage and temp at 1Hz (from 3Hz) (b98392afa) by Lemmy
- autofmt (3921c39c0) by Lemmy
- bar-sysmon: removed animations that are costly on the cpu. ensure the shell stays at 0% cpu on idle. (795b49392) by Lemmy
- Merge branch 'main' into niri-blur (ac6b622c3) by Lemmy
- Merge pull request #1890 from MachXNU/millennium-theming (1f4d78787) by Lemmy
- fix setting search highlight the invisible "Backlight device" label, skip invisible label (42c52995e) by yuzujr
- feat: implement group the same apps in dock with configurable settings (6a7c68c6e) by Dadangdut33
- feat: add settings for goruped dock (98a7f2f7c) by Dadangdut33
- add missing files (2aa9a61f9) by yuzujr
- feat: add setting, map between monitor and backlight device (1d4c6418c) by yuzujr
- Merge branch 'main' into niri-blur (1426b1843) by Lemmy
- clipboard: limit image decoded in memory (9c47ce03f) by Lemmy
- autofmt (5340c1a3a) by Lemmy
- cava: avoid reallocation on every frame (628e4cbc2) by Lemmy
- Merge pull request #1892 from tibssy/feat/dock-launcher-icon (9beeb5250) by Lysec
- Merge pull request #1894 from notiant/patch-7 (3c3a8a282) by Lysec
- small adjustments to GTK theme (3bd3eccb7) by notiant
- feat(dock): implement context menu for launcher icon and improve screen handling (ff4da5d2b) by tibssy
- PluginService: Do not include hash in plugin ID when reinstalling 3rd party plugins (f7b3035ce) by Lin Xianyi
- feat(dock): implement application launcher icon with configurable position (6c555770c) by tibssy
- feat(settings): add dock launcher icon toggle option (ceda3dfd4) by tibssy
- [Steam] added template + entry in the settings menu (2c24f2d37) by Jb
- nbutton: border color match bg when hovered (cb77a0824) by Lemmy
- lockscreen: fix hover colors (let the default do their job) (5e6fe2292) by Lemmy
- Merge branch 'main' of github.com:noctalia-dev/noctalia-shell (5d5ea8c33) by Lemmy
- settings: fix show changelog with "separate window" (5937539a1) by Lemmy
- Templates/gtk: split into gtk3 and gtk4 to prevent warning (1bd980115) by Lysec
- Merge pull request #1873 from MachXNU/GTK4-theming-fix (11056f365) by Lysec
- Merge pull request #1874 from 01micko/labwc-theme (dc268aec7) by Lysec
- SwayService: cleanup (e6e969fa9) by Lysec
- Merge pull request #1878 from yuzujr/fix/sway-active-window-update (a941a3952) by Lysec
- re-add Math.round where necessary (9743246f4) by notiant
- settings: improve support of "Separate window" mode (794ea9efc) by Lemmy
- Merge pull request #1877 from Soulful-Sailer/main (04589a4f5) by Lemmy
- Merge branch 'main' into patch-5 (a1b1f74d9) by notiant
- fix missing I18n function (9c1b0e4af) by notiant
- control-center: open at right-click position on bar (cf29e898f) by Clement Bouvet
- LockScreenTab: add AppearanceSubTab, reorganize things (abfcbd3a5) by Lysec
- Merge pull request #1847 from tmarti2/lockscreen-password-animation-and-icons (5fc0634af) by Lysec
- Merge branch 'main' of https://github.com/noctalia-dev/noctalia-shell (ffd204ddf) by Lysec
- SessionMenuEntrySettingsDialog: don't force modifier for keybind (ac76ccce3) by Lysec
- SessionMenuEntrySettingsDialog: don't force modifier for keybind (ae66ce169) by Lysec
- autofmat (c3d9d5f60) by Lemmy
- nlistview: disable wheel if nothing to scroll (07b525a02) by Lemmy
- Merge branch 'main' of github.com:noctalia-dev/noctalia-shell (611e00100) by Lemmy
- i18n-update (262f7c5db) by Lemmy
- Merge pull request #1883 from AlexNabokikh/1882 (d2d9093d0) by Lysec
- Merge pull request #1884 from tmarti2/improve-default-reset-settings (e38000fa8) by Lemmy
- fix(#1882): show sender window with default actions (d2b9cd9d5) by Alexander Nabokikh
- fix(#1882): fix animations (5cbcb0b60) by Alexander Nabokikh
- Add showReset to NValueSlider to factorize the code (b54971e97) by Thibault Martin
- ProgramCheckerService: move bluetoothctl check from BluetoothService here (7e9694c4d) by Lysec
- BluetoothService: add one time check for bluetoothctl (a3853caf1) by Lysec
- fix(#1882): resolve notification popup actions failing to invoke (6303f0152) by Alexander Nabokikh
- CustomButton: add translation for tooltips (d4b64ac34) by notiant
- Use default value to reset options (4cbf449ce) by Thibault Martin
- fix(active-window): not updating when window title change on Sway/Scroll (f313faf7e) by yuzujr
- Option to display cute icons instead of just circles (a649274a6) by Thibault Martin
- Improve Password input style (15ccba1c8) by Thibault Martin
- Add a small animation on password icon in lockscreen (d0608b1a3) by Thibault Martin
- Add loginctl to default Reboot to UEFI (5fae2b8c0) by Soulful Sailer
- adjust margins in BluetoothPanel & fix flickering issue in BluetoothSubTab (aabd28e40) by notiant
- Add labwc theme (370b66051) by 01micko
- reboot-uefi: proper settings and default (e0293e266) by Lemmy
- bump version to 4.5.1-git (2eacfca3a) by Lemmy
- GTK4 Theming fixed (0c731b381) by Jb
- style: qmlfmt format (38f01891c) by Cleboost
- ext-background-effect-v1 (727aafd6b) by Lemmy
- style: Convert tab indentation to space indentation for widget spacing translations in en.json. (091bad1bb) by Cleboost
- feat(bar): add widget spacing setting (ef24b195a) by Cleboost
- feat(wallpaper): support relative paths in favorites configuration (cc6517d5d) by Cleboost
- fix vscode tag switch false triggering (b566bbe3c) by dudujerry
- Merge remote-tracking branch 'upstream/main' into features/bar-display-on-workspace-change (a5bf78174) by dudujerry
- chore(i18n): add zh-CN and zh-TW translations for workspace switch option (e6a964629) by dudujerry
- feat(bar): show bar on workspace switch in auto-hide mode. (32e77f6ac) by dudujerry
- notifications: add IPC functions for action invocation (47835d142) by Bryan Martinez-Sanchez