yambar/CHANGELOG.md
Daniel Eklöf f2d25c8341
script: fix buffer resize bug
If the amount of data coming in is more than we can hold in our
buffer, we resized the buffer by doubling its size. However, there
were two(!) issues here:

* If this was the first resize, the buffer size was set to 1024. This
  may not be enough (i.e. there may be more than 1024 bytes to process).
* In all other cases, the buffer size was doubled. However, there is
  still no guarantee the buffer is large enough.

Fix by looping until the buffer *is* large enough.
2024-02-05 12:52:40 +01:00

17 KiB
Raw Blame History

Changelog

Unreleased

Added

  • battery: current smoothing, for improved discharge estimates.
  • battery: scale option, for batteries that report 'charge' at a different scale than 'current'.
  • network: new quality tag (Wi-Fi only).
  • Read alternative config from pipes and FIFOs (e.g. --config /dev/stdin) (#340).

Changed

  • log-level: default to warning

Deprecated

Removed

Fixed

  • Compiler error fmt may be used uninitialized (#311).
  • map: conditions failing to match when they contain multiple, quoted tag values (#302).
  • Crash when hidden by an opaque window.
  • Bar not resizing itself when the screen resolution is changed (#330).
  • i3/sway: incorrect empty/title state of workspaces (#343).
  • mem: state updated on each bar redraw (#352).
  • script: buffer overflow when reading large amounts of data.

Security

Contributors

1.10.0

Added

  • Field width tag format option (#246)
  • river: support for layout events.
  • dwl: support for specifying name of tags (#256)
  • i3/sway: extend option sort; use native to sort numbered workspaces only.
  • modules/dwl: handle the appid status (#284)
  • battery: also show estimation for time to full ([#303][303]).
  • on-click: tilde expansion (#307)
  • script: tilde expansion of path (#307).

Changed

  • disk-io: interval renamed to poll-interval
  • mem: interval renamed to poll-interval
  • battery/network/script: poll-interval unit changed from seconds to milliseconds (#244).
  • all modules: minimum poll interval changed from 500ms to 250ms.
  • network: do not use IPv6 link-local (#281)

Fixed

  • Build failures for certain combinations of enabled and disabled plugins (#239).
  • Documentation for the cpu module; interval has been renamed to poll-interval (#241).
  • battery: module was not thread safe.
  • dwl module reporting only the last part of the title (#251)
  • i3/sway: regression; persistent workspaces shown twice (#253).
  • pipewire: use roundf() instead of ceilf() for more accuracy (#262)
  • Crash when a yaml anchor has a value that already exists in the target yaml node (#286).
  • battery: Fix time conversion in battery estimation ([#303][303]).
  • battery: poll timeout being reset when receiving irrelevant udev notification (leading to battery status never updating, in worst case) (#305).

Contributors

  • Leonardo Gibrowski Faé (Horus)
  • Armin Fisslthaler
  • Ben Brown
  • David Bimmler
  • Leonardo Hernández Hernández
  • Ogromny
  • Oleg Hahm
  • Stanislav Ochotnický
  • tiosgz
  • Yutaro Ohno

1.9.0

Added

  • Support for specifying number of decimals when printing a float tag (#200).
  • Support for custom font fallbacks (#153).
  • overline: new decoration (#153).
  • i3/sway: boolean option strip-workspace-numbers.
  • font-shaping: new inheritable configuration option, allowing you to configure whether strings should be shaped using HarfBuzz, or not (#159).
  • river: support for the new “mode” event present in version 3 of the river status manager protocol, in the form of a new tag, ”mode”, in the title particle.
  • network: request link stats and expose under tags dl-speed and ul-speed when poll-interval is set.
  • new module: disk-io.
  • new module: pulse (#223).
  • alsa: dB tag (#202).
  • mpd: file tag (#219).
  • pipewire: add a new module for pipewire (#224)
  • on-click: support next/previous mouse buttons (#228).
  • dwl: add a new module for DWL (#218)
  • sway: support for workspace rename and move events (#216).

Changed

  • All modules are now compile-time optional.

  • Minimum required meson version is now 0.59.

  • Float tags are now treated as floats instead of integers when formatted with the kb/kib/mb/mib/gb/gib string particle formatters.

  • network: tx-bitrate and rx-bitrate are now in bits/s instead of Mb/s. Use the mb string formatter to render these tags as before (e.g. string: {text: "{tx-bitrate:mb}"}).

  • i3: newly created, and unfocused workspaces are now considered non-empty (#191)

  • alsa: use dB instead of raw volume values, if possible, when calculating the percent tag (#202)

  • cpu: content particle is now a template instantiated once for each core, and once for the total CPU usage. See yambar-modules-cpu(5) for more information (#207).

  • BREAKING CHANGE: overhaul of the map particle. Instead of specifying a tag and then an array of values, you must now simply use an array of conditions, that consist of:

    <tag> <operation> <value>

    where <operation> is one of:

    == != < <= > >=

    Note that boolean tags must be used as is:

    online

    ~online # use '~' to match for their falsehood

    As an example, if you previously had something like:

    map:
      tag: State
      values:
        unrecognized:
          ...
    

    You would now write it as:

    map:
      conditions:
        State == unrecognized:
          ...
    

    Note that if <value> contains any non-alphanumerical characters, it must be surrounded by "":

    State == "very confused!!!"

    Finally, you can mix and match conditions using the boolean operators && and ||:

    <condition1> && <condition2>
    <condition1> && (<condition2> || <condition3>) # parenthesis work
    ~(<condition1> && <condition2>) # '~' can be applied to any condition
    

    For a more thorough explanation, see the updated map section in the man page for yambar-particles(#137, #175 and #).

Fixed

  • i3: fixed “missing workspace indicator” (err: modules/i3.c:94: workspace reply/event without 'name' and/or 'output', and/or 'focus' properties).
  • Slow/laggy behavior when quickly spawning many on-click handlers, e.g. when handling mouse wheel events (#169).
  • cpu: dont error out on systems where SMT has been disabled (#172).
  • examples/dwl-tags: updated parsing of output name (#178).
  • sway-xkb: dont crash when Sway sends an ”added” event for a device yambar is already tracking (#177).
  • Crash when a particle is “too wide”, and tries to render outside the bar (#198).
  • string: crash when failing to convert string to UTF-32.
  • script: only first transaction processed when receiving multiple transactions in a single batch (#221).
  • network: missing SSID (recent kernels, or possibly wireless drivers, no longer provide the SSID in the NL80211_CMD_NEW_STATION response) (#226).
  • sway-xkb: crash when compositor presents multiple inputs with identical IDs (#229).

Contributors

  • Baptiste Daroussin
  • Horus
  • Johannes
  • Leonardo Gibrowski Faé
  • Leonardo Neumann
  • Midgard
  • Ogromny
  • Peter Rice
  • Timur Celik
  • Willem van de Krol
  • hiog

1.8.0

Added

  • ramp: can now have custom min and max values (#103).
  • border: new decoration.
  • i3/sway: new boolean tag: empty (#139).
  • mem: a module handling system memory monitoring
  • cpu: a module offering cpu usage monitoring
  • removables: support for audio CDs (#146).
  • removables: new boolean tag: audio.

Changed

  • fcft >= 3.0 is now required.
  • Made libmpdclient an optional dependency
  • battery: unknown battery states are now mapped to unknown, instead of discharging.
  • Wayland: the bar no longer exits when the monitor is disabled/unplugged (#106).

Fixed

  • left-margin and right-margin from being rejected as invalid options.
  • Crash when udev_monitor_receive_device() returned NULL. This affected the “backlight”, “battery” and “removables” modules (#109).
  • foreign-toplevel: update bar when a top-level is closed.
  • Bar not being mapped on an output before at least one module has “refreshed” it (#116).
  • network: failure to retrieve wireless attributes (SSID, RX/TX bitrate, signal strength etc).
  • Integer options that were supposed to be >= 0 were incorrectly allowed, leading to various bad things; including yambar crashing, or worse, the compositor crashing (#129).
  • kib/kb, mib/mb and gib/gb formatters were inverted.

Contributors

  • sochotnicky
  • Alexandre Acebedo
  • anb
  • Baptiste Daroussin
  • Catterwocky
  • horus645
  • Jan Beich
  • mz
  • natemaia
  • nogerine
  • Soc Virnyl S. Estela
  • Vincent Fischer

1.7.0

Added

  • i3: persistent attribute, allowing persistent workspaces (#72).
  • bar: border.{left,right,top,bottom}-width, allowing the width of each side of the border to be configured individually. border.width is now a short-hand for setting all four borders to the same value (#77).
  • bar: layer: top|bottom, allowing the layer which the bar is rendered on to be changed. Wayland only - ignored on X11.
  • river: all-monitors: false|true.
  • -d,--log-level=info|warning|error|none command line option (#84).
  • river: support for the river-status protocol, version 2 (urgent views).
  • online tag to the alsa module.
  • alsa: volume and muted options, allowing you to configure which channels to use as source for the volume level and muted state.
  • foreign-toplevel: Wayland module that provides information about currently opened windows.
  • alsa: support for capture devices.
  • network: ssid, signal, rx-bitrate and rx-bitrate tags.
  • network: poll-interval option (for the new signal and *-bitrate tags).
  • tags: percentage tag formatter, for range tags: {tag_name:%}.
  • tags: kb/mb/gb, and kib/mib/gib tag formatters.
  • clock: add a config option to show UTC time.

Changed

  • bar: do not add spacing around empty (zero-width) modules.
  • alsa: do not error out if we fail to connect to the ALSA device, or if we get disconnected. Instead, keep retrying until we succeed (#86).

Fixed

  • yambar --backend=wayland always erroring out with ”yambar was compiled without the Wayland backend”.
  • Regression: {where} tag not being expanded in progress-bar on-click handlers.
  • alsa module causing yambar to use 100% CPU if the ALSA device is disconnected (#61).

Contributors

1.6.2

Added

  • Text shaping support.
  • Support for middle and right mouse buttons, mouse wheel and trackpad scrolling (#39).
  • script: polling mode. See the new poll-interval option (#67).

Changed

  • doc: split up yambar-modules(5) into multiple man pages, one for each module (#15).
  • fcft >= 2.4.0 is now required.
  • sway-xkb: non-keyboard inputs are now ignored (#51).
  • battery: dont terminate (causing last status to “freeze”) when failing to update; retry again later (#44).
  • battery: differentiate "Not Charging" and "Discharging" in state tag of battery module. (#57).
  • string: use HORIZONTAL ELLIPSIS instead of three regular periods when truncating a string (#73).

Fixed

  • Crash when merging non-dictionary anchors in the YAML configuration (#32).
  • Crash in the ramp particle when the tags value was out-of-bounds (#45).
  • Crash when a string particle contained {} (#48).
  • script module rejecting range tag end values containing the digit 9 (#60).

Contributors

1.6.1

Changed

  • i3: workspaces with numerical names are sorted separately from non-numerically named workspaces (#30).

Fixed

  • mpd: elapsed tag not working (regression, introduced in 1.6.0).
  • Wrong background color for (semi-) transparent backgrounds.
  • battery: stats sometimes getting stuck at 0, or impossibly large values (#25).

1.6.0

Added

  • alsa: percent tag. This is an integer tag that represents the current volume as a percentage value (#10).
  • river: added documentation (#9).
  • script: new module, adds support for custom user scripts (#11).
  • mpd: volume tag. This is a range tag that represents MPD's current volume in percentage (0-100)
  • i3: sort configuration option, that controls how the workspace list is sorted. Can be set to one of none, ascending or descending. Default is none (#17).
  • i3: mode tag: the name of the currently active mode

Fixed

  • YAML parsing error messages being replaced with a generic “unknown error”.
  • Memory leak when a YAML parsing error was encountered.
  • clock: update every second when necessary (#12).
  • mpd: fix compilation with clang (#16).
  • Crash when the alpha component in a color value was 0.
  • XCB: Fallback to non-primary monitor when the primary monitor is disconnected (#20)

Contributors

1.5.0

Added

  • battery: support for drivers that use charge_* (instead of energy_*) sys files.
  • removables: SD card support.
  • removables: new ignore property.
  • Wayland: multi-seat support.
  • Experimental: 'river': new module for the river Wayland compositor.

Changed

  • Requires fcft-2.2.x.
  • battery: a poll value of 0 disables polling.

Fixed

  • mpd: check of return value from thrd_create.
  • battery: handle 'manufacturer' and 'model_name' not being present.
  • Wayland: handle runtime scaling changes.