2024-08-19 i3status 2.15

 • man: document --run-once flag
 • meson: replace bashisms
 • update to clang-format-12
 • add missing newlines to some error messages
 • make maybe_escape_markup() memory-safe
 • fix segfault when read_file lacks a path
 • ethernet: printer faster speeds in Gbit/s, e.g. 2.5 Gbit/s
 • wireless: correctly display bitrates > 2147483647 bps
 • ipv6: add support for %iface placeholder
 • battery: add status idle (e.g. configured to stop charging)
 • battery: increase maximum string size to make space for markup
 • *BSD: fix build, use statvfs
 • *BSD: use f_bsize for disk_info
 • OpenBSD: add CPU spin support
 • OpenBSD: properly print wireless signal strength

2021-11-09 i3status 2.14

 • switch to meson build system
 • battery: OpenBSD: If acpibat watts value is not available, try current
 • make pulseaudio an optional dependency
 • print_cpu_usage: use buffered file API
 • fix memory leak in slurp()
 • NetBSD: native audio support
 • wireless: Linux: update %signal and %quality based on station info
 • memory: introduce unit and decimals options
 • battery: introduce format_percentage option
 • memory: fix overflow on 32-bit systems
 • use format_placeholder
 • wireless: introduce format_bitrate, format_noise and format_signal
 • cpu: fix out of bounds read after invalid %cpu conversion
 • file system: use f_frsize for correct block size
 • wireless: FreeBSD: support connection bitrate
 • volume: fix memory leak
 • print_file_contents: resolve tilde
 • add build option to disable manual pages
 • pulseaudio: use port name instead of sink name
 • battery: add support for POWER_SUPPLY_TIME_TO_EMPTY (e.g. pinebook pro)
 • tztime: allow selective pango markup
 • wireless: fix memory corruption

2019-06-30 i3status 2.13

 • add memory module
 • add read_file module
 • drop CAP_NET_ADMIN (not needed on Linux ≥ 2.6.37)
 • switch to autotools 
 • battery: hide seconds by default
 • wireless: add format_quality
 • doc: clarify min_width not being supported with dzen2/xmobar
 • battery: read multiple batteries on DragonFlyBSD
 • make: don’t use pulseaudio on DragonFlyBSD
 • wireless: detect interface type on DragonFlyBSD
 • cpu usage: fix: correctly print usage for cpu 10
 • cpu usage: fix: correctly print for invalid %cpu placeholder
 • cpu usage: support non-consecutive CPUs
 • time: add only_when_tz_different option
 • ethernet: add %interface
 • ethernet: fix speed display for 100 Gbit/s cards
 • battery: handle POWER_SUPPLY_STATUS=Not charging
 • volume: provide more natural volume percentage with ALSA
 • volume: fix ALSA capture device monitoring
 • volume: implement %devicename for PulseAudio and ALSA
 • config: re-arrange disk after network interfaces
 • fix: include sys/socket.h on macOS
 • fix: strip network interface labels
 • fix glob(3) error handling
 • various testsuite improvements
 • switch to clang-format-3.8
 
2018-05-11 i3status 2.12

 • fix NULL value on OpenBSD when there is no acpitz0
 • show IP address when address has a label
 • man: explicitly use format_up/format_down in ethernet, wireless conf
 • man: remove SLOC comment
 • treat zero battery capacity as "not available"
 • add IPv6 address when IPv4 isn't available
 • call tzset at each time print to pick up time zone changes
 • doc: fixed minor typos
 • be more cautious about handling invalid battery measurements.
 • Makefile: make PKG_CONFIG overridable
 • fix CPU unit tests
 • use local timezone for battery %emptytime
 • fix memory leak/use BEGINS_WITH macro
 • _first_: add check for virtual ethernet devices
 • add battery capacity parsing
 • multiple CPU support for cpu_usage
 • remove useless checks (we use char, not unsigned char) to fix compilation warnings
 • disk: sanitize trailing slashes
 • plug an fd leak in the OpenBSD-specific code for
 • suppress printing :00 seconds of remaining battery lifetime, as apm(4)'s
   estimate only has a granularity of minutes.
 • fix the deciKelvin to Celsius conversion on FreeBSD
 • make first_eth_interface() work on OpenBSD
 • include sys/select.h on OpenBSD

2017-01-21 i3status 2.11

 • re-add forgotten wakeup call from SIGUSR1 handler
 • disk_info: bugfix: check format_not_mounted is not NULL before using it
 • revert back to using nanosleep
 • man: give more descriptive symbols to battery format
 • battery: removes the 'remaining' time when the battery is full
 • add separator and separator_block_width as universal module options
 • man: fix link to contrib
 • cpu_temperature: add glob check
 • battery: add status_unk
 • reconnect to PluseAudio when connection is lost
 • wireless: add ifdef to compile on macOS
 • order default configuration paths the same as in i3
 • add version files for release tarball
 • man: make tztime example config match the context
 • cpu_usage: add color thresholds
 • battery: support multiple batteries
 • disk: use empty string for not mounted disks
 • default config: remove DHCP, VPN
 • wireless: fix FTBFS on hurd and kFreeBSD
 • parse uevent file to detect network device type
 • allow pulse device to be specified by name
 • battery: find batteries using glob
 • tztime: support locales
 • wireless: use blank padding for quality
 • add unit tests
 • fix compilation with -fno-common

2016-01-01 i3status 2.10

 • man: fix typo in battery example
 • Pass the "instance" JSON property key for tztime blocks
 • Fix build (and build warnings) on FreeBSD
 • Fix build on OpenBSD
 • path_exists, run_watch: add format_down
 • volume: add PulseAudio support. This significantly reduces battery
   consumption on systems that use PulseAudio, which is the default on any
   modern Linux desktop.
 • wireless/OpenBSD: use the maximum rssi, not the scaled percentage for the
   signal level.
 • make: Add support for differing PREFIX and MANPREFIX.
 • battery: make output HH:MM across all platforms.
 • battery: clamp the percentage at 100% when last_full_capacity is enabled.
 • Use format_not_mounted if the directory for a disk_info block does not
   exist.
 • disk_info/OS X: Fix build.
 • volume/OpenBSD: use SndIO.
 • eth, wireless: Use "color_degraded" when interface has no IP.
 • eth, wireless/FreeBSD: Fix for recent FreeBSD versions.
 • wireless/Linux: switch from libiw to libnl. This allows you to run i3status
   on kernels which don’t have the wext compatibility module enabled.
 • battery/FreeBSD: properly detect charging status
 • eth: first_eth_interface: ignore MAC addresses, look for IPv4/IPv6 addresses
 • Implement support for Pango markup.
 • format detection: recognise swaybar

2015-03-22 i3status 2.9

 • meta: i3status is now on GitHub and uses clang-format
 • allow customization of the module separator
 • add “align” and “min_width” options for each module
 • fix CFLAGS and LDFLAGS for DragonFly and FreeBSD
 • add contrib/net-speed, a more light-weight reimplementation of
   contrib/measure-net-speed.bash
 • battery: add hide_seconds option
 • battery: fix for systems without POWER_SUPPLY_VOLTAGE_NOW
 • battery: for %percentage, drop leading 0 for values < 10
 • battery: add NetBSD support
 • battery: use absolute values for (dis)charging rates
 • battery: introduce status_{chr,bat,full}
 • cpu_temperature: fix displaying multiple sensors
 • cpu_temperature: fix NetBSD support
 • cpu_temperature: fix DragonFly support
 • disk: introduce threshold_type and low_threshold
 • disk: add format_not_mounted for unmounted paths
 • ethernet, wireless: support special interface name _first_
 • run_watch: check all matching pid files until first valid one
 • volume: fix wrong color tags with xmobar
 • wireless: support %frequency (2.4 vs. 5 GHz)

2014-01-05 i3status 2.8

 • Fix build on GNU/Hurd
 • Add format_down for battery if no battery is available
 • Use degraded color in case volume is muted with OSS
 • Support mixer_idx with OSS
 • Enable colored output for battery on FreeBSD
 • print_volume: don’t return, complete the buffer first
 • Support colored output for CPU temperature on FreeBSD
 • manpage: mention i3bar in the description
 • manpage: be more explicit about the path option
 • battery: use path as i3bar JSON “instance”
 • print_volume(linux): Open a new mixer every time
 • Implement term output format
 • signal handler: set flag because directly calling fprintf() is unsafe
 • Makefile: use .SILENT and support V=1 for verbose builds
 • load: allow max_threshold to be a float
 • manpage: Add example path for CPU temperature
 • Fix build on NetBSD
 • Implement cpu usage, ethernet status, cpu temperature on NetBSD
 • fix slurp(), it needs to read size-1 for the trailing NUL
 • format detection: simplify code, handle "sh" processes in the hierarchy
 • default config: show %avail disk space instead of %free
 • Added different format string for volume in case it is muted
 • manpage: document format_muted
 • add support for path_exists directive
 • disk: Distinguish between IEC, SI and custom prefixes

2013-02-27 i3status 2.7

 • Various battery fixes for OpenBSD
 • Implement %speed for ethernet on OpenBSD
 • Implement %essid and %signal for wireless on OpenBSD
 • Skip a day in the Discordian calendar when St. Tib's Day has passed
 • colors: Handle down wireless interfaces just like ethernet interfaces
 • Use acpitz(4) instead of cpu(4) for temperature on OpenBSD
 • temperature: introduce max_threshold
 • temperature: allow for abitrary sensors to be selected with 'path' on OpenBSD
 • battery: colorize output even without discharge rate
 • ddate: Reduce the season day to 0-9 to properly print ordinal suffixes
 • add good, degraded and bad colors per module
 • config: introduce an utf-8 character so that editors are forced to use utf-8
 • ddate: Teen ordinal numbers always use a 'th' suffix.
 • DragonFlyBSD support added
 • make SIGUSR1 do nothing, so that killall -USR1 i3status will force an update
 • changing volume color from bad to degraded if muted
 • make refreshs align with minutes
 • wifi: properly display ad-hoc networks
 • Bugfix: output auto detect: properly detect ambiguous situations
 • Add tztime module to support multiple different timezones
 • battery: add option to show capacity without decimals
 • Add colorized output for load avg
 • ipv6: properly handle colors for output_format == xmobar
 • contrib: fix premature insetion of status message into JSON

2012-10-03 i3status 2.6

 • Error handling: Properly output JSON errors in the battery module
 • Colorize battery output if remaining time/percentage below threshold
 • Colorize volume in red if muted
 • Include a Perl and Python example wrapper script for i3status’s JSON output
 • Avoid division by zero when calculating CPU usage
 • Add consumption to battery info
 • Use correct units for battery calculations
 • Add percentage values for disk info
 • Save the DNS lookup for k.root-servers.net in the ipv6 module

2012-05-11 i3status 2.5.1

 • Handle %d with non-default CPU temperature path
 • Improve error message when the cpu temperature cannot be read
 • Remove cpu_temperature from the default config
 • Error handling: Never output null as full_text (JSON), prefix messages with i3status

2012-05-02 i3status 2.5

 • implement the i3bar JSON protocol
 • Fix configuration paths in error message
 • manpage: add a "format" example for run_watch
 • manpage: add a section explaining why we don’t want RAM usage etc.
 • manpage: add "exit 1" to example shell script.
 • manpage: document %emptytime to the battery part
 • various patches for OpenBSD

2011-12-27 i3status 2.4

 • Support wifi, cpu usage, volume, disk usage on FreeBSD
 • Don’t exit, but display an error when CPU temperature/usage/load is not
   available
 • manpage: load format is %1min %5min %15min
 • Don’t use a default order, so that config files can use += everywhere
 • Interpret configfiles case-insensitive
 • battery: implement path option for batteries with non-standard paths

2011-07-21 i3status 2.3

 • config search order is now ~/.i3status.conf, ~/.config/i3status/config,
   /etc/i3status/config, then /etc/xdg/i3status/config
 • battery: use POWER_NOW if CURRENT_NOW is not available (linux >= 2.6.36)
 • use kill(0, pid) instead of /proc to check if a process is alive
 • cache DNS query results also if there is no IPv6 connectivity
 • implement the 'path' option for cpu_temperature
 • add cpu_usage module
 • automatically detect the output format unless configured specifically
 • Bugfix: get time at the beginning of the loop
 • Bugfix: respect locale settings (for %c in date format)
 • debian: use [linux-any] in dependencies (Closes: #634491)

2010-09-22 i3status 2.2

 • Implement a discordian date module (like ddate(1))
 • Implement ALSA volume support
 • disk: implement %avail (different from %free with regard to the reserved
   space of your filesystem)
 • wireless: display quality relative to the wireless maximum quality.
 • wireless: display connection speed (bitrate)
 • wireless: custom colors for link quality
 • Bugfix: Treat an interface as 'down' when it cannot be found in
   /proc/net/wireless
 • Bugfix: Correctly check for interface up/down status

2010-04-10 i3status 2.1

 • battery: implement %emptytime, the time of day when your battery is empty
 • ipv6: cache DNS query lookups (for finding the K root server)
 • disk: also round when printing TB
 • wireless: display no IP instead of (null)
 • instead of a relative sleep(1), sleep until the full second
 • colorize ethernet output
 • use cap_net_admin instead of running i3status as root for getting
   ethernet link speed
 • ipv6: don't require a title for config option
 • ipv6: provide format strings for ipv6 up and ipv6 down

2009-10-27 i3status 2.0

 • add support for disk info (free/used/ins)
 • add support for displaying the ESSID of the wireless interface
 • add support for getting the public IPv6 address of the system
 • all "modules" now support format strings
 • switch to libconfuse for parsing the config file
 • merge support for FreeBSD for many "modules"
 • drop support for wmii, add support for xmobar

2009-06-21 i3status 1.2

 • Handle SIGPIPE to avoid zombie processes

2009-06-17 i3status 1.1

 • Implement getting temperature from thermal zones (Thanks atsutane)
