# GKrellM Changelog

## [2.5.1](https://git.srcbox.net/gkrellm/gkrellm/releases/tag/gkrellm-2.5.1) - 2026-02-22

### Added

- Solaris: Support build with Meson build rules

### Fixed

- Fix GKrellM freezing on exit on Windows when remote mail check (which uses a thread) ran at least once.
- Meson: Skip translations when the `nls` option is disabled
- Fix locale handling on Windows by always finding translations relative to the installation prefix.
- Meson: Add missing handling for custom localedir
- Fix X11 dependency handling in Meson build rules. The `x11` option is now always enabled on Unix platforms other than macOS. On macOS use `-Dx11=enabled` when GTK was built with X11 and `-Dx11=disabled` when it was built with Quartz.
- Linux: Fix user count on Linux distros that have disabled utmp writing but use systemd/logind. Only supported when building with Meson.
- Solaris: Rework disk enumeration to fix a buffer overflow with longer disk names. Also fix a possible file descriptor leak.
- Solaris: Fix network statistics (was broken since 2.4.0, tested on OpenIndiana)
- Solaris: Fix gkrellmd build (tested on OpenIndiana)
- DragonFlyBSD: Apply patch from DragonFlyBSD DeltaPorts to fix build, fix counting of logged-in users and extend hardware sensor support.
- FreeBSD: Drop unnneded setgid kmem during installation as well as in code
- Fix text alignment for power sensors. The text was not properly right-aligned like other floating point sensor values.

### Changed

- Meson: Merge the `ssl-backend` option into a combined `ssl` choice/feature. The special values `auto` and `none` try to behave like feature options (and they honor the `auto_features` option as well). For packagers it is recommended to pass either `-Dssl=openssl` or `-Dssl=gnutls` depending on the SSL library the package should depend on.
- The IMAP/POP3 mail check now verifies SSL/TLS server certificate. Users that connect to servers whose certificate is not trusted may need to add it to the trusted certificate list of their system now.
- The IMAP/POP3 mail check now shows error dialogs when connecting failed. Previously only (some) errors while fetching mail on the established connection were shown.

## [2.5.0](https://git.srcbox.net/gkrellm/gkrellm/releases/tag/gkrellm-2.5.0) - 2025-12-14

- Add Meson build rules covering FreeBSD, Linux, macOS as well as Windows so
  far. They are meant to replace the Make build rules in a future release.
- Add support for power sensors on Linux: power sensors can now be read from
  sysfs or libsensors
- Fix build on GLib < 2.68
- Do not install systemd service file in macOS, *BSD and Solaris install targets
- Fix `make install` building some but not all files. The install targets should
  now only copy files and create directories.
- Fix enabling i18n support in make rules by default. Ensure that
  `make enable_nls=0` disables i18n during build and installation.
- Fix handling of PREFIX and DESTDIR variables in build rules. DESTDIR is only
  used in install/uninstall targets now and does not show up in built files
  (i.e. binaries as well as generated configuration files) anymore. This also
  updates the INSTALL file regarding use of make variables for adjusting
  install locations.
- `make install` now uses the command in `INSTALL_DATA` to install data files,
  `INSTALL_PROGRAM` to install executables and `INSTALL_DIRECTORY` to create
  installation directories. The `install-strip` target now appends the `-s`
  argument to `INSTALL_PROGRAM` to strip executables during installation and
  does not use `STRIP` as a variable anymore because that may conflict with
  cross-compile setups.
- Remove non-working make target for static builds of gkrellm and gkrellmd,
  on Linux glibc requires dynamic linking for a long time.
- Apply patches from FreeBSD gkrellm2 port & clean up freebsd make targets
- Add pkg-config file for gkrellmd plugins which only depends on Glib instead
  of Gtk+
- Remove non-working gtop backend which is not used on any of the currently
  supported operating systems
- Manual page sections of gkrellm/gkrellmd are now configurable via the
  MANSECTION and SMANSECTION make variables to allow packagers to install
  gkrellmd as a system binary and switch the section from 1 to 8 accordingly.
  In the future this behavior will likely become the default.
- Add support for `optimize=0` make variable value to disable the default
  optimization flags (helpful for packagers to provide a different set of flags).
- Update Brazilian Portuguese translation (patch by Phantom X,
  https://git.srcbox.net/gkrellm/gkrellm/pulls/63)
- Fix shared memory value on Linux >= 2.6 always being zero
- Build with C99 standard by default so newer compilers that default to C23 do
  not run into build issues.
- Automatically use MiB/GiB/TiB units for displaying memory values instead of
  fixed MiB units.
- Remove outdated gkrellm.spec related build instructions for building RPM packages.
  Linux distributions based on RPM have their own variants.
- Windows 7 or newer is now required by Windows specific code as well
- FreeBSD 10 or newer is now required. Support for building on older releases
  has been removed.
- Linux 3.0 or newer is now required.
- Removed X11-only crash handling and related state information about currently
  active plugin. Logging and a system-wide crash handling most likely will do
  a much better job these days.
- Public header files are now safe to be included from C++ to make it easier to
  write plugins in C++.
- Add export macro for all public gkrellm/gkrellmd API and redo Windows plugin
  support. On Windows there is now a working import library for the executable.
  The previous approach with a static library and manually forwarded function
  pointers has been removed, thereby requiring a rebuild of existing plugins.
- Remove conditional code for libsensors 3 which (according to lm-sensors.git
  history) is from 2007 or even earlier.
- Remove old KVM-based macOS/Darwin code (used on macOS < 10.4) and update make
  targets. macOS users and packagers should build use either of these targets:
  - "make darwin" & "make install_darwin" to build with X11 support
  - "make macos" & "make install_macos" to build without X11 support (note that
    Gtk 2.x without X11 has quite some rendering issues)

## [2.4.0](https://git.srcbox.net/gkrellm/gkrellm/releases/tag/gkrellm-2.4.0) - 2025-01-19

- Use a sans-serif font and slightly bigger font sizes by default
- Add native GnuTLS support mail check via SSL/TLS and require GnuTLS 3.3 or newer (#29)
- Add and install a systemd service unit for gkrellmd
- Install gkrellmd configuration file in standard `make install` target
- Require and always use `getaddrinfo()` function. In a previous release this
  was already done on Linux. Now it also applies to other platforms like BSD,
  macOS, Solaris and Windows.
- Enable gkrellmd timeouts by default to make gkrellm clients automatically
  reconnect after a connection loss
- Fix syslog facility/priority code in gkrellmd to be POSIX compliant so it
  is more portable to Unix platforms other than Linux
- Require OpenSSL 1.1 or newer for mail check via SSL/TLS.
- Fix translations and add menu items to main context menu which were previously
  only available as debug options
- Replace MD5 code with existing functionality from GLib
- Add and install XDG desktop file as well as icons on Unix/Linux systems.
  This uses the GKrellM icon used on Windows only so far because the old icon
  is only available in a very small size that is not suitable for modern
  screen sizes. The icon is also used as the default window icon in taskbars
  and launchers.
- Use locale-dependent date and time formatting by default
- Add Windows 10, 11, Server 2016/2019/2022 OS version detection
- Do not strip executables during installation by default anymore. Use
  `make install-strip` if you prefer the old behavior.
- Fix syntax errors in manual pages (patch by Sandro Tosi)
- Fix GTK and GLib deprecation warnings and require GTK >= 2.24
- Fix most compiler warnings when building with GCC 13 and Clang 18
- Center each line in multiline clock/calendar decals
- Fix IPv6 address matching in gkrellmd client access list
- Update French translation (patch by Jerome UZEL)
- Fix stack corruption in Solaris kstat code (patch by Adam Stylinsk)

## [2.3.11](https://git.srcbox.net/gkrellm/gkrellm/releases/tag/gkrellm-2.3.11) - 2019-07-25

- Fix krell scale for medium sized filesystems (based on patch by Peter Hymann)
- Support OpenSSL >= 1.1 for mail check over SSL/TLS
- Sort Linux disk devices alphabetically (patch by Petr Gajdos)
- Avoid corruption of chart labels (based on patch by Stefan Seyfried)
- Fix possible buffer-overflow in disk size formatting

## [2.3.10](https://git.srcbox.net/gkrellm/gkrellm/releases/tag/gkrellm-2.3.10) - 2016-10-23

- Fix Linux nvme block devices
- Do not reject disks because they are not found in `/proc/devices` (the nvme
  disks may not be there) so new default is to accept anything in
  `/proc/diskstats` regardless if major number is known or in devices file.

## [2.3.9](https://git.srcbox.net/gkrellm/gkrellm/releases/tag/gkrellm-2.3.9) - 2016-10-11

- Fix mmc block devices (regression in 2.3.8)
- Allow Pango markup for all configurable panel labels

## [2.3.8](https://git.srcbox.net/gkrellm/gkrellm/releases/tag/gkrellm-2.3.8) - 2016-09-07

- Add option to ignore network interfaces that match a regular expression
  pattern
- Fix composite disk graph double counting
- Handle dynamic disk major numbers for `dm` and `mdp` virtual devices and don't
  add their data to the composite disk
- Disk panel labels are now configurable. This is mostly useful for user
  labeling of virtual disks
- Use wrap bytes instead of discarding data when cumulative chart data overflows
- Changed keyboard shortcut for theme changes to `Shift+Page Up` and `Shift+Page Down`
  (patch by Pavel Reznicek)
- Indentation cleanup bugfix for Linux kernel version detection
  (patch by Ville Skytta)

## [2.3.7](https://git.srcbox.net/gkrellm/gkrellm/releases/tag/gkrellm-2.3.7) - 2016-06-03

- Use `gdk_pixbuf_new_from_data()` instead of deprecated
  `gdk_pixbuf_new_from_inline()`. Inline `alert_inline[]` needed to be --raw.
- Fix sending error message back to clients that were refused by gkrellmd and
  add dialog to gkrellm client to display the error message
- Fix possible chart rendering problem for single pixels
- Fix compilation without OpenSSL and GnuTLS (patch by Felix Janda)
- Always use `getaddrinfo()` on Linux to fix IPv6 support on C libraries other
  than glibc (for example musl libc)
- Fix handling of `mmcblkN` SD disk partition numbers

## [2.3.6-RC2](https://git.srcbox.net/gkrellm/gkrellm/releases/tag/gkrellm-2.3.6-rc2) - 2015-12-23

- Each real CPU chart may be individually enabled instead of as a group so CPU
  charts may be split into multiple instances. For systems with large numbers
  of CPUs.
- Make drawing CPU panel labels optional to allow saving vertical space.
- Patch from Ville Skytta: fix some `netbsd.c` and `winops-win32.c` issues flagged by cppcheck.
- Patch from Neil Booth: Add multiple CPU capability to CPU monitor for
  Dragonfly. Acquired `dragonfly.c` from web so could apply patch. I have no clue
  why I never had a `dragonfly.c`.
- Patch from Jindrich Makovicka: Update multiple GKrellM files to compile with
  `-DGTK_DISABLE_DEPRECATED -DGSEAL_ENABLE` for GTK3 compatibility. Replaces
  GtkItemFactory and GtkTooltips.
- Add nvidia-smi interface to linux.c for getting nvidia GPU temperatures.
- Translation updates
  - ru.po from Roman Savochenko
  - uk.po new translation from Roman Savochenko
  - pt.po new translation from Ze based on pt_BR.po
  - fr.po from Jerome UZEL
- Bugfixes
  - fix memory leaks: add `g_thread_unref()` for all GThread pointers returned
    from `g_thread_new()` calls.
  - Flag config as modified when changing a charts Resolution per Grid and bump
    max grid resolution to 500000000.
  - Store lockfiles under `/var/lock/gkrellm-UID` directories to make lockfiles
    work for multiple users.
- Only link against and initialize Libgcrypt when building with GnuTLS < 2.12.
  This allows using GKrellM with GnuTLS versions built against Nettle instead
  of Libgcrypt.
- Patch from Gerard Neil: Skip autofs mounts in free disk space polling
- Patch from Gerard Neil: Handle cifs as remote filesystem to use longer
  `nfs-timeout` polling interval
- Patch from Alexandre Rostovtsev: Explicitly link against gmodule-2.0
- Add support for GPU-Z sensor information on Windows
- Increase minimum required GLib version to 2.32, some parts of gkrellm use
  newer GLib API
- Drop remaining GLib 1.x compatibility from gkrellmd
- Patch from Ville Skyttä: Allow binding to a listen address that doesn't exist
  yet (gkrellmd)
- Patch from Pierre Neyron: Option to enable/disable new network interfaces
  by default

## Older Releases

See [ChangeLog.OLD](Changelog.OLD)
