282 lines
12 KiB
Text
282 lines
12 KiB
Text
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
|