github Alexays/Waybar 0.16.0

3 hours ago

What's Changed

  • ci: bump flake lock actions by @khaneliman in #4822
  • fix: update tooltip method to use pango markup formatting by @Cprakhar in #4831
  • Fix include of poll.h by @hannesbraun in #4828
  • fix(image): treat missing interval as once by @khaneliman in #4838
  • docs: fix typo in waybar.5 in expand-right field info by @esensar in #4847
  • fix: remove unnecessary console log for battery status by @Cprakhar in #4844
  • memory: use markup rather than text for memory tooltip by @chrisvittal in #4858
  • fix: use pango markup for consistent formatting in format and tooltip-format by @Cprakhar in #4857
  • fix: use SafeSignal in ipc in order to not call GTK funcs from a thread by @sliedes in #4854
  • fix(keyboard-state): fix segfault on device hotplug removal by @tobixen in #4852
  • hyprland/workspaces: Add enable-bar-scroll option by @VAWVAW in #3088
  • bump: niri/workspaces: change icons priority by @cebem1nt in #4869
  • fix: ensure AAppIconLabel image remains not visibile if icons are disabled by @olliestone in #4863
  • fix(cava): remove silent CSS class on reactivation by @GG2R10 in #4874
  • feat: add tooltip-format config option in cpu module by @Cprakhar in #4856
  • battery: power switch events by @44vladimirov in #4849
  • feat: add {tooltip} in format replacements in custom module by @Cprakhar in #4836
  • feat(niri): niri depends on socket by @khaneliman in #4834
  • fix: owerwrite handleScroll to remove any scrolling handling from group by @cebem1nt in #4821
  • fix(mpris): fall back to next non-ignored player and prefer playing players by @BlueManCZ in #4846
  • bluetooth: fix segfault when DBus manager fails to initialize by @Alexays with @Copilot in #4879
  • battery: fix SIGABRT on USB device unplug race condition by @Alexays with @Copilot in #4881
  • mpd: fix socket FD leak on system-level connection errors by @Alexays with @Copilot in #4880
  • [WIP] Fix waybar responsiveness and interaction issues by @Alexays with @Copilot in #4888
  • fix(util): ensure SleeperThread lifecycle safety and thread sync by @khaneliman in #4889
  • fix(util): bound SafeSignal queue growth under burst load by @khaneliman in #4890
  • fix: float interval cast by @BryceGust in #4895
  • fix(command): return non-zero when child exec fails by @khaneliman in #4892
  • fix(network): align tooltip and tooltip text by @khaneliman in #4897
  • perf(memory): optimize string operations; remove deep copies, memdup, and icon theme rescanning by @khaneliman in #4898
  • fix(hyprland-ipc): harden fd lifecycle and listener loop by @khaneliman in #4891
  • fix: sync tooltip updates without resetting hover state by @AlisonB319 in #4900
  • fix(mpris): disconnect GLib signals before destroying objects by @sw1nn in #4905
  • fix(menu): keep popup menus alive after builder teardown by @khaneliman in #4911
  • fix(tray): complete attention/overlay implementation by @khaneliman in #4913
  • fix(hyprland): misc hardening with ipc socket and events by @khaneliman in #4910
  • Add simple calendar tooltip example for clock module by @B2krobbery in #4924
  • systemd-failed-units: add tooltip with list of failed units by @c4rlo in #4929
  • Fix menu-actions GTK callback pointer handling by @B2krobbery in #4925
  • chore: remove heaptrack dump by @khaneliman in #4931
  • cava bump by @LukashonakV in #4932
  • chore: Stop using deprecated/removed Nerdfonts codepoints by @BryceBeagle in #4939
  • fix(hyprland/window): Fix segfault caused by use-after-free by @jayshozie in #4938
  • Add start-expanded option to group by @sjudin in #4937
  • fix: prevent resource leak when rebinding Wayland globals by @B2krobbery in #4946
  • Network: Fix default interface selection. by @tsukasa-au in #4948
  • clarify logical condition in wlr taskbar module by @B2krobbery in #4945
  • Fix network bandwidth rate calculation for early updates by @sgruendel in #4943
  • Fix unnecessary allocation in GTK callback by @B2krobbery in #4953
  • fix: prevent resource leak when rebinding dwl globals by @B2krobbery in #4962
  • feat(client): add support for 8-bit hex color codes in CSS by @keepo-dot in #4960
  • Group ref fix by @cebem1nt in #4973
  • niri/workspaces: feature - add "hide-empty" config option by @cebem1nt in #4966
  • fix(bar): ensure exception safety for group module allocation by @B2krobbery in #4970
  • fix(network): prevent near-zero bandwidth on rapid event-driven updates by @adrianlzt in #4964
  • Network: fix: delete correct address type by @argentite in #4967
  • memory: feature - add "unit" config option by @pix-code in #4975
  • fix the io failure for hotplug-in device by @Mrpaoo in #4982
  • fix(sni): use std::make_unique for Item allocation by @B2krobbery in #4990
  • Various toctou fixes by @nschloe in #5007
  • fix(hyprland/workspaces): adapt dispatch commands for Lua IPC protocol by @higorprado in #5013
  • fix(battery): prevent crash when removing a hot-plugged device by @InetAddress in #5121
  • fix(delayWorker): stop loop for static modules with no exec command by @martuscellifaria in #5123
  • feat(modules): pause background threads when display is asleep by @JuustKiwi in #5154
  • Fix (wayfire/backend): Fixed unhandled exception (out_of_range) after… by @muratyalcin-ce in #5076
  • fix(mpd): avoid false no-song warning when stopped by @SaveTheRbtz in #5101
  • fix(amodule): prevent crash when cursor timeout fires after destruction by @typedrifter in #5058
  • Fix connection loop in pulseaudio by @Neltharion01 in #5010
  • perf(mpd): avoid duplicate playing-state updates by @SaveTheRbtz in #5100
  • perf(json): parse directly from string buffers by @SaveTheRbtz in #5108
  • fix(hyprland/workspaces): fix IPC call when using move-to-monitor by @tomben13 in #5043
  • Fix (memory): Fix tooltip showing incorrect unit and add proper unit initialization by @muratyalcin-ce in #5079
  • fix(niri/workspaces): segfault when setting workspace button markup by @jaschiu in #5112
  • fix(privacy): segfault due to use-after-free from get_children() by @jaschiu in #5114
  • fix(sni): ignore name/pixmap updates for custom icons by @runxiyu in #5138
  • fix: mpd specify timer interval in seconds by @awused in #5046
  • fix(sway/workspaces): use number when available to avoid parsing issues by @Sayrus in #4742
  • fix(hyprland): replace EventBox with Button for taskbar window items by @buzz in #5062
  • fix(tray): hide module when no items are visible by @JeremieRodon in #5028
  • (Fix) (sway workspace module) persistent workspaces always removed by @Lege19 in #5072
  • fix(hyprland): support custom scroll commands by @buzz in #5061
  • fix(mpd): truncate before sanitization and improve tooltip UX by @Siriusuna in #5064
  • hyprland/workspaces persistent fix and improve cursor handling configuration by @The-Robin-Hood in #4753
  • fix(sway/language): keep flag visible across hot-plug and unknown layouts by @mil-ad in #5039
  • battery: guard _exists = true assignment inside if condition by @EvansJahja in #5009
  • hyprland/window: fix title not showing for windows in special workspaces by @jramrath in #2965
  • Fix bug #4241 by @stkth in #4383
  • Add tooltip functionality on hyprland/language module by @vpcano in #3698
  • fix(hyprland/language): handle commas in keyboard-name config by @Alexays in #5155
  • fix: Watch new CSS files on appearance change by @BBaoVanC in #4804
  • fix(sway/workspaces): escape markup in workspace if enabled by @Sayrus in #4744
  • custom_modules: Fix mediaplayer.py handling untitled track by @cogwheel in #5088
  • fix: USR1/USR2 handling on OpenBSD by @VlkrS in #4992
  • fix(hyprland): keep workspace hover over taskbar icons by @Praczet in #5048
  • Fix timeout created by most recent gtk-layer-shell release when creating bars for multiple monitors. by @Mervius in #4984
  • fix: issue #4955 wrong behaviour of regex for sway/window 'rewrite' by @85ae in #4957
  • fix: Return when ID doesn't exist, we only care about the interest list. by @Mental-Vortex in #4672
  • Fix indentation formatting in power_menu.xml by @OlivierNeyret in #4649
  • fix(hyprland/workspaces) Special Workspace Multi-Monitor Support by @aaronred345 in #4692
  • feat(hyprland/workspace): improved styling for named special workspaces by @aaronred345 in #4691
  • fix(sni): retry Host proxy creation on transient errors by @oqlatulesba3 in #5093
  • fix: prioritize plugged status over full when battery is full and plugged in by @Cprakhar in #4837
  • Fix clang build error by @jaschiu in #4483
  • fix(wlr/taskbar): let task titles shrink within available space by @EzequielColungaAcha in #5060
  • perf(label): skip redundant markup updates by @SaveTheRbtz in #5111
  • Refactor: simplify conditional expressions in Hyprland workspace module by @B2krobbery in #4983
  • docs: clarify global tooltip styling behavior by @B2krobbery in #4930
  • Fallback formatting when format-paused is missing uses ALabel by @JangXa in #5148
  • meson_options: improve sndio's description by @fkobi in #4035
  • Document light and dark stylesheets in manual by @ccjmne in #5139
  • bar: warn on invalid height type in configuration by @B2krobbery in #4951
  • Hide niri/language widget if formatted string is empty by @Gskartwii in #4524
  • Force layer-shell commit after configure by @rmt in #5131
  • added a "fallback" option to hyprland/window when no window in focus by @shibjyoti555 in #4353
  • Allow tooltip formatting the CPU module. by @hallvardnmbu in #4724
  • Additional options when muted for the PulseAudio-Slider module by @finitemonkey in #5045
  • cpu: add load{1,5,15} format variables by @Duncaen in #4114
  • feat(temperature): add hwmon-name option for stable sensor selection by @kaosuran in #4723
  • feat(sway/workspaces): add format for negative indices by @cartok in #4747
  • feat: add custom format-icons for each key in keyboard-state module by @Cprakhar in #4883
  • feat(wlr/taskbar): expose active toplevel state on the bar window by @iamcheyan in #5126
  • feat(battery): add option to smooth power for more stable time_remaining estimates by @Benji-clm in #4761
  • Encode icon inside label by @oisanjaya in #4719
  • power-profiles-daemon: split driver into cpu driver and platform driver by @jeevithakannan2 in #3994
  • feature: group - add reveal-delay config option for drawer by @cebem1nt in #4993
  • feat: add compact versions of bandwidthBytes to network module by @yui-915 in #5015
  • river/tags: Allow river tags to be styled based on monitor focus by @lilly-lizard in #3436
  • feat: add support for configurable first day of the week in calendar by @Cprakhar in #4841
  • feat: add mango modules: workspace,language,keymode,window,layout by @DreamMaoMao in #5078
  • feat: allow sorting niri workspaces by @RaphaelKimmig in #4683
  • Add hide-active by @Roc25 in #4134
  • feat: support Pango markup in remaining tooltips by @Agnibha007 in #5034
  • mpd: Implement idle events for Playing state by @awused in #5047
  • feat: Show Niri/window component when workspace is empty by @diego-velez in #4463
  • Add "ignore-workspaces" option to sway/workspaces module by @maltherd in #4986
  • feat (hyprland/workspaces): expose workspace name as CSS class by @v-dermichev in #4958
  • [feat] sway/workspaces: refer to outputs by their monitor identifier in persistent-workspaces by @ar-turek in #5073
  • feature: add on-click-copy clipboard functionality by @Skyfrei in #4950
  • Add CSS classes for sway workspace indicators depending on associated output by @burbschat in #4193
  • Add css class to hyprland language module of short_name language code by @dimti in #4529
  • Add max-windows option to hyprland/workspaces by @xiyori in #4981
  • feat(language): add tooltip support with configurable tooltip-format by @yihangwu539-png in #5012
  • Add CSS selector for expanded drawers by @Diax170 in #4977
  • [RFC] niri/window: add col/max_col parameters by @martinetd in #4530
  • feat (hyprland/workspaces): support for state specific icon overrides by @GlassyBridge in #4994
  • feat(wlr/taskbar): add justify option to control horizontal alignment of the module box by @mbroemme in #4532
  • feat(cpu): add {icons} format replacement for all per-core icons by @IVSOP in #5054
  • pulseaudio: add target option to control source (microphone) volume by @7FM in #4908
  • hostname dependend module by @jaypikay in #4907
  • Add an option to search for name in hwmon directory for the temperature module by @ico277 in #3706
  • dwl/window: allow hiding of title when either inactive or empty by @casKd-dev in #3926
  • feat (clock): Add support for optional CSS classes to the clock module's calendar tooltip by @nickjj in #4896
  • wireplumber: add more volume formats by @mBornand in #4255
  • dwl/tags: add hide-vacant option by @casKd-dev in #3925
  • feat (tray): Ignore Tray items by service name and when dbus properties load by @AntGarSil in #4826
  • feat(disk)!: handle multiple disks at once by @szbmrk in #4762
  • feat(image): expand ~ & $HOME in path by @zspher in #4607
  • add prefer-album-artist to mpris module by @PandorasFox in #4084
  • feat(backlight): added percentexp as format option by @nova-nowiz in #1870
  • pulseaudio: Add 'sink-mapping' config option by @Ape in #3421
  • feat(hyprland/workspaces): grouping icons by @eonphi in #4861
  • format-bluetooth and device.form-factor support for wireplumber module by @winkelnp in #4366
  • Add '-' support to wifi config by @ALSchwalm in #4722
  • feat(clock): Add action to execute external command by @akselaase in #4760
  • feat: add customgraph module by @Gazer in #4588
  • feat(niri/workspaces): Add enable-bar-scroll option by @yuukibarns in #5041
  • feat(mpd): add playing-interval option by @theoratkin in #4334
  • feat(group): add reveal-by-default option by @ErrorNoInternet in #4060
  • feat(custom): add image by @stlkr in #5069
  • River/tags: Add static CSS classes for all available tags. by @nonamescm in #5017
  • feat: add support for bt peripheral device battery by @AntoineGS in #4712
  • Added Idle Inhibitor Features: Signal Inputs & Activity Detection by @guttermonk in #4565
  • feat(niri/workspaces): add {total} format token to workspaces by @archion in #5110
  • Sway IPC client: robustness improvements & code cleanups by @c4rlo in #5068
  • log: use native journald protocol for when running as a service by @VannTen in #4553
  • feat(cursor): use cursor-shape-v1 cursor names instead of Gdk::CursorType by @J0hannes101 in #5133
  • refactor(ALabel): generic label+tooltip helper to remove per-module duplication by @Alexays in #5156
  • Add missing documentation for the "target" option of the PulseAudio-Slider module. by @finitemonkey in #5049
  • feat(hyprland/submap): add config option to specify different icons for submaps by @szbmrk in #4772
  • hyprland/workspaces: add debounce timer to prevent workspace button f… by @yyyumeniku in #5032
  • waybar-styles.5: add semicolon to css import statement by @Habbie in #5033
  • feat(ALabel): allow custom percentage thresholds in format-icons by @Grinchuelo in #5153
  • feat(group): Add .empty class to empty groups by @sjudin in #4941
  • feat(wlr/taskbar): add homogeneous option to evenly distribute button widths by @mbroemme in #4543
  • feat(niri/worspaces): add ignore-workspaces configuration option by @thomascrha in #4537
  • feat: allow not switching output when clicking sway/workspace by @AckslD in #4685
  • Support hiding tray icons by @andresilva in #4624
  • Implemented "only-physical" parameter in the wireplumber module. by @PickNicko13 in #4714
  • feat(hyprland/workspaces): add deduplication and max-icons option to workspace-taskbar by @whymusticode in #4694
  • clock: add weeks-numbering option for configurable CW calculation by @beyertom in #4940
  • feat(Group/Drawer): add dynamic drawer hiding modules based on module's class by @piwonskp in #4014
  • feat: add display-condition configuration option by @hansp27 in #4001
  • allow dynamic timeout setting for idle inhibitor by @torgiren in #3370
  • Added a taskbar squash option by @NoakPalander in #3740
  • add click coordinates to script by @rossmeier in #3573
  • feat: Add wifi network link bitrate value by @g-goessel in #4265
  • add format-icons to river/layout by @AtomToast in #3311
  • feat: add new module 'images' to render multiple images under one gtk container by @VPavliashvili in #3151
  • feat(hyprland/workspaces): add uniqueIcons option by @LoricAndre in #4320
  • [hyprland/workspaces] Add tooltips to hyprland/workspaces by @0x000C0A71 in #3017
  • feat: add way to use environment value for 'output' option by @JarKz in #3817
  • feat: Added source_desc argument to format_source in pulseaudio.cpp by @Sduniii in #3818
  • feat: added dbus handler to update current player by @savely-krasovsky in #2157
  • feat(wlr/taskbar): add truncate option to ellipsize long button text by @mbroemme in #4545
  • added output-dimensions option by @RyanGibb in #1358
  • feat (niri/workspaces): add dynamic window icons to workspaces matching hyprland/workspaces by @kabhijeet in #4396
  • fix(tray): segfault due to use-after-free from iterating children by @jaschiu in #5115
  • fix: Use workspace ID to handle hyprland/workspace updates by @edeustua in #4305
  • (sni) be able to control oder of tray items, and clean up sni module based on clang-tidy by @yangyingchao in #4850
  • feat: sway/workspaces: add custom workspace sorting functionality by @Esensats in #4536
  • WWAN module (ModemManager) by @adryzz in #4557
  • Add GeoClue2 location privacy item by @ErikReider in #4504
  • feat(niri): add workspace-taskbar support by @sewaustav in #4997
  • net: add ethernet link speed by @awariac in #2891
  • fix: backward-compat + bug fixes and man-page build fix for 0.16.0 by @Alexays in #5157
  • fix: batch of crash/freeze fixes (clock DST, interval:0, thread-safety, reconnects) by @Alexays in #5158
  • fix(wireplumber): correct linear→cubic volume conversion (0% on Bluetooth) + source-muted state by @Alexays in #5161
  • fix(clock): degrade gracefully on an invalid format specifier by @Alexays in #5160
  • fix(keyboard-state): read lock LEDs from all devices, not just the first by @Alexays in #5163
  • fix: tray accel-group crash (#5142), wlr/taskbar shell-exec of built-in actions (#3284), MPD connect-timeout freeze (#1186) by @Alexays in #5164
  • fix: mpris resume SIGSEGV (#5124), wireplumber async UAF (#3974), stale reload batch state (#4129) by @Alexays in #5165
  • ci: headless smoke + screenshot test for the bar by @Alexays in #5166
  • fix: backlight leds subsystem (#2848), sway/ipc reconnect (#3166), ethernet unplug regression (#4364) by @Alexays in #5167
  • refactor(custom): move continuous exec onto GLib command stream by @khaneliman in #4915
  • fix(niri): keep the initial IPC connect synchronous by @khaneliman in #5171
  • feat(format): expand pow_format modifiers by @layus in #5170
  • fix(label): compare markup cache by raw bytes, not collation by @khaneliman in #5172
  • fix: batch of bugs found reviewing the 0.15.0..master diff by @Alexays in #5175
  • fix: resource-leak / correctness cleanups from the 0.15.0..master review (low severity) by @Alexays in #5176
  • fix(image): don't crash at startup when the widget isn't realized yet (#5051) by @Alexays in #5174
  • fix(wireplumber): reconnect when PipeWire/WirePlumber restarts (#2882) by @Alexays in #5168
  • ci(smoke): sanitizer build + module/interaction/a11y/layout coverage by @Alexays in #5173
  • fix: backlight I/O flooding (#5020) + network IP recovery after link flap (#5122) by @Alexays in #5177
  • fix(wlr/taskbar): respect all-outputs by @khaneliman in #5180
  • ci(smoke): fix state tier hang from bare wait on a lingering daemon by @Alexays in #5184
  • docs(man): add load by @pajlada in #5187
  • fix(idle_inhibitor.cpp): Fix build for systems without SIGRTMIN/SIGRTMAX by @VlkrS in #5197
  • refactor(cava): fix thread-safety, resource leaks, and style violations by @LukashonakV in #5199
  • use nmcli implementation for calculating WiFi signal strength by @grishatop1 in #5201
  • refactor: rm direct dp.emit() call in constructor. by @Mrpaoo in #5208
  • cava bump by @LukashonakV in #5213
  • fix(tooltips): keep dynamic tooltips from resetting hover delay by @bjnobre in #5212
  • fix(mpris): sanitize metadata to prevent multiline UI expansion by @JuustKiwi in #5225
  • util/enum: make header-only and drop mandatory Hyprland dependency by @LukashonakV in #5216
  • fix(sway/ipc): don't mistake events for the subscribe reply by @10ne1 in #5219
  • fix(backlight): clamp scroll step to min-brightness by @gitmpr in #5210
  • config: add min-brightness to backlight example by @gitmpr in #5209
  • Replace lone tab character in style.css with spaces for consistency by @toadjaune in #5230
  • privacy: disconnect pending timeouts on destruction by @shivankgarg98 in #5249
  • fix(hyprland/workspaces): handle workspace ID changes by @daher13 in #5248
  • feat: clang format options added on makefile and docker image for arc… by @daher13 in #5252
  • fix: fix module backlight format using clang by @daher13 in #5251
  • fix(hyprland/workspaces): respect enable-bar-scroll config option by @brian-brow in #5232
  • docs(states): wireplumber uses >=, not <= by @rootatoskr in #5257
  • fix(hyprland/language): ensuring exact match of the device name by @JeremieRodon in #5278
  • sink the GVariant to prevent freeing a floating variant by @monban in #5273
  • meson: Fix unwinding error in libunwind over glibc by @aokblast in #5267
  • fix: don't block startup on the desktop portal by @shivankgarg98 in #5270
  • fix(tray): fall back when dbus menu is unavailable by @nanomatters in #5238
  • ipc: Improve teardown process by @aokblast in #5266
  • ext/workspaces: fix inverted capability bit checks by @llyyr in #5265
  • fix(hyprland): detect dispatch protocol via configProvider by @CristianMz21 in #5231
  • Fix crash with keyboard-state on keyboard removal by @wilkmaia in #5279
  • wlr/taskbar: reload icon when the widget scale factor changes by @teivng in #5262
  • Fix/command read busy loop by @10ne1 in #5259
  • fix(tooltips): only update the tooltip of the hovered module by @rmrfus in #5245
  • fix(hyprland/language): ignore empty/unknown layouts from virtual keyboards by @zeerayne in #5263
  • fix(hyprland/workspaces): only deduplicate taskbar icons when max-icons is set by @IlyasKhallouki in #5222
  • icon_loader: fix ctype usage by @kikadf in #5321
  • memory: fix get_free_memory() on NetBSD by @kikadf in #5319
  • fix(tray): prebuild the dbusmenu before the first right click by @wrisky-cmyk in #5327
  • bump libjsoncpp by @mtimaN in #5330
  • fix(tray): accept dbusmenus without the Version property by @khaneliman in #5315
  • fix(wireplumber): apply common muted class to primary node by @tonrl in #5337
  • fix(taskbar): avoid stale pointer in drag payload by @sanyarnd in #5334
  • fix(custom): stop applying module-level CSS classes to the inner label by @Carltoffel in #5340
  • fix(custom,disk): catch fmt::format_error by @kylin-liwn in #5332
  • fix(load): respect tooltip-format config by @kylin-liwn in #5331
  • fix(tray): respect tooltip config option by @Tallis-Larsen in #5359
  • fix(hyprland/workspace): GTK memory leak by @penguin-sophist in #5342
  • mango/window: added max-length option to documentation by @daher13 in #5377
  • docs(temperature): document disable-on-sleep and what actually triggers it by @ihsandeniz in #5345
  • Portable uptime usage, fallback to CLOCK_MONOTONIC by @kikadf in #5320
  • fix(tray): do not abort on a malformed orders entry by @Carltoffel in #5296
  • sni/watcher: accept combined "bus_name/object_path" item registrations (Electron 43.4.1+) by @teivng in #5287
  • fix(power-profiles-daemon): guard async callback lifetime by @sdegler in #5383
  • ext/worksapces: sort buttons when workspace changes group by @llyyr in #5264
  • fix(hyprland/language): split activelayout on the last comma outside parens by @vanshdev0101 in #5247
  • fix(inhibitor): use a private system bus connection and reconnect when closed by @ravi-arnan in #5272
  • mpris: add hide-on-paused option by @sndsh404 in #5309
  • fix(sni): destroy the dbusmenu and drop its reference in ~Item() by @dmitry-j-mikhin in #5375
  • fix(backlight): let stop() cancel the udev worker only in epoll_wait() by @dmitry-j-mikhin in #5376
  • fix/disks: added linebreak just after second path by @daher13 in #5384
  • feat(sway/workspaces): Add CSS class to identify workspaces by number by @turbodt in #5336
  • fix(network): read the ACK after get_station requests by @CraftyMuscle in #5386
  • fix(modules): disconnect GLib signal handlers before destroying objects by @serhatvs in #5385
  • clock: use standalone month names in calendar header by @Nikshay1 in #5387
  • feat(label): add fit-height to fit multi-line labels into the bar by @iamkarlson in #5381
  • fix(hyprland): Support addressable workspace IPC by @tonybutt in #5324
  • Add bar blur option by @AntonyLittle in #5348
  • fix(backlight): calculate scroll limits in device units by @infinityidk in #5355
  • feat(mango/workspaces): add tag-filter option to restrict visible tag… by @GeanJair in #5351
  • fix(battery): round capacity instead of truncating it by @ln-bodicherla in #5398
  • fix(keyboard-state): inotify descriptor leak by @sdegler in #5403
  • fix(power-profiles-daemon): initialize active profile iterator by @sdegler in #5397
  • fix: sanitized tooltip text by @daher13 in #5422
  • GTK4. Dockerfiles update by @LukashonakV in #5412
  • GTK4. freeBSD update by @LukashonakV in #5413
  • docs(custom): make interval and signal descriptions agree by @ihsandeniz in #5394
  • fix(nix): match the current libcava wrap source and directory by @mishalshanavas in #5427
  • fix(subprojects): keep libcava as wrap-file so sandboxed builds work by @twstagg in #5431
  • feat(battery): add {eta} replacement for estimated end time by @davidemanini in #5428
  • fix(bar): waybar crashes when an output's scale changes by @nikarh in #5435
  • feat: Add umbriel/workspaces, umbriel/window & umbriel/layout by @SsubezZ in #5434
  • fix(ci): repair checkout step in Nix lockfile updater by @mishalshanavas in #5426
  • fix(util/command, custom_graph): forked child must not inherit a pending pthread_cancel by @dmitry-j-mikhin in #5370
  • fix(network): misc fixes and cleanups in network module by @c4rlo in #5416
  • fix(tooltips): show the tooltip again after scrolling a module by @Carltoffel in #5404
  • fix(wireplumber): resolve default node once it is added by @andresilva in #5396
  • fix(custom): keep module name and class on the label when there is no image by @zeerayne in #5365
  • Add ext-workspaces scroll support by @llyyr in #5261
  • fix(hyprland/workspaces): clear the tooltip when its format is empty by @Fiwex in #5433
  • group: allow replacing the drawer leader when expanded by @bjnobre in #5291
  • feat: load cava and gps as runtime modules by @Alexays in #5441
  • fix(sni): disconnect the dbusmenu from its client before destroying it by @dmitry-j-mikhin in #5439
  • Add Umbriel to README #5434 by @SsubezZ in #5437
  • fix(AModule): let unhandled clicks propagate to parent groups by @miju04 in #5424
  • ci: harden lockfile updater with explicit job permissions by @mishalshanavas in #5436
  • test(smoke): inject clicks through a virtual pointer and gate on them by @Alexays in #5442
  • fix(main): keep the signal thread alive on EINTR by @Alexays in #5450
  • fix(bar): run the first module updates without a pipe write each by @Alexays in #5449
  • fix(cava): handle a missing audio server instead of crashing by @Alexays in #5448
  • fix(wireplumber): survive a missing or stopped pipewire by @Alexays in #5447
  • fix(bluetooth): drop connected devices that vanish with their controller by @Alexays in #5446
  • fix(wwan): survive a missing modemmanager and follow modem changes by @Alexays in #5445
  • fix: show mpd format-disconnected and reject an out-of-range image size by @Alexays in #5444
  • test(smoke): run most modules for real in the smoke workflow by @Alexays in #5443
  • fix: clamp interval values and make the hardware smoke tier run on ci by @Alexays in #5451
  • fix(idle_inhibitor): toggle once per signal across all bars by @gilbsgilbs in #5411
  • feat(tray): support wildcard keys in icons by @BlaiseRideout in #5419
  • chore: 0.16.0 by @Alexays in #5452

New Contributors

  • @Cprakhar made their first contribution in #4831
  • @hannesbraun made their first contribution in #4828
  • @esensar made their first contribution in #4847
  • @chrisvittal made their first contribution in #4858
  • @sliedes made their first contribution in #4854
  • @tobixen made their first contribution in #4852
  • @olliestone made their first contribution in #4863
  • @GG2R10 made their first contribution in #4874
  • @44vladimirov made their first contribution in #4849
  • @BlueManCZ made their first contribution in #4846
  • @BryceGust made their first contribution in #4895
  • @AlisonB319 made their first contribution in #4900
  • @sw1nn made their first contribution in #4905
  • @B2krobbery made their first contribution in #4924
  • @BryceBeagle made their first contribution in #4939
  • @jayshozie made their first contribution in #4938
  • @sjudin made their first contribution in #4937
  • @tsukasa-au made their first contribution in #4948
  • @sgruendel made their first contribution in #4943
  • @keepo-dot made their first contribution in #4960
  • @adrianlzt made their first contribution in #4964
  • @argentite made their first contribution in #4967
  • @pix-code made their first contribution in #4975
  • @Mrpaoo made their first contribution in #4982
  • @higorprado made their first contribution in #5013
  • @InetAddress made their first contribution in #5121
  • @martuscellifaria made their first contribution in #5123
  • @JuustKiwi made their first contribution in #5154
  • @muratyalcin-ce made their first contribution in #5076
  • @SaveTheRbtz made their first contribution in #5101
  • @typedrifter made their first contribution in #5058
  • @Neltharion01 made their first contribution in #5010
  • @jaschiu made their first contribution in #5112
  • @runxiyu made their first contribution in #5138
  • @awused made their first contribution in #5046
  • @Sayrus made their first contribution in #4742
  • @buzz made their first contribution in #5062
  • @JeremieRodon made their first contribution in #5028
  • @Lege19 made their first contribution in #5072
  • @Siriusuna made their first contribution in #5064
  • @The-Robin-Hood made their first contribution in #4753
  • @mil-ad made their first contribution in #5039
  • @EvansJahja made their first contribution in #5009
  • @vpcano made their first contribution in #3698
  • @cogwheel made their first contribution in #5088
  • @VlkrS made their first contribution in #4992
  • @Praczet made their first contribution in #5048
  • @Mervius made their first contribution in #4984
  • @85ae made their first contribution in #4957
  • @Mental-Vortex made their first contribution in #4672
  • @OlivierNeyret made their first contribution in #4649
  • @aaronred345 made their first contribution in #4692
  • @oqlatulesba3 made their first contribution in #5093
  • @EzequielColungaAcha made their first contribution in #5060
  • @JangXa made their first contribution in #5148
  • @fkobi made their first contribution in #4035
  • @ccjmne made their first contribution in #5139
  • @Gskartwii made their first contribution in #4524
  • @rmt made their first contribution in #5131
  • @shibjyoti555 made their first contribution in #4353
  • @hallvardnmbu made their first contribution in #4724
  • @finitemonkey made their first contribution in #5045
  • @iamcheyan made their first contribution in #5126
  • @Benji-clm made their first contribution in #4761
  • @oisanjaya made their first contribution in #4719
  • @jeevithakannan2 made their first contribution in #3994
  • @yui-915 made their first contribution in #5015
  • @lilly-lizard made their first contribution in #3436
  • @RaphaelKimmig made their first contribution in #4683
  • @Agnibha007 made their first contribution in #5034
  • @diego-velez made their first contribution in #4463
  • @maltherd made their first contribution in #4986
  • @v-dermichev made their first contribution in #4958
  • @ar-turek made their first contribution in #5073
  • @Skyfrei made their first contribution in #4950
  • @burbschat made their first contribution in #4193
  • @dimti made their first contribution in #4529
  • @xiyori made their first contribution in #4981
  • @yihangwu539-png made their first contribution in #5012
  • @Diax170 made their first contribution in #4977
  • @martinetd made their first contribution in #4530
  • @GlassyBridge made their first contribution in #4994
  • @mbroemme made their first contribution in #4532
  • @IVSOP made their first contribution in #5054
  • @7FM made their first contribution in #4908
  • @jaypikay made their first contribution in #4907
  • @ico277 made their first contribution in #3706
  • @casKd-dev made their first contribution in #3926
  • @nickjj made their first contribution in #4896
  • @mBornand made their first contribution in #4255
  • @AntGarSil made their first contribution in #4826
  • @szbmrk made their first contribution in #4762
  • @PandorasFox made their first contribution in #4084
  • @eonphi made their first contribution in #4861
  • @ALSchwalm made their first contribution in #4722
  • @akselaase made their first contribution in #4760
  • @Gazer made their first contribution in #4588
  • @yuukibarns made their first contribution in #5041
  • @theoratkin made their first contribution in #4334
  • @ErrorNoInternet made their first contribution in #4060
  • @stlkr made their first contribution in #5069
  • @nonamescm made their first contribution in #5017
  • @AntoineGS made their first contribution in #4712
  • @archion made their first contribution in #5110
  • @J0hannes101 made their first contribution in #5133
  • @yyyumeniku made their first contribution in #5032
  • @Habbie made their first contribution in #5033
  • @Grinchuelo made their first contribution in #5153
  • @thomascrha made their first contribution in #4537
  • @AckslD made their first contribution in #4685
  • @PickNicko13 made their first contribution in #4714
  • @whymusticode made their first contribution in #4694
  • @beyertom made their first contribution in #4940
  • @piwonskp made their first contribution in #4014
  • @torgiren made their first contribution in #3370
  • @NoakPalander made their first contribution in #3740
  • @rossmeier made their first contribution in #3573
  • @g-goessel made their first contribution in #4265
  • @AtomToast made their first contribution in #3311
  • @VPavliashvili made their first contribution in #3151
  • @LoricAndre made their first contribution in #4320
  • @0x000C0A71 made their first contribution in #3017
  • @JarKz made their first contribution in #3817
  • @Sduniii made their first contribution in #3818
  • @savely-krasovsky made their first contribution in #2157
  • @RyanGibb made their first contribution in #1358
  • @kabhijeet made their first contribution in #4396
  • @Esensats made their first contribution in #4536
  • @sewaustav made their first contribution in #4997
  • @awariac made their first contribution in #2891
  • @pajlada made their first contribution in #5187
  • @grishatop1 made their first contribution in #5201
  • @bjnobre made their first contribution in #5212
  • @10ne1 made their first contribution in #5219
  • @gitmpr made their first contribution in #5210
  • @toadjaune made their first contribution in #5230
  • @shivankgarg98 made their first contribution in #5249
  • @daher13 made their first contribution in #5248
  • @brian-brow made their first contribution in #5232
  • @rootatoskr made their first contribution in #5257
  • @monban made their first contribution in #5273
  • @nanomatters made their first contribution in #5238
  • @CristianMz21 made their first contribution in #5231
  • @wilkmaia made their first contribution in #5279
  • @teivng made their first contribution in #5262
  • @rmrfus made their first contribution in #5245
  • @zeerayne made their first contribution in #5263
  • @IlyasKhallouki made their first contribution in #5222
  • @kikadf made their first contribution in #5321
  • @wrisky-cmyk made their first contribution in #5327
  • @mtimaN made their first contribution in #5330
  • @tonrl made their first contribution in #5337
  • @sanyarnd made their first contribution in #5334
  • @Carltoffel made their first contribution in #5340
  • @kylin-liwn made their first contribution in #5332
  • @Tallis-Larsen made their first contribution in #5359
  • @penguin-sophist made their first contribution in #5342
  • @ihsandeniz made their first contribution in #5345
  • @sdegler made their first contribution in #5383
  • @vanshdev0101 made their first contribution in #5247
  • @ravi-arnan made their first contribution in #5272
  • @sndsh404 made their first contribution in #5309
  • @dmitry-j-mikhin made their first contribution in #5375
  • @turbodt made their first contribution in #5336
  • @CraftyMuscle made their first contribution in #5386
  • @serhatvs made their first contribution in #5385
  • @Nikshay1 made their first contribution in #5387
  • @iamkarlson made their first contribution in #5381
  • @tonybutt made their first contribution in #5324
  • @AntonyLittle made their first contribution in #5348
  • @infinityidk made their first contribution in #5355
  • @GeanJair made their first contribution in #5351
  • @ln-bodicherla made their first contribution in #5398
  • @mishalshanavas made their first contribution in #5427
  • @twstagg made their first contribution in #5431
  • @nikarh made their first contribution in #5435
  • @SsubezZ made their first contribution in #5434
  • @Fiwex made their first contribution in #5433
  • @miju04 made their first contribution in #5424
  • @gilbsgilbs made their first contribution in #5411
  • @BlaiseRideout made their first contribution in #5419

Full Changelog: 0.15.0...0.16.0

Don't miss a new Waybar release

NewReleases is sending notifications on new releases.