Changelog
Release notes for ashell.
0.10.0September 1, 2026
Changesβ
π₯ Breaking changesβ
- add [logging] section with level, target and directory in config @romanstingler (#923)
- Refactor/opacity model - unified opacity setting @MalpenZibo (#903)
- Feat - media player bar visualizer improvement @MalpenZibo (#878)
- feat(media_player): support configurable indicator fields @mengdehong (#786)
- feat(appearance): replace bar AppearanceStyle with dedicated settings @MalpenZibo (#867)
- fix(config): use PascalCase for ToastPosition and TrayClickAction enums @MalpenZibo (#837)
π Featuresβ
- add [logging] section with level, target and directory in config @romanstingler (#923)
- Feat/per surface opacity @MalpenZibo (#935)
- warn on unknown configuration fields during deserialization @romanstingler (#922)
- autofocus password input on network dialog open @romanstingler (#900)
- feat(blur): opt-in compositor blur behind translucent surfaces @MalpenZibo (#866)
- Feat - media player bar visualizer improvement @MalpenZibo (#878)
- Add NewIcon watcher @SimoneFelici (#843)
- feat(media_player): support configurable indicator fields @mengdehong (#786)
- add support for bond network interfaces @romanstingler (#835)
- feat(network): detect IWD connection state in known_connections @dacrab (#827)
- add Name/IconAndName formats to show network name in indicator @romanstingler (#812)
- Add configurable window icons to workspace indicators @gwiazdorrr (#495)
- feat(media_player): add optional cava audio visualizer @MalpenZibo (#872)
- feat(appearance): replace bar AppearanceStyle with dedicated settings @MalpenZibo (#867)
- Auto highlight active workspace using color palette @1randomguy (#856)
- feat(compositor): add MangoWC backend @MalpenZibo (#846)
- Feat/generic backend simple @MalpenZibo (#847)
- feat(i18n): german translation @fuggerjaki61 (#839)
- support multiline JSON output in custom module @romanstingler (#807)
- Add configurable mouse event handlers to CustomModule @romanstingler (#735)
- feat(notifications): animate toast slide-in/out from screen edge @MalpenZibo (#749)
- Feat/animate menu opening/closing @MalpenZibo (#744)
- feat(components): add spinning loading indicator for refresh states @MalpenZibo (#748)
- Feat/collapsible settings sub-menu @MalpenZibo (#747)
- Feat/animate system info color @MalpenZibo (#746)
π Bug fixesβ
- fix(notifications): keep the id counter ahead of replaced ids @MalpenZibo (#940)
- prevent duplicate notification toasts from being queued @romanstingler (#920)
- clamp tempo weather coordinates to valid ranges @romanstingler (#937)
- Use notification hint image data for icon @r3dArch (#934)
- fix(network): handle iwd station lifecycle after rfkill unblock @Scott-Nx (#933)
- extract numeric prefix parsing for workspace index @romanstingler (#929)
- fix(audio): reconnect to PulseAudio on connection loss instead of hanging @romanstingler (#916)
- [Fix] Center OSD icons vertically/horizontally @r3dArch (#910)
- reset network dialog state when menu opens @romanstingler (#901)
- add configurable visualizer framerate and optimize cava lifecycle @romanstingler (#897)
- only listen for Escape while it can close a menu @romanstingler (#896)
- Fix empty tray shown when all icons blocked @r3dArch (#894)
- Implement separator normalization @SimoneFelici (#882)
- fix(hyprland) Switch main keyboard only @impervius (#877)
- fix(copr): update container to fedora:latest and add proper spec dependencies @dacrab (#840)
- warn and auto-select weight when font_name has no Normal(400) face @romanstingler (#810)
- fix: patch hyprland-rs to fix window title deserialization @romanstingler (#886)
- fix(updates): keep spinner state across config reload @MalpenZibo (#875)
- workspaces: compare monitor names by equality, not substring @johnnybravo-xyz (#805)
- fix clippy warning @romanstingler (#833)
- fix(logger): scope stdout log duplication to debug builds, guard OSD handler @dacrab (#829)
- fix(power): handle pending battery states @Scott-Nx (#801)
- fix(config): use PascalCase for ToastPosition and TrayClickAction enums @MalpenZibo (#837)
- Fix spinning static icon @MalpenZibo (#836)
- fix(settings): display battery indicator for touchpad peripherals @emilnymann (#820)
π Documentationβ
- document shell execution of command options @romanstingler (#939)
- note special workspaces are Hyprland-only @romanstingler (#938)
- docs: add network backend support documentation and reorder sidebar @romanstingler (#921)
- add troubleshooting guide for hybrid graphics display issues @romanstingler (#803)
π§° Maintenanceβ
- chore(deps): build against iced_layershell v0.5.1 @MalpenZibo (#944)
- refactor(config): let config.rs own config and log path resolution @MalpenZibo (#943)
- perf: reduce unnecessary service and icon cache overhead @Scott-Nx (#941)
- organize full_config.md into labeled sections @romanstingler (#907)
- chore(docs): unfold configuration sidebar categories by default @romanstingler (#906)
- log version at startup @romanstingler (#899)
- chore(settings): drop Brightness from default indicators @MalpenZibo (#876)
- perf(ci): improve Github Action cache usage @MalpenZibo (#874)
- chore(deps): bump anyhow from 1.0.102 to 1.0.103 @dependabot[bot] (#865)
- chore(deps): bump sysinfo from 0.39.3 to 0.39.5 @dependabot[bot] (#864)
- chore(deps): bump itertools from 0.14.0 to 0.15.0 @dependabot[bot] (#863)
- chore(deps): bump wayland-protocols from 0.32.12 to 0.32.13 @dependabot[bot] (#861)
- chore(deps): bump actions/checkout from 6 to 7 @dependabot[bot] (#860)
- chore(deps): bump nixbuild/nix-quick-install-action from 34 to 35 @dependabot[bot] (#859)
- chore(deps): bump pnpm/action-setup from 5 to 6 @dependabot[bot] (#858)
- chore(deps): bump actions/upload-pages-artifact from 3 to 5 @dependabot[bot] (#857)
- refactor(app): extract Message enum and osd_info into submodules @dacrab (#825)
- clarify wlr-foreign-toplevel state array format @romanstingler (#855)
- Chore/website dependency audit @MalpenZibo (#853)
- chore: remove dead code and unused items @dacrab (#831)
- refactor(network): rename AccessPoint to AccessPointData @dacrab (#828)
- refactor(theme): extract shared iced_theme construction into helper functions @dacrab (#824)
- refactor(tempo): split monolithic module into submodules @dacrab (#822)
- chore: adopt AGENTS.md convention @JockeM (#818)
- Use better CPU icon @two-horned (#809)
π§ Dependency updatesβ
- chore(deps): bump anyhow from 1.0.102 to 1.0.103 @dependabot[bot] (#865)
- chore(deps): bump sysinfo from 0.39.3 to 0.39.5 @dependabot[bot] (#864)
- chore(deps): bump itertools from 0.14.0 to 0.15.0 @dependabot[bot] (#863)
- chore(deps): bump wayland-protocols from 0.32.12 to 0.32.13 @dependabot[bot] (#861)
- chore(deps): bump actions/checkout from 6 to 7 @dependabot[bot] (#860)
- chore(deps): bump nixbuild/nix-quick-install-action from 34 to 35 @dependabot[bot] (#859)
- chore(deps): bump pnpm/action-setup from 5 to 6 @dependabot[bot] (#858)
- chore(deps): bump actions/upload-pages-artifact from 3 to 5 @dependabot[bot] (#857)
- patch hyprland-rs for non-UTF-8 window titles @romanstingler (#813)
Contributorsβ
β€οΈ A big thanks to @1randomguy, @dacrab, @emilnymann, @fuggerjaki61, @gwiazdorrr, @impervius, @JockeM, @johnnybravo-xyz, @mengdehong, @r3dArch, @romanstingler, @Scott-Nx, @SimoneFelici, @two-horned and @ashlcx
0.9.0June 8, 2026
Here we are with a new release! Thanks, everyone, for the support! π
A brief recap of the major changes:
- π Notification system: optionally works as a notification daemon
- πΊ OSD system: optionally show OSD information through the new IPC system
- π IPC over a Unix socket: a way to control ashell externally
- π Internationalization: the foundation for localized formatting and translations
- β¨ Experimental animations: work-in-progress animation support
- βοΈ Official iced: thanks to
iced_layershell, we now use the official upstream iced instead of the custom pop-os fork
β οΈ Important license change (packagers!) https://github.com/MalpenZibo/ashell/issues/763β
Relicensed from MIT to GPL-3.0-or-later. Please update your license metadata accordingly.
Changesβ
π₯ Breaking changesβ
π Featuresβ
- feat(osd): scale volume bar to max_volume so overdrive level is visible @MalpenZibo (#799)
- feat(settings): fallback text in empty tooltip popups @MalpenZibo (#796)
- feat(power): add UPower charge limit toggle to quick settings @Scott-Nx (#779)
- feat(audio): configurable volume_step and max_volume with overdrive i⦠@sudo-Tiz (#774)
- add configurable wind speed unit @romanstingler (#788)
- feat(tray): support checkbox submenus @Lykathia (#787)
- docs: update documentation for configuration options and new features @romanstingler (#761)
- feat(workspaces): highlight workspaces with urgent windows @kiryl (#742)
- implement tooltip menus for quick settings indicators @romanstingler (#733)
- add help feature to clap dependency @romanstingler (#770)
- add typed temperature sensor configuration with auto-detection @romanstingler (#668)
- tempo: add click-to-toggle location visibility for screenshot protection @romanstingler (#719)
- feat(tray): left/right click behavior @alexandre-abrioux (#729)
- feat(i18n): add French (fr-FR) translation @noirbizarre (#756)
- feat(settings): animate quick-setting toggle color transitions @MalpenZibo (#745)
- Feat/animate centerbox position @MalpenZibo (#743)
- feat: add width animations for bar modules and workspace buttons @MalpenZibo (#682)
- feat(tempo): display weather update time in current timezone @alexandre-abrioux (#720)
- system_info add mounts option to filter disk display @romanstingler (#707)
- Feat/i18n translate system info @MalpenZibo (#715)
- Feat/i18n translate notifications @MalpenZibo (#711)
- Feat/i18n translate tempo @MalpenZibo (#712)
- Feat/i18n translate settings @MalpenZibo (#713)
- Feat/i18n translate osd @MalpenZibo (#714)
- Feat/i18n translate password dialog @MalpenZibo (#716)
- Feat/i18n translate media player @MalpenZibo (#717)
- feat - i18n Updates module @MalpenZibo (#696)
- fix(logging): added file size of 10MB as an additional criterion for β¦ @MustafaAamir (#709)
- feat(settings)!: optional hibernate_cmd with empty string handling @Scott-Nx (#706)
- docs: update troubleshooting guide for rendering backends @romanstingler (#595)
- Make airplane mode and bluetooth icons match their state @whynotofu (#702)
- Feat/i18n units @MalpenZibo (#695)
- feature: idle inhibitor ipc, osd + 3 related fixes @whynotofu (#684)
- feat - Add experimental animation support @MalpenZibo (#681)
- add option to select between Celsius and Fahrenheit in Tempo module @romanstingler (#669)
- Feat/i18n foundations @MalpenZibo (#676)
- feature: microphone ipc, osd @whynotofu (#677)
- Add two more configuration options for battery display @CodedNil (#665)
- Add tray blocklist @CodedNil (#674)
- Feat/osd audio, brightness, airplane control @MalpenZibo (#657)
- Feat/ipc socket @MalpenZibo (#653)
- Add configurable workspace scrolling direction @lkcv (#622)
- Notifications blacklist @denqxotl (#637)
- Feat notification urgency @MalpenZibo (#638)
- feat(notifications): show single-notification groups with normal card @MalpenZibo (#631)
- create a built-in Notifications module for ashell @Yoimiya-Naganohara (#456)
- l10n @juvilius (#576)
- Add different display units for systeminfo @sulabi (#541)
π Bug fixesβ
- fix: Use XDG_RUNTIME_DIR to store logs @francoisfreitag (#760)
- fix: replace panicking code paths with graceful error handling @dacrab (#766)
- CLIPPY fix formatting warnings @romanstingler (#783)
- fix(tempo): align daily forecast rows and pair weather icon with temp @MalpenZibo (#791)
- tempo: fix hourly forecast and current weather time to use location timezone @romanstingler (#782)
- fix(workspaces): let named workspace buttons grow to fit their name @MalpenZibo (#790)
- ci: upgrade to Node.js 24 and fix GitHub Pages deployment @dacrab (#775)
- fix: simplify COPR workflow and fix make install @dacrab (#764)
- fix(notifications): show toast/OSD on focused output with correct scaling @MalpenZibo (#730)
- partial fix(notifications): clip toast card to respect padding when body overflows @MalpenZibo (#759)
- fix(hyprland): support Lua dispatch protocol on 0.55+ with Lua config @romanstingler (#757)
- fix(tempo): swap temperature order to max/min in daily forecast @romanstingler (#753)
- fix(i18n): honor config region in unit-system resolution @MalpenZibo (#752)
- Fix Tray: prevent icon duplication @SimoneFelici (#731)
- fix(tray): keep menu open when toggling a checkbox item @Lykathia (#697)
- build(deps): Use hyprland-rs master branch to fix crashes @romanstingler (#721)
- fix: replace unwrap on connection id lookup with safe chaining @romanstingler (#723)
- tempo: add missing round for
feels liketemperature value @romanstingler (#718) - Fix output fuzzy matching @CodedNil (#710)
- fix: improve text truncation accuracy using grapheme clusters @Scott-Nx (#694)
- revert: disk deduplication (#679) @MalpenZibo (#698)
- feat(i18n): respect LC_MEASUREMENT for unit system @clotodex (#704)
- Fix 652 Ashell appears twice @MalpenZibo (#680)
- feature: idle inhibitor ipc, osd + 3 related fixes @whynotofu (#684)
- Fix fallback lang locale @MalpenZibo (#699)
- fix(tray): drop malformed icon pixmaps to avoid panic @Lykathia (#693)
- standardize error handling for PulseAudio object creation @romanstingler (#690)
- Disk deduplication @CodedNil (#679)
- (fix) ipc second instance hijack @MalpenZibo (#678)
- fix: recover wgpu surface on NVIDIA + Niri (frozen bar) @MalpenZibo (#671)
- Fix notifications daemon @denqxotl (#660)
- Use canonicalize path for watching config file @boerngen-schmidt (#658)
- fix workspace pixels scroll direction @MalpenZibo (#654)
- Fix/media player cover @MalpenZibo (#644)
- fix(ci): restore autolabeler broken by release-drafter v7 upgrade @MalpenZibo (#647)
- fix tray discovery on restart @MalpenZibo (#646)
- correct timezone index boundary check @romanstingler (#645)
- fix(idle_inhibitor): map surface via layer-shell for niri compatibility @MalpenZibo (#639)
- fix(workspaces): scroll in visual order on Niri @MalpenZibo (#636)
- (fix) Touch input and natural scroll @MalpenZibo (#635)
- fix(workspaces): stabilize monitor group order on Niri @MalpenZibo (#634)
- (fix) Niri Workspace filling @MalpenZibo (#632)
- [Regression] Audio devices not shown @denqxotl (#617)
- fix: prevent retrying failed MPRIS cover art downloads @romanstingler (#575)
- fix(network): reconnect after D-Bus error @romanstingler (#601)
- tray: skip empty icon name lookup @SimoneFelici (#600)
- fix: replace logger init unwrap with stderr fallback @romanstingler (#604)
- Fix: validate Temperature @MalpenZibo (#608)
- fix/config threshold validation @romanstingler (#603)
- Fix SystemInfo bugs and clean up display format code @MalpenZibo (#607)
- fix(ui): remove magic number 8 in height calculation, use theme space.xs instead @romanstingler (#565)
π Documentationβ
- docs: fill gaps in website config reference @MalpenZibo (#800)
- document listen_cmd requires compact JSON due to line-by-line parsing @romanstingler (#792)
- docs: update documentation for configuration options and new features @romanstingler (#761)
- docs: add Gentoo installation instructions @kakoed337 (#772)
- docs: update troubleshooting guide for rendering backends @romanstingler (#595)
- docs: update for iced_layershell migration and add notifications @MalpenZibo (#649)
- docs: add Matrix community channel link @MalpenZibo (#648)
- Add developer guide, publish to website, and update README @MalpenZibo (#560)
π§° Maintenanceβ
- chore: relicense from MIT to GPL-3.0-or-later @MalpenZibo (#789)
- chore - Update dependencies @MalpenZibo (#794)
- Chore/upower cleanup @romanstingler (#785)
- refactor: code cleanup and streamlining @dacrab (#767)
- docs: update documentation for configuration options and new features @romanstingler (#761)
- ci: upgrade dorny/paths-filter v3 β v4 (node24) @dacrab (#777)
- Replace generic
unwrap()withexpect()in network backends @romanstingler (#722) - chore(deps): bump the cargo group across 1 directory with 2 updates @dependabot[bot] (#675)
- Calendar show days without leading zeros @whynotofu (#687)
- chore: remove redundant temperature conversion function @romanstingler (#691)
- chore: document safety of .expect() on config path parent @romanstingler (#689)
- refactor(theme): access AshellTheme via thread_local global @MalpenZibo (#672)
- document optional runtime dependencies and package requirements @romanstingler (#666)
- Chore/menu surface on demand @MalpenZibo (#656)
- (chore) Refactor/shared components @MalpenZibo (#641)
- ci(release-drafter): fix autolabeler for fork PRs @MalpenZibo (#651)
- de-duplicate launcher code @romanstingler (#640)
- (Chore) Notification refactor @MalpenZibo (#625)
- Refactor palette config @MalpenZibo (#574)
- refactor(icons): extract duplicate battery icon logic @romanstingler (#611)
- (chore): remove deprecated Clock module @romanstingler (#602)
- chore: speed up CI @MalpenZibo (#609)
- chore(deps): bump allsorts from 0.15.1 to 0.16.1 @dependabot[bot] (#584)
- chore(deps): bump zbus from 5.13.2 to 5.14.0 @dependabot[bot] (#589)
- chore(deps): bump anyhow from 1.0.101 to 1.0.102 @dependabot[bot] (#585)
- chore(deps): bump inotify from 0.11.0 to 0.11.1 @dependabot[bot] (#586)
- chore(deps): bump chrono from 0.4.43 to 0.4.44 @dependabot[bot] (#588)
- chore(deps-dev): bump typescript from 5.9.3 to 6.0.2 in /website @dependabot[bot] (#590)
- chore(deps): bump pnpm/action-setup from 4 to 5 @dependabot[bot] (#579)
- docs(system_info): document display format options and fix threshold behavior @MalpenZibo (#606)
- fix: correct deploy working-directory and release-drafter config @MalpenZibo (#592)
- chore(deps): bump actions/download-artifact from 7 to 8 @dependabot[bot] (#580)
- chore(deps): bump actions/upload-artifact from 6 to 7 @dependabot[bot] (#581)
- chore(deps): bump nix-community/cache-nix-action from 6 to 7 @dependabot[bot] (#582)
- chore(deps): bump release-drafter/release-drafter from 6 to 7 @dependabot[bot] (#583)
- chore: remove unused dependencies uuid and parking_lot @romanstingler (#564)
- fix(ui): remove magic number 8 in height calculation, use theme space.xs instead @romanstingler (#565)
- fix: rename refesh_config to refresh_config in app.rs @romanstingler (#562)
π§ Dependency updatesβ
- chore(deps): bump the cargo group across 1 directory with 2 updates @dependabot[bot] (#675)
- chore(deps): bump the cargo group across 1 directory with 3 updates @dependabot[bot] (#624)
- chore(deps): bump allsorts from 0.15.1 to 0.16.1 @dependabot[bot] (#584)
- chore(deps): bump zbus from 5.13.2 to 5.14.0 @dependabot[bot] (#589)
- chore(deps): bump anyhow from 1.0.101 to 1.0.102 @dependabot[bot] (#585)
- chore(deps): bump inotify from 0.11.0 to 0.11.1 @dependabot[bot] (#586)
- chore(deps): bump chrono from 0.4.43 to 0.4.44 @dependabot[bot] (#588)
- chore(deps-dev): bump typescript from 5.9.3 to 6.0.2 in /website @dependabot[bot] (#590)
- chore(deps): bump pnpm/action-setup from 4 to 5 @dependabot[bot] (#579)
- Switch from pop-os iced fork to iced_layershell @MalpenZibo (#578)
- chore(deps): bump actions/download-artifact from 7 to 8 @dependabot[bot] (#580)
- chore(deps): bump actions/upload-artifact from 6 to 7 @dependabot[bot] (#581)
- chore(deps): bump nix-community/cache-nix-action from 6 to 7 @dependabot[bot] (#582)
- chore(deps): bump release-drafter/release-drafter from 6 to 7 @dependabot[bot] (#583)
Contributorsβ
β€οΈ A big thanks to @CodedNil, @Lykathia, @MustafaAamir, @Scott-Nx, @SimoneFelici, @Yoimiya-Naganohara, @alexandre-abrioux, @boerngen-schmidt, @clotodex, @dacrab, @denqxotl, @francoisfreitag, @juvilius, @kakoed337, @kiryl, @lkcv, @mustafaa2, @noirbizarre, @romanstingler, @sudo-Tiz, @sulabi, @whynotofu and sudo-Tiz
0.8.0March 27, 2026
Here we are!! A lot of new things and fixes, and a lot of active contributors.
Also, say hello to the new Tempo module!!
π Featuresβ
- feat(system_info): add configurable polling interval for updates @romanstingler (#549)
- docs: add missing features, update full_config @romanstingler (#547)
- Add coordinates-based weather location and improve location name formatting @romanstingler (#532)
- Audio Port Icons @levitatingpineapple (#512)
- Tempo: Add clock format cycling feature @romanstingler (#361)
- 2| Feature: open network warning @romanstingler (#499)
- 1| feat: add password visibility toggle to WiFi password dialog @romanstingler (#497)
- Add SIGUSR1 signal handling for visibility toggle @romanstingler (#417)
- Feature: Add Tempo module @MalpenZibo (#279)
- Dynamic menu wrapper @MalpenZibo (#323)
- [Status: 2/2] Add format options and indicator support for brightness @romanstingler (#418)
- [Status: 1/2] Add format options for audio, network, and bluetooth indicators @romanstingler (#396)
- Add support for initialTitle and initialClass for Window Title Mode @lkcv (#430)
- [Audio 1/2] add microphone indicator to settings module @romanstingler (#419)
- Add indicator_format option to MediaPlayer module @gwiazdorrr (#433)
- Add Time and IconAndTime battery format options @romanstingler (#438)
- Add git commit hash to version output @romanstingler (#434)
- [1/2 Custom] Add Text type to CustomModule and make command optional @romanstingler (#422)
- Add right-click support to quick settings buttons for opening more commands @romanstingler (#412)
- feat(updates): add configurable polling interval for update checks @romanstingler (#444)
- [Tray: 2/2] Implement proactive StatusNotifierItem discovery @romanstingler (#408)
- [Tray: 1/2] Improve tray icon lookup with fuzzy matching and system icon indexing @romanstingler (#407)
- feat: Add support for optional disk name in indicator configuration @kazie (#403)
- Fix WiFi Network Detection When No Networks Available at Startup @sudo-Tiz (#405)
- Add logind service to handle resume from sleep events @romanstingler (#404)
- Add Nord theme to documentation @romanstingler (#409)
- add scroll support for brightness slider and fix UI sync issues @romanstingler (#374)
- add configurable Wayland layer support @romanstingler (#362)
- tempo: timezones in menu @1randomguy (#521)
- Brightness Slider @levitatingpineapple (#539)
- SystemInfo: Detect bridge interfaces (ex: br0) @TheGreatMcPain (#530)
- Tempo weather additional config @1randomguy (#519)
- Responsive Sliders @levitatingpineapple (#522)
- AudioService improvements @levitatingpineapple (#449)
- Allow configuration of ashell on top-layer @1randomguy (#494)
- Show Update button only when updates available @denqxotl (#458)
- Nicer player metadata display @jazzpi (#319)
- Dynamic menu wrapper @MalpenZibo (#462)
π Bug fixesβ
- Fix/remove clone @romanstingler (#556)
- docs(config): update NVIDIA troubleshooting guidance @romanstingler (#555)
- Fix/upower @romanstingler (#554)
- fix(brightness): sync slider with actual brightness on menu open @MalpenZibo (#546)
- Use UPower Percentage for single battery systems @MalpenZibo (#543)
- Improve WiFi scanning reliability for both NetworkManager and iwd backends @romanstingler (#486)
- Current day tz fix @1randomguy (#538)
- Tray icon fixes: added visible option + not displaying @SimoneFelici (#533)
- Filter out stopped players from MPRIS player list @romanstingler (#526)
- refactor: improve IWD RSSI to signal strength mapping @romanstingler (#502)
- Fix NFS disk indicator support @romanstingler (#517)
- Fix workspace scroll @megabyte6 (#468)
- fix(iwd): properly toggle WiFi by controlling all adapters @romanstingler (#501)
- Fix weather indicator and menu having inconsistent data checks @MalpenZibo (#516)
- fix: enforce 2048 character hard limit for window titles @romanstingler (#506)
- Fix typo in status bar style description @pxy1337 (#504)
- Fix tempo calendar weekday alignment @romanstingler (#484)
- Fix: wheater retry @MalpenZibo (#480)
- Fix/tempo module width + build fix @MalpenZibo (#467)
- [Audio 2/2]Fix/volume icon logic @romanstingler (#453)
- [2/2 Custom] Fix/cleanup custom module @romanstingler (#443)
- fix: Sort workspaces by index and monitor order instead of alphabetically @romanstingler (#442)
- Fix workspaces on multi-monitor Niri setups @jazzpi (#392)
- Fix/network settings @romanstingler (#381)
- Fix WiFi Network Detection When No Networks Available at Startup @sudo-Tiz (#405)
- Fix VPN list when there are too many VPNs @kushagharahi (#370)
- FIX Tray: revert(tray): use find() instead of split_once() for parsing servicenames @romanstingler (#431)
- Remove unnecessary spawn and re-check updates after applying them @romanstingler (#380)
- Revert "Fix text color not applied to workspace numbers, Wi-Fi widget, and power widget" @MalpenZibo (#421)
- add scroll support for brightness slider and fix UI sync issues @romanstingler (#374)
- replace map().unwrap_or* with map_or_else and add inline attributes @romanstingler (#372)
- Cleanup code docs @romanstingler (#371)
- Fix text color not applied to workspace numbers, Wi-Fi widget, and power widget @romanstingler (#368)
- Add keyboard layout change handler for Hyprland @romanstingler (#367)
- Better logging when search for target output fails. @SGumbles (#518)
- Handle missing rfkill binary and /dev/rfkill gracefully @romanstingler (#466)
- [HF] Layer is missing @denqxotl (#413)
π Documentationβ
- docs(config): update NVIDIA troubleshooting guidance @romanstingler (#555)
- docs: fix grammar and wording in configuration docs @romanstingler (#551)
- docs: update features in README to reflect Tempo changes @romanstingler (#548)
- docs: add missing features, update full_config @romanstingler (#547)
- docs: reorder module documentation sidebar positions @romanstingler (#488)
- docs: add troubleshooting guide with common issues and solutions @romanstingler (#477)
- docs: add Tempo module documentation and update sidebar positions @romanstingler (#448)
- Add right-click command support documentation for settings indicators @romanstingler (#455)
- docs: document media player indicator format configuration option @romanstingler (#436)
- Docs: Update custom module documentation with detailed usage guidelines @romanstingler (#426)
- docs: improve module documentation and examples @romanstingler (#432)
- Add documentation for workspace grouping by monitor @romanstingler (#423)
- Update window_title module documentation @romanstingler (#411)
π§° Maintenanceβ
- chore: update iced to latest master @MalpenZibo (#550)
- Refactor NetworkDialogState construction with helper methods @romanstingler (#536)
- Optimize tray icon name handling with OsString and Cow @romanstingler (#537)
- clippy @romanstingler (#544)
- Optimize @romanstingler (#545)
- Clippy Refactor: Use sort_by_key and pattern guards for cleaner code @romanstingler (#535)
- reduce unnecessary allocations @Follpvosten (#470)
- Remove once_cell dependency and migrate to std::sync::LazyLock @romanstingler (#490)
- Add deprecation warning to Clock module @romanstingler (#463)
- Improve battery state handling and refactor peripheral icon selection @romanstingler (#439)
- Remove deprecated AppLauncher and Clipboard modules @romanstingler (#401)
- refactor: simplify code and improve readability @romanstingler (#373)
π§ Dependency updates
- Bump wayland-protocols from 0.32.9 to 0.32.10 @https://github.com/apps/dependabot (#391)
- Bump uuid from 1.18.1 to 1.19.0 @https://github.com/apps/dependabot (#390)
- Bump wayland-client from 0.31.11 to 0.31.12 @https://github.com/apps/dependabot (#389)
- Bump toml from 0.9.8 to 0.9.10+spec-1.1.0 @https://github.com/apps/dependabot (#387)
- Bump serde_json from 1.0.145 to 1.0.148 @https://github.com/apps/dependabot (#386)
- Bump actions/download-artifact from 4 to 7 @https://github.com/apps/dependabot (#385)
- Bump actions/upload-artifact from 4 to 6 @https://github.com/apps/dependabot (#384)
- Bump actions/checkout from 4 to 6 @https://github.com/apps/dependabot (#383)
- Bump actions/setup-node from 5 to 6 @https://github.com/apps/dependabot (#382)
Contributorsβ
β€οΈ A big thanks to @1randomguy, @Follpvosten, @SGumbles, @SimoneFelici, @TheGreatMcPain, @clotodex, @denqxotl, @gwiazdorrr, @jazzpi, @kazie, @kushagharahi, @levitatingpineapple, @lkcv, @megabyte6, @pxy1337, @romanstingler, @sudo-Tiz and Benedikt von Blomberg
0.7.0December 22, 2025
Itβs been a long time coming, but a new release is finally here!
Hopefully, the CI has correctly included everyone who contributed.
Thanks to everyone for the support!
π₯ Breaking changesβ
- Icons refactor. Include only a Nerdfont subset instead of the entire font @MalpenZibo (#269)
π Featuresβ
- niri-support @clotodex (#328)
- Allow hiding special workspaces @fdev31 (#332)
- Improve vpn button @matuck (#307)
- Feature: Mouse Scrolling @EdgesFTW (#308)
- Feature: multi-monitor visible indicator @EdgesFTW (#306)
- Add support for virtual desktops @emarforio (#214)
- feat(bluetooth): change indicator icon on connected status @sudo-Tiz (#288)
- Feat: Add MonitorSpecificExclusive visibility mode @MalpenZibo (#287)
- Feat: add custom button to settings panel @sudo-Tiz (#233)
- Feat: Support bluetooth device management @sudo-Tiz (#277)
- Feature peripheral battery levels @MalpenZibo (#266)
- Feat: bluetooth indicator and indicators order @sudo-Tiz (#276)
- feat: add hibernate option to power settings @sudo-Tiz (#278)
- feat: add temperature sensor configuration option @sudo-Tiz (#254)
- Fuzzy search output names from config @CodedNil (#312)
π Bug fixesβ
- Fix the reported SystemBattery percentage. @kiryl (#364)
- Fix scroll direction + scroll touchpad sensibility @MalpenZibo (#366)
- chore: fix clippy @MalpenZibo (#357)
- Fix: Tray missing icons + Tray svg icon size @MalpenZibo (#353)
- Fix the logic of the previous PR @fdev31 (#344)
- Fix scale factor lag @MalpenZibo (#340)
- Fix: Use a fixed rev in iced dep + fix lag issue @MalpenZibo (#337)
- Fix regression #312, WorkspaceVisibilityMode doesn't work anymore @MalpenZibo (#331)
- Fix: Update menu scroll padding @MalpenZibo (#309)
- Chore: Minor bluetooth submenu UI fixes @MalpenZibo (#293)
- fix(config) Make Default and Deserialize more in sync @Siprj (#294)
- Fix: typo on Makefile @sudo-Tiz (#275)
- Pipewire boot check @chazfg (#349)
- Make system_info network selection deterministic @kylesferrazza (#315)
π Documentationβ
- docs: improve temperature sensor configuration documentation @romanstingler (#363)
- Update Docs to add Niri support @MalpenZibo (#352)
- docs(appearance): font configuration cannot be hot-reloaded @tank-bohr (#290)
- feat: add hibernate option to power settings @sudo-Tiz (#278)
π§° Maintenanceβ
- chore: fix clippy @MalpenZibo (#357)
- Chore: Update website deps @MalpenZibo (#336)
- Fix VPN button capitalization @jazzpi (#330)
- Chore: Improvement on release workflow. Add binary, deb and rpm assets @MalpenZibo (#300)
- CI: Copr automation + Nix build fix + Wayland compatibility @dacrab (#297)
- Chore: Minor bluetooth submenu UI fixes @MalpenZibo (#293)
- Chore: Icon font improvement @MalpenZibo (#292)
- Chore: Upd depbot interval + autolabel fixes @MalpenZibo (#281)
- Chore: upd rust min version + remove codegen-units = 1 @MalpenZibo (#280)
- chore: Optimize binary size @MalpenZibo (#270)
- New release system @MalpenZibo (#261)
- Suggest installation path as /usr/local/bin @jennydaman (#355)
- nix fmt flake.nix @kylesferrazza (#320)
- Remove flake-utils @kylesferrazza (#316)
- add rust-analyzer to devshell @kylesferrazza (#314)
π§ Dependency updatesβ
- Bump mdast-util-to-hast from 13.2.0 to 13.2.1 in /website in the npm_and_yarn group across 1 directory @dependabot[bot] (#339)
- Bump the npm_and_yarn group across 1 directory with 3 updates @dependabot[bot] (#338)
- Bump clap from 4.5.48 to 4.5.49 @dependabot[bot] (#271)
- Bump zbus from 5.11.0 to 5.12.0 @dependabot[bot] (#285)
- Bump sysinfo from 0.36.1 to 0.37.2 @dependabot[bot] (#284)
- Bump actions/checkout from 4 to 5 @dependabot[bot] (#282)
- Bump actions/setup-node from 5 to 6 @dependabot[bot] (#283)
- Bump regex from 1.11.3 to 1.12.2 @dependabot[bot] (#272)
- Bump actions/checkout from 4 to 5 @dependabot[bot] (#264)
- Update pipewire crate @MalpenZibo (#286)
Contributorsβ
β€οΈ A big thanks to @CodedNil, @EdgesFTW, @Siprj, @chazfg, @clotodex, @dacrab, @emarforio, @fdev31, @jazzpi, @jennydaman, @kiryl, @kylesferrazza, @matuck, @romanstingler, @sudo-Tiz and @tank-bohr
0.6.0October 6, 2025
WARNING BREAKING CHANGESβ
The truncate_title_after_length configuration has been moved
inside the window_title configuration section. WindowTitle
The system configuration section has been renamed into system_info. SystemInfo
Addedβ
- Add option to remove the airplane button
- Add window title configuration
- Add modes to window title module.
- Add a optional command line parameter (
config-path) to specify the path to the configuration file - Add
scale_factorconfiguration to change the scaling factor of the status bar - Add custom commands for power menu actions
- Add
enable_esc_keyconfiguration to close the menu with the ESC key - Support for custom workspace naming via the
workspace_namesconfig option. - Add
remove_idle_btnto disable the idle inhibitor button from settings menu
Changedβ
- Move
truncate_title_after_lengthto the window_title configuration
Fixedβ
- Bluetooth: use alias instead of name for device name
- Airplane button fail when the
rfkillreturns an error or is not present - Reduced wifi rescan requests
Thanksβ
A big thanks to @ineu, @tqwewe, @beeender, @Pebor, @CodedNil, @GabMus, @repomaa, @adamm-xyz, @sudo-Tiz
0.5.0May 20, 2025
WARNING BREAKING CHANGESβ
The configuration switch from yaml to toml format.
The configuration file must be updated to adapt to the new format.
The camelCase format has been removed in favor of snake_case,
which better aligns with the toml syntax.
You could use an online tool like: https://transform.tools/yaml-to-toml
but remember to change the camelCase to snake_case format.
Now the configuration file is located in ~/.config/ashell/config.toml
Addedβ
- Add font name configuration
- Add main bar solid and gradient style
- Add main bar opacity settings
- Add menu opacity and backdrop settings
- Add experimental IWD support as fallback for the network module
- Handle system with multiple battery
- Allow to specify custom labels for keyboard layouts
- Allow to always show a specific number of workspaces, whether they have windows or not
- Added custom modules and their ability to receive events from external commands
Changedβ
- Change configuration file format
- Enhance the system info module adding network and disk usage
- Simplify style of "expand" button on wifi/bluetooth buttons
- Allow to specify custom labels for keyboard layouts
- Removed background on power info in menu
Fixedβ
- Fix missing tray icons
- Fix hide vpn button when no vpn is configured
Thanksβ
- @JumpIn-Git for fixing nix flake instruction
- @ineu for the custom labels for keyboard layouts, the
max_workspacessettings and for fixing some bugs - @rahatarmanahmed for the new settings button style, the new battery info style and for fixing some bugs
- Huge thanks to @clotodex for the
iwdnetwork support and the custom modules - @tqwewe for fixing the audio sink menu position with bottom bar
0.4.1March 16, 2025
Addedβ
- Media player module
Fixedβ
- Fix bluetooth service in NixOS systems
- Fix brightness wrong value in some situations
- Fix settings menu not resetting it's state when closed
- Fix bluetooth service crash during listing of devices without battery info
- Fix centerbox children positioning
Thanksβ
- Huge thanks to @mazei513 for the implementation of the media player module
0.4.0January 19, 2025
A big update with new features and new configurations!
The configuration file must be updated to adapt to the new stuff.
Addedβ
- Multi monitor support
- Tray module
- Dynamic modules system configuration
- New workspace module configuration
Changedβ
- Update to pop-os Iced 14.0-dev
- Dynamic menu positioning
Thanksβ
- @fiersik for participating in the discussions
- @ReshetnikovPavel for the proposal of the new dynamic modules system configuration
0.3.1December 13, 2024
Fixedβ
- Fix upower service startup fail in case of missing
org.freedesktop.UPower.PowerProfilesdbus interface
0.3.0November 26, 2024
0.2.0November 8, 2024
Addedβ
- Support for special workspaces
Fixedβ
- Ashell crash when the title module try to split a multi-byte character
- Removed fixed monitor name in the workspace module
- Fix privacy webcam usage check during initialization
- Fix microphone selection
- Fix sink and source slider toggle button state
- Fix brightness initial value
Thanksβ
- @fiersik for all the feedback
- @leftas for the PRs to fix the special workspace crash and the title module
0.1.5November 4, 2024
0.1.4October 23, 2024
Fixedβ
- bluetooth quick toggle button no longer appear when no bluetooth device is available
- rfkill absence doesn't cause an error during network service initialization
- rfkill is launched using absolute path to avoid issues with $PATH
- webcam absence doesn't cause an error during privacy service initialization
Changedβ
- added more logging to the services in case of errors
0.1.3October 22, 2024
0.1.2October 17, 2024
0.1.1October 3, 2024
Fixedβ
- re-added vpn toggle functionality that was removed during the services refactor
0.1.0September 30, 2024
Addedβ
- First release
- Configuration system
- Lancher button
- OS Updates indicator
- Hyprland Active Window
- Hyprland Workspaces
- System Information (CPU, RAM, Temperature)
- Date time
- Settings panel
- Power menu
- Battery information
- Audio sources and sinks
- Screen brightness
- Network stuff
- VPN
- Bluetooth
- Power profiles
- Idle inhibitor
- Airplane mode