Po sześciu miesiącach prac rozwojowych opublikowano wydanie wieloplatformowego zestawu narzędzi do tworzenia interfejsów graficznych użytkownika — GTK 4.22. GTK 4 rozwija się w ramach procesu, który ma na celu dostarczenie programistom stabilnego i wspieranego przez kilka lat API, z którego można korzystać bez obaw, że co pół roku trzeba będzie przekształcać aplikacje z powodu zmian w API w kolejnej wersji GTK.
Wśród zauważalnych ulepszeń w GTK 4.22:
- Dodano wbudowany system renderowania i przetwarzania obrazów w formacie SVG, który obsługuje animację i umożliwia tworzenie animowanych ikon, interaktywnych elementów interfejsu oraz dynamicznie zmieniających się wskaźników, takich jak wskaźniki postępu. GtkSvg bezpośrednio integruje się z biblioteką GSK (GTK Scene Kit), która zapewnia możliwości renderowania graficznych scen za pomocą OpenGL i Vulkan. Biblioteka librsvg, wcześniej używana do renderowania ikon SVG, została usunięta z zależności.
Do pracy z formatem SVG wprowadzono klasę Gtk.Svg, która pozwala na renderowanie wektorowych ikon i zasobów dla aplikacji bez zewnętrznych zależności. Zaproponowana implementacja formatu SVG została stworzona specjalnie dla GTK i pomyślnie przeszła 1250 z 1616 testów zgodności z zestawu resvg (dla porównania, Firefox przechodzi 1385 testów, librsvg — 1168, a QtSvg — 591).
- Dodano widżet GtkPopoverBin, który upraszcza dodawanie menu kontekstowych i rozwijanych okienek do innych widżetów. GtkPopoverBin może być używany jako kontener do integracji funkcjonalności okienek podręcznych w widżetach, które same w sobie nie potrafią tego robić.
- Dodano nowy typ wyrażeń GtkTryExpression, który pozwala na zdefiniowanie operacji fallback. GtkTryExpression stara się wykonać każde wyrażenie z listy, aż jedno z nich zostanie pomyślnie wykonane.
- Wprowadzono nowy format ikon symbolicznych, który obsługuje animację i zmienne stany (np. do wskazywania aktywności). Aby zarządzać szerokością ikon, dodano właściwość CSS „-gtk-icon-weight”. Dodano aplikację demonstracyjną org.gtk.Shaper z implementacją edytora dla nowego formatu ikon symbolicznych.

- W backendzie dla środowisk opartych na protokole Wayland wdrożono eksperymentalne wsparcie dla protokołu xx-session-management, który może być używany do przywracania stanu okien przerwanych sesji (np. po awaryjnym zakończeniu pracy menedżera kompozycji). Aby go włączyć, należy ustawić zmienną środowiskową „GDK_DEBUG=session-mgmt”.
- W API GtkApplication dodano możliwość zapisywania stanu, korzystając z protokołu xx-session-management. W GNOME 50 ta funkcjonalność jest wykorzystywana do zapisywania sesji i przywracania pozycji okien.
- Aby uzyskać dostęp do ustawień w backendzie dla Wayland, wykorzystano portal freedesktop.portal.Settings.
- W API GtkFileLauncher zaimplementowano możliwość dostępu do plików do zapisu, przy użyciu wewnątrz pakietów flatpak.
- W GSK (GTK Scene Kit) dodano wsparcie dla profilowania oraz możliwość przesunięcia pikseli obrazu źródłowego na podstawie „mapy przesunięcia” (displacement map) w celu tworzenia złożonych efektów graficznych.
- Dodano API GskRenderNodeReplay do przetwarzania drzewa węzłów odrysowywania (Render Node).
- Dodano nowe typy węzłów odrysowywania „copy” i „paste”, umożliwiające skopiowanie i wklejenie obszaru pod bieżącym elementem w inne miejsce grafu sceny.
- Dodano nowy typ węzłów odrysowywania „composite”, który umożliwia stosowanie dodatkowych operacji kompozycji podczas odrysowywania elementu nad tłem, takich jak nałożenie z użyciem maski.
- W CSS dodano właściwość „backdrop-filter” do stosowania efektów do obszaru tła, takich jak rozmycie tła.
- W CSS dodano wsparcie dla ustawienia „reduced-motion”, informującego o konieczności minimalizacji użycia animacji.
Źródło: opennet.ru

