icewm -- history of user-visible changes.  2026-01-01

Release icewm-4.0.0 released 2026-01-01
---------------------------------------

git shortlog --no-merges -e -n -w80,6,8 3.9.0...HEAD

Bert Gijsbers <gijsbers@science.uva.nl> (74):
      3.9.0
      Drop XPM from rebuild.sh.
      Report failure on /proc/net/dev at most once.
      Resolve warning on USHRT_MAX for Android.
      Decode UTF-8 codepoints and recognize combining_marks.
      When truncating a title in icesh, ignore combining_marks.
      Limit window titles to 128 bytes.
      Let the Alt+Tab quick switch handle very large numbers of application
        windows.
      Navigate the Alt+Tab ten times faster with PageUp/PageDown. Support
        navigating the quick switch with keypad keys.
      The third button on Alt+Tab opens the system menu for that frame.
      Also support the keypad keys in the WindowList window.
      Add missing include.
      Update new quick switch features.
      When a clock led pixmap is missing, construct it using the clock font.
      In Alt+Tab, pressing the first letter of the application class name,
        selects the next such application window.
      QuickSwitch support for very many application windows in both modes.
      Improve QuickSwitch hinting in horizontal mode.
      Add workspace separators to QuickSwitch in horizontal mode.
      Put accellerator on O in OccupyAll menu entry and closes ice-wm/icewm#204.
      Update the potfiles after the _OccupyAll accellerator change.
      Trim trailing whitespace from window titles.
      Lock the work area when unmanaging a client.
      Prevent a crash when a dock layer window exits.
      Mark nextKey as override.
      Speedup icon drawing by caching its Pictures server side.
      Improve PagerShowPreview positions and icon drawing.
      Simplify icon drawing in WindowList.
      On startup force icon sizes to be standard icon sizes.
      Change minimum icon size from 8 to 16.
      Set the default value for Alpha blending to 1. Drop DoubleBuffer.
      Correct that YDesktop has defaults for depth/visual/colormap.
      Remove getGraphics from YWindow to save 16 bytes. Add createPixmap with
        sizes.
      Add createPicture to YXApplication.
      Add clang pragma "-Wc++11-narrowing" for issue ice-wm/icewm#206.
      Print diagnostic messages for icesh loadicon and saveicon for #814. Also
        show the win_gravity of WM_NORMAL_HINTS in icesh. State that icesh
        loadicon requires a window to have a _NET_WM_ICON property.
      Clock text leds should use the same font within a word.
      Fix off by one error in string list for #812.
      In icesh addWorkspace first add the workspace before setting the desktop
        count for #812.
      Read extra workspace names from the desktop on startup for #812.
      Fix bug where the tasks pane overlaps with the workspaces pane. This may
        happen when the taskbar is higher, when big fonts are used.
      Limit the loading extra workspace names from the desktop, limit that by
        the total number of desktops.
      Update workspace name on taskbar when changed externally for #812.
      Add getWorkspaceName and getWorkspaceNames to icesh for issue #813.
      enable sponsoring
      Improve the handling of systray icons with a depth of 24 when the icewm
        system tray has a depth of 32 for issue #818.
      Prefer a gradient background for systray icons.
      Only use composing for a systray icon when its depth is 32 for issue #818.
      Fix keyboard layout switching for OpenBSD which lacks wordexp and closes
        #810 and ice-wm/icewm#215.
      Add isUp() and setPointerMotion() to YPopup.
      Add easy createPixmap. Register the property name before a
        XGetTextProperty.
      Delete the taskbar menu after popdown and track it with fMenuShown.
      Automatically convert a YColor to XRenderColor.
      Fix spelling of WM_WINDOW_ROLE.
      Revert "Make menu arrow size relative to icon size". Not 'roughly similar
        size' but _exactly_. Unclear what means 'afac'?  Don't repeat the same
        calculation in the next paragraph. Lacks cast from float to int.
      Don't manage plank.
      Track the use of nanosvg in image_library.
      Increase the maximum icon size to 256 for LargeIconSize and HugeIconSize.
      Add QuickSwitchPreview for a new quick switch with application previews.
      Add switcher.h.
      Add QuickSwitchPreview. Drop DoubleBuffer.
      Consistently use the work area of the frame for the desktop mini icon for
        issue #823.
      Adjust the size of the submenu indicator triangle with MenuIconSize.
      Use placed() instead of priority when testing for active previews for
        issue #823.
      Adjust WM_ICON_SIZE to announce support for high-resolution icons 128x128.
      Preferably use high-resolution icons in preview.
      Use override consistently in Switcher.
      Fix empty active color. Fix multi-screen setup. Handle very wide/tall
        monitors. Try to get at least two rows.
      For clients without WM_CLASS use WM_COMMAND.
      Check for an empty YPixel in XRenderColor.
      Accept minimal margin in order to get at least two rows of previews.
      Prefer the organisational repository for new issues.
      Add preview.h to distributable files.
      Update the preferred issues location to the ice-wm organisation.
      Update pot files.

Eduard Bloch <blade@debian.org> (3):
      Avoid autoreconf failure on existence of nasty tags
      Eliminate dead code
      Make menu arrow size relative to icon size

dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> (2):
      Bump actions/checkout from 5 to 6
      Bump actions/checkout from 5 to 6 (#819)

openSUSE Weblate <weblate-noreply@opensuse.org> (2):
      Update translation files
      Update translation files

Aleksey Fedorov <Aleksejfedorov963@gmail.com> (1):
      Translated using Weblate (Russian)

Arif Budiman <arifpedia@gmail.com> (1):
      Translated using Weblate (Indonesian)

Balló György <ballogyor@gmail.com> (1):
      fdomenu: Initialize loc variable with user's default system locale

David Medina <medipas@gmail.com> (1):
      Translated using Weblate (Catalan)

Ferdinand Galko <galko.ferdinand@gmail.com> (1):
      Translated using Weblate (Slovak)

Freek de Kruijf <freek@opensuse.org> (1):
      Translated using Weblate (Dutch)

Hugo Carvalho <hugokarvalho@hotmail.com> (1):
      Translated using Weblate (Portuguese)

Jure Repinc <jlp@holodeck1.com> (1):
      Translated using Weblate (Slovenian)

Luiz Fernando Ranghetti <elchevive68@gmail.com> (1):
      Translated using Weblate (Portuguese (Brazil))

Luna  Jernberg <bittin@opensuse.org> (1):
      Translated using Weblate (Swedish)

Temuri Doghonadze <temuri.doghonadze@gmail.com> (1):
      Translated using Weblate (Georgian)

Yasuhiko Kamata <belphegor@belbel.or.jp> (1):
      Translated using Weblate (Japanese)

gijsbers <gijsbers@users.noreply.github.com> (1):
      enable sponsoring


Release icewm-3.9.0 released 2025-08-31
---------------------------------------

git shortlog --no-merges -e -n -w80,6,8 3.8.2...3.9.0

Bert Gijsbers <gijsbers@science.uva.nl> (21):
      When truncating a title in icesh, respect UTF-8 codepoint boundaries.
      Ensure that _NET_CLIENT_LIST_STACKING remains up-to-date.
      Add wmSmartPlace method for KeyWinSmartPlace.
      Add new -kovered filter to icesh to test if client is covered.
      Correct red and blue in icesh commands loadicon and saveicon.
      Ignore warning stringop-truncation for mstring.h.
      Make inheritance of YApplication private.
      Preserve the image mask as alpha when loading 24-bits images with Imlib2.
      YListBox only uses small icons.
      When scaling an YPixmap prefer to do it using libXrender.
      Add support for themed cursors for gdk-pixbuf without libXpm.
      Smart guess the cursor x/y-hotspot when absent. Add support for Xcursor.
      Use the system cursor themes, when an icewm theme doesn't define a cursor.
      Document Xcursor.
      When lseek on /proc/net/dev fails, then avoid it. Closes #806.
      Only warn for stringop-truncation when GCC is at least 8.0.
      Fix missing endif.
      Include libgen.h for basename on non-linux.
      Argument to basename is non-const.
      Fix parsing block comments in XPM headers.
      Prepare 3.9.0 release

dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> (2):
      Bump actions/checkout from 4 to 5
      Bump actions/checkout from 4 to 5 (#805)

Javier Llorente <javier@opensuse.org> (1):
      Translated using Weblate (Spanish)

Kempelen <lion@cmsbazar.hu> (1):
      Translated using Weblate (Hungarian)

Luiz Fernando Ranghetti <elchevive68@gmail.com> (1):
      Translated using Weblate (Portuguese (Brazil))


Release icewm-3.8.2 released 2025-08-03
---------------------------------------

git shortlog --no-merges -e -n -w80,6,8 3.8.1...3.8.2

Bert Gijsbers <gijsbers@science.uva.nl> (15):
      Use foldspaces to remove extraneous spaces.
      Also minimize fullscreen windows when clicking on a task button. Document
        the minimization feature of task buttons and the Ctrl modifier.
      Fix for keeping a menu inside the screen area.
      Fixes for adjusting the workarea when moving/sizing a do-not-cover window
        for issue #356.
      Fix to resize maximized windows when workarea grows and fix to recompute
        the workarea when a dock exits for issue #356.
      Don't synchronize with icewm after _NET_WORKAREA changes as it slows icewm
        down.
      Fix typo for issue #356.
      When the workarea changes, adjust the positions of all desktop icons.
      Drop excessive use of square brackets around double quotes.
      Improve the abstractions for the doNotCover computation inside
        updateWorkAreaInner.
      Add new "switchmenu" and "print" actions to icesh to use icesh in a
        "switchkey" definition in the "keys" file.
      Make the -Z filter work on non-Linux.
      Add mlterm for OpenBSD.
      Explain Dock layer.
      Prepare 3.8.2 release


Release icewm-3.8.1 released 2025-07-14
---------------------------------------

git shortlog --no-merges -e -n -w80,6,8 3.8.0...3.8.1

Bert Gijsbers <gijsbers@science.uva.nl> (20):
      Reduce the size of a DTheme from 88 bytes to 32 bytes.
      Reduce the amount of memory needed for keybindings from the "keys" file.
      Allow to reload the toolbar from the dialog.
      Document that the OpenCommand is for the Start menu.
      Make the BrowseMenu much faster and use less memory. Drop the DFile.
      Focus the first item in a browse menu.
      Simplify icewm actions.
      Simplify handleSMAction where WMAction equals YAction.
      Remove the IApp from DObject and DProgram to save some memory.
      Permit dots in theme directory names.
      Only use C strings in nextExt.
      Only use C strings in endsWith and startsWith.
      Document that a toolbar is a also a menu.
      Restore previous code for calculating the amount of User Memory and closes
        ice-wm/icewm#199.
      Drop unused offset from mstring to save 8 bytes per mstring.
      Drop the fCount field from mstring to save 8 bytes per mstring.
      Always keep message dialogs above the WindowList.
      Use the precise buffer length for a mstring of long.
      Prevent 2 Clang warnings.
      Prepare 3.8.1 release

Kempelen <lion@cmsbazar.hu> (1):
      Translated using Weblate (Hungarian)


Release icewm-3.8.0 released 2025-06-22
---------------------------------------

git shortlog --no-merges -e -n -w80,6,8 3.7.5...3.8.0

Bert Gijsbers <gijsbers@science.uva.nl> (23):
      Include sr in LINGUAS.
      Optimize the CPU graph when taskbarbg.xpm is a gradient and
        ColorCPUStatusIdle is the empty string.
      Optimization of the CPU graph.
      Avoid work for translators for now.
      Optimize the MEM graph to reduce the background load of icewm.
      Optimize renderToPixmap for the imlib2 layer.
      Convert a hotkey to uppercase with respect for the current locale.
      YMenuItem doesn't need to be virtual.
      Convert HotChars in a menu to uppercase with respect for the current
        locale.
      Convert button hotkeys to uppercase with respect for the current locale.
      Use the taskbar parameters consistently.
      Add Help actions.
      Plus the launhHelp declaration.
      Convert case in mstrings with respect to the current locale.
      Clear array in ObjectMenu discard.
      Add discard declaration to the ObjectMenu.
      Drop the obsolete toUpper from ASCII.
      Optimize the Themes menu. First popup the Themes menu and only then look
        for theme alternatives. Provide a theme button preview to the themes
        Menu. Extend the Help menu.
      Silence clang warnings on OpenBSD.
      Prefer a non-deterministic random number generator.
      Remove surplus right-square-bracket.
      Prefer gtar to install themes on OpenSolaris/OpenIndiana.
      Prepare 3.8.0 release

Jure Repinc <jlp@holodeck1.com> (3):
      Translated using Weblate (Slovenian)
      Translated using Weblate (Slovenian)
      Translated using Weblate (Slovenian)

Саша Петровић <salepetronije@gmail.com> (3):
      Translated using Weblate (Serbian)
      Translated using Weblate (Serbian)
      Translated using Weblate (Serbian)

Eduard Bloch <blade@debian.org> (1):
      Mention --postpreferences in usage info


Release icewm-3.7.5 released 2025-05-25
---------------------------------------

git shortlog --no-merges -e -n -w80,6,8 3.7.4...3.7.5

Bert Gijsbers <gijsbers@science.uva.nl> (15):
      Silence Clang about VLAs.
      Add support for svgz to icewmbg.
      Rename findWindow(int) to findByFlags.
      Plug a few leaks in icewm-menu-fdo.
      Fix comparing language codes for issue #800. Support three-letter language
        codes.
      Document the new -l,--lang option for icewm-menu-fdo.
      Revert "Plug a few leaks in icewm-menu-fdo." and closes #801. This reverts
        commit a0c98f2f95ba8a363830165b1a593f1108636217.
      Allow setGeometry for windows without a WM_NORMAL_HINTS property in icesh.
      Ignore key repeats in the runonce command for keys for issue
        ice-wm/icewm#175. Document the runonce command for keys.
      Silence compiler on unknown pragmas.
      Drop the "--debug-z" option. For each over workspaces. For frames the
        lower and raise should be empty.
      Add unionRect for a YRect parameter.
      Prefer activateWindow over setFocus for the WindowList.
      When toggling the WindowList, raise the WindowList if it is overlapped.
      Prepare 3.7.5 release

David Medina <medipas@gmail.com> (1):
      Translated using Weblate (Catalan)

Feike Donia <feikedonia@proton.me> (1):
      Translated using Weblate (Dutch)

Саша Петровић <salepetronije@gmail.com> (1):
      Added translation using Weblate (Serbian)


Release icewm-3.7.4 released 2025-04-21
---------------------------------------

git shortlog --no-merges -e -n -w80,6,8 3.7.3...3.7.4

Bert Gijsbers <gijsbers@science.uva.nl> (26):
      Lower minimum required CMake version to 3.5.
      Fix CMake LTO build.
      Remove obsolete CMake warning for SVG library.
      Let icesh don't loop when interrupted.
      Use X-resource library 1.2 to reliably obtain process identifiers of
        client windows. Add the "toolbar" command to icesh to let icewm reload
        the toolbar configuration.
      Add xres_LDFLAGS to icewm_libs for CMake.
      Add a toolbar button to the CAD-dialog.
      Return first found PID in getNetWMPid.
      Better fix for getNetWMPid sorry.
      Add xres to dependencies.
      Make XRes disableable in configure. Up version to 3.7.3.
      Make XRes disableable in the CMake build.
      Give which a backup in rebuild.sh.
      Remove debugging statements.
      Add a --replace option to icewm-session.
      Add -Z filter to icesh to select only terminals.
      Drop old obsolete icons.
      Change default theme to icedesert.
      Fix the stacking order when a QuickSwitch ends.
      Replace -lXRes with $(XRES_LIBS) for icesh.
      Improve CAD-dialog up-down traversal.
      In getLastFocus, ignore unmanaged frames.
      Restack the windows after a QuickSwitch has ended.
      Fix typo.
      Permit some global keys in case the global keybinds are not active.
      Prepare 3.7.4 release

Dmitriy Khanzhin <jinn@altlinux.org> (2):
      Translated using Weblate (Russian)
      Translated using Weblate (Russian)

Gemineo <vistatec@gemineo.de> (2):
      Translated using Weblate (German)
      Translated using Weblate (German)

Davide Aiello <davide.aiello@novilingulists.com> (1):
      Translated using Weblate (Italian)

Emily Dong <Emily.Dong@excel-gits.com> (1):
      Translated using Weblate (Chinese (Taiwan) (zh_TW))

Fran Serrador <serrador@proton.me> (1):
      Translated using Weblate (Spanish)

Grace Yu <grace.yu@excel-gits.com> (1):
      Translated using Weblate (Chinese (China) (zh_CN))

Samanta Magalhaes <samanta_texttrans@outlook.com> (1):
      Translated using Weblate (Portuguese (Brazil))

Sophie Leroy <sophie@stoquart.com> (1):
      Translated using Weblate (French)


Release icewm-3.7.3 released 2025-03-30
---------------------------------------

git shortlog --no-merges -e -n -w80,6,8 3.7.2...3.7.3

Bert Gijsbers <gijsbers@science.uva.nl> (10):
      Fix --disable-librsvg. Don't barf when --without-icesound. Update READMEs.
      Set a title to the dock window.
      Add the usertime and x11time commands to icesh.
      Remove the remnants of the root proxy window. Only set focus to the icewm
        top window when it hasn't focus yet.
      Remove DESKTOP_AUTOSTART_ID, DESKTOP_STARTUP_ID, XDG_ACTIVATION_TOKEN
        variables from the environment.
      Improve support for _NET_WM_USER_TIME and _NET_STARTUP_ID for issue #799.
      Fix typo for fUserTimeWindow in getUserTime.
      Startup notification says to always accept updates to _NET_STARTUP_ID.
      Fix compiler error on missing include errno.h.
      Prepare 3.7.3 release

Eduard Bloch <blade@debian.org> (5):
      Make location of nanosvg header customizable
      By default, try fallback to non-specific Sans or non-bold
      Fix cmake warning about wrong COMMENT arguments
      Upgrade min.req. of CMake to version 3.10
      App name filter shall consider the command line too

Mehmet Akif 9oglu <madanadam@gmail.com> (1):
      Translated using Weblate (Turkish)

