April 2026: GTK2 is not dead! This is a fork created by Daemonratte with the encouragement and support of the devuanusers.com community with new patches and new features to come. A summary of what's been done and roadmap for future improvements: Overview of Changes from GTK+ 2.24.33 to gtk2-ng ================================================ * Continue GTK+ 2.24 maintenance as gtk2-ng * Preserve GTK+ 2 API and ABI compatibility * Preserve existing GTK+ 2 features, behaviour, theming, modules and legacy code paths where possible * Integrate selected downstream GTK+ 2 fixes * Integrate selected safe improvements from other GTK+ 2 maintenance forks * Build: - Improve compatibility with current Autoconf, Automake, Libtool and gtk-doc versions - Update autogen.sh handling for newer Automake/aclocal installations - Replace obsolete Autoconf macros with modern equivalents - Use AC_CHECK_TOOL for nm detection - Fix duplicate Automake variable warnings in generated build fragments - Add missing build-system entries for shared internal pixdata helper code - Fix parallel-build ordering for generated GTK type headers - Use a UTF-8 locale when generating the built-in icon cache - Add configure options to disable optional X11 extensions: XRandR, XFixes, XComposite and XDamage - Improve X11/Xext/XShm/XInput related configure checks - Keep gtk-doc optional * GObject Introspection: - Fix GDK and GTK GIR generation with newer g-ir-scanner versions - Add missing internal include paths and build defines for introspection - Filter private/internal GTK headers from Gtk-2.0.gir generation - Add identifier and symbol prefixes where needed - Remove duplicate gtk-doc return annotations that confused modern introspection parsing * Compiler warnings: - Fix warnings produced by newer GCC and Clang versions - Fix incompatible function pointer warnings in tests and demos - Fix stricter callback type warnings in GtkItemFactory test code - Fix stricter GLib type-propagation warnings for g_object_ref() and g_object_ref_sink() - Fix missing and implicit function declaration warnings - Fix unused-variable, set-but-not-used and misleading-indentation warnings - Fix const qualifier warnings - Preserve symbol attributes in generated alias definition files - Silence false-positive array-bounds diagnostics in old GTK text segment allocation code without changing the allocation strategy - Avoid broad warning suppression where local source fixes are possible * Private data: - Modernize many GTK and GDK private-data implementations - Replace g_type_class_add_private() and G_TYPE_INSTANCE_GET_PRIVATE() with G_ADD_PRIVATE and generated instance-private accessors where safe - Keep public structs, public headers and exported symbols compatible - Preserve old widget->priv style access where required for GTK+ 2 compatibility * GLib and GObject modernization: - Replace selected g_memdup() calls with g_memdup2() - Replace deprecated g_value_get_char() and g_value_set_char() usage with signed-char variants - Replace selected deprecated GBookmarkFile application-info APIs - Replace selected deprecated recent-item timestamp APIs with GDateTime-based APIs - Replace g_test_trap_fork() with g_test_trap_subprocess() - Replace deprecated GParameter and g_object_newv() usage in GtkBuilder internals - Replace selected deprecated Pango parser helpers in gtk-icon-sizes parsing - Replace deprecated GCompletion usage in GtkCombo with local completion logic - Replace deprecated g_pattern_match_string() usage where safe - Remove unnecessary type-system initialization from helper code where safe * Time handling: - Improve internal Y2038 safety without changing public ABI - Convert selected internal timestamp storage to wider integer types - Add safe conversion helpers where public APIs still expose time_t - Replace selected GTimeVal and g_get_current_time() usage - Improve internal timestamp handling in recent-file, file, icon/theme and related code paths - Preserve public time_t based APIs for ABI compatibility * GtkRecentManager: - Store recent-file timestamps internally in a safer representation - Preserve the public time_t based API - Add safe conversion and clamping for public timestamp access - Modernize bookmark timestamp handling with GDateTime APIs * GtkFileChooser: - Add an icon/grid view mode - Keep the classic list view available - Add switching between list view and icon view - Add separate pixbuf/model handling for list-view and icon-view icons - Add separate icon sizing for list view and icon view - Add icon-view zoom controls - Add Ctrl + mouse wheel zoom support in icon view - Improve icon-view zoom invalidation and layout updates - Improve scaling of small upscaled icons - Cache shared file chooser theme icons - Clear the file chooser icon cache when the icon theme changes - Update icon sizing when icon theme or monitor metrics change - Fix crashes when switching between list and icon views - Guard hidden-file and backup-file GFileInfo access by checking whether the attributes are present before reading them * GtkFileSelection: - Fix missing pwd.h declarations for home-directory completion - Define _XOPEN_SOURCE 500 where needed for getpwnam(), setpwent(), getpwent() and endpwent() - Preserve the old GtkFileSelection widget and completion behaviour * Icon cache and pixdata: - Add shared internal pixdata helper code - Use the shared pixdata helper in gtk-update-icon-cache - Replace deprecated GdkPixdata usage in selected internal code - Replace deprecated gdk_pixbuf_new_from_inline() usage in selected code - Keep the existing icon cache file format compatible - Improve icon cache pixdata validation - Remove invalid temporary icon cache files after validation failure - Ignore image files placed directly in the top-level icon theme directory * Module loading: - Avoid falling back to loading GTK modules from the current working directory - Preserve normal GTK module search paths, absolute module paths and libtool .la fallback handling - Preserve support for theme engines, input modules and print backends * X11: - Add support for the _NET_SYSTEM_TRAY_PADDING system tray hint - Apply tray-manager-provided GtkStatusIcon padding according to tray orientation - Update tray padding dynamically when tray orientation or padding changes - Keep default tray padding at zero when no tray hint is provided - Add OpenBSD process lookup support for GtkMountOperation on X11 - Replace deprecated pango_unichar_direction() usage in X11 keymap code with an internal FriBidi-based helper - Modernize selected GDK thread initialization code * Printing: - Preserve CUPS and PPD-related printing functionality - Preserve print backend module loading - Preserve the file print backend - Mark the LPR print backend as accepting both PDF and PostScript data - Fix module path handling so print backends can be found from build and install prefixes - Keep the existing GTK+ 2 print backend model - Improve selected CUPS backend warning and string handling without changing printing behaviour * Quartz: - Add support for depth-1 Quartz images and drawable sources * Text and Pango: - Add an internal base-direction helper using FriBidi - Replace deprecated pango_find_base_dir() usage in selected GTK widgets - Centralize text base-direction logic for GtkEntry, GtkTextBTree and GtkTextView * GtkBuilder: - Replace deprecated GParameter usage internally - Replace g_object_newv() with g_object_new_with_properties() - Preserve GtkBuilder object construction behaviour * GtkCombo: - Replace deprecated GCompletion usage - Preserve the old case-sensitive Alt+Tab inline completion behaviour * Tests, demos and tools: - Fix GtkItemFactory callback type mismatches in test programs - Fix test code passing too many arguments to create_menu() - Fix gtk-demo Tool Palette handling for unsupported stock/demo item IDs - Fix warnings in documentation helper tools - Replace mallinfo() with mallinfo2() in test code when available, with mallinfo() retained as fallback - Remove deprecated gtk-doc @Varargs annotations Future Plans for gtk2-ng ======================== * Continue gtk2-ng as a conservative GTK+ 2.24 maintenance fork * Preserve GTK+ 2 API and ABI compatibility * Keep applications built for GTK+ 2.24.33 working with future gtk2-ng releases * Preserve existing GTK+ 2 features, behaviour, theming, modules and legacy code paths * Keep changes conservative and avoid unnecessary behaviour changes * Build and compiler cleanup: - Remove remaining compiler warnings with modern GCC and Clang versions - Remove remaining deprecation warnings by modernizing the affected code - Continue improving compatibility with modern build tools - Keep gtk2-ng buildable on supported Unix-like platforms - Keep optional components optional where possible * Bug fixing: - Continue fixing regressions, crashes and long-standing GTK+ 2 bugs - Continue fixing issues found by downstream users and applications - Keep compatibility fixes small, reviewable and ABI-safe * Performance and responsiveness: - Improve performance where this can be done without changing behaviour - Reduce unnecessary CPU and memory overhead - Keep GTK+ 2 responsive on older hardware - Improve responsiveness in large directories and slow filesystems - Avoid blocking the UI on network mounts where possible * GtkFileChooser: - Continue improving the new icon view - Improve thumbnail handling for icon view - Add best-effort thumbnail generation for image-heavy directories - Avoid aggressive thumbnail retry loops - Add asynchronous loading for very large directories - Add asynchronous loading for slow or network-backed folders - Add an optional preview panel - Keep the classic list view available - Keep switching between list view and icon view lightweight - Preserve existing GtkFileChooser API and behaviour * Themes and engines: - Keep traditional GTK+ 2 theme engines working - Improve theme-engine loading from system and custom GTK paths - Preserve support for existing GTK+ 2 themes - Preserve support for existing icon themes - Improve compatibility with distributions that package GTK+ 2 engines separately * XDG path support: - Add support for XDG_CONFIG_HOME/gtk-2.0/gtkrc - Keep support for ~/.gtkrc-2.0 - Keep support for GTK2_RC_FILES - Add support for XDG_DATA_HOME/themes - Add support for XDG_DATA_HOME/icons - Keep support for ~/.themes and ~/.icons - Add XDG-aware lookup paths without removing legacy paths - Preserve existing GTK_PATH behaviour - Preserve backwards compatibility with existing user configurations * YTK and Ardour: - Review Ardour's YTK GTK+ 2 fork for portable, ABI-safe improvements - Backport useful YTK features where they can be added without breaking GTK+ 2 compatibility - Review YTK touch input support for possible gtk2-ng integration - Review YTK smooth scrolling and input-event improvements for possible gtk2-ng integration - Review YTK macOS improvements for possible gtk2-ng integration - Avoid importing Ardour-specific code that only makes sense for Ardour - Keep gtk2-ng usable as a general GTK+ 2 replacement, not an application-specific toolkit * Other GTK+ 2 maintenance forks: - Continue reviewing stefan11111's GTK+ 2 fork for safe improvements - Backport useful fixes from stefan11111's fork where they preserve GTK+ 2 features and compatibility - Avoid importing changes that remove functionality or narrow platform support * Printing: - Add libppd support for legacy PPD-based printer options with newer CUPS - Preserve existing CUPS 2.x printing support - Preserve legacy PPD workflows where possible - Keep GTK+ 2 print backend behaviour compatible with existing applications - Avoid requiring separate GTK+ 2 builds for different CUPS generations * Platform support: - Preserve GNU/Linux support - Preserve BSD support where possible - Preserve macOS support where possible - Preserve Windows/ReactOS support where possible - Keep portability in mind when modernizing GLib, GDK and GTK internals * Project identity: - Choose a better long-term project name - Keep the project clearly identifiable as a GTK+ 2 maintenance fork - Avoid misleading compatibility or trademark implications