Nach sechsmonatiger Entwicklung wurde die Veröffentlichung des plattformübergreifenden Toolkits zur Erstellung von Benutzeroberflächen - GTK 4.22 - veröffentlicht. GTK 4 wird im Rahmen eines Entwicklungsprozesses weiterentwickelt, der versucht, Anwendungsentwicklern eine stabile und über mehrere Jahre unterstützte API zur Verfügung zu stellen, die sie verwenden können, ohne befürchten zu müssen, dass sie alle sechs Monate ihre Anwendungen aufgrund von Änderungen an der API in einer neuen GTK-Version umschreiben müssen.
Zu den bemerkenswertesten Verbesserungen in GTK 4.22 gehören:
- Es wurde ein integriertes System zur Darstellung und Analyse von SVG-Bildern hinzugefügt, das Animationen unterstützt und die Erstellung von animierten Symbolen, interaktiven Benutzeroberflächenelementen und dynamisch wechselnden Indikatoren, wie z. B. Fortschrittsanzeigen, ermöglicht. GtkSvg ist direkt in die GSK-Bibliothek (GTK Scene Kit) integriert, die die Visualisierung von grafischen Szenen über OpenGL und Vulkan ermöglicht. Die zuvor genutzte librsvg-Bibliothek zur Darstellung von SVG-Symbolen wurde aus den Abhängigkeiten entfernt.
Für die Arbeit mit dem SVG-Format wurde die Klasse Gtk.Svg eingeführt, die Petergan ohne externe Abhängigkeiten zur Darstellung von Vektorsymbolen und Ressourcen für Anwendungen ermöglicht. Die implementierte SVG-Format-Umsetzung wurde speziell für GTK entwickelt und besteht 1250 von 1616 Kompatibilitätstests aus dem resvg-Testset (zum Vergleich: Firefox besteht 1385 Tests, librsvg - 1168 und QtSvg - 591).
- Das Widget GtkPopoverBin wurde hinzugefügt, um die Integration von Kontextmenüs und Dropdown-Dialogen in andere Widgets zu erleichtern. GtkPopoverBin kann als Container zur Integration von Popup-Funktionalitäten in Widgets verwendet werden, die dies von sich aus nicht können.
- Ein neuer Typ von Ausdrücken, GtkTryExpression, wurde hinzugefügt, der die Definition von Fallback-Operationen ermöglicht. GtkTryExpression versucht, jedes Ausdruck aus der Liste auszuführen, bis eines davon erfolgreich ist.
- Ein neues Format für symbolische Symbole wurde eingeführt, das Animationen und sich ändernde Zustände unterstützt (z. B. zur Anzeige von Aktivitäten). Um die Breite der Symbole zu steuern, wurde die CSS-Eigenschaft „-gtk-icon-weight“ hinzugefügt. Eine Demoversion der Anwendung org.gtk.Shaper mit einer Implementierung eines Editors für das neue Format symbolischer Symbole wurde hinzugefügt.

- Im Backend wurde eine experimentelle Unterstützung für das xx-session-management-Protokoll implementiert, das in Umgebungen auf Basis des Wayland-Protokolls verwendet werden kann. Dieses Protokoll kann zur Wiederherstellung des Zustands von Fenstern unterbrochener Sitzungen eingesetzt werden (zum Beispiel nach einem unerwarteten Absturz des Compositing-Managers). Um es zu aktivieren, setzen Sie die Umgebungsvariable „GDK_DEBUG=session-mgmt“.
- Die API GtkApplication hat die Möglichkeit hinzugefügt, den Zustand unter Verwendung des xx-session-management-Protokolls zu speichern. In GNOME 50 wird diese Funktionalität zum Speichern von Sitzungen und Wiederherstellen von Fensterpositionen verwendet.
- Für den Zugriff auf die Einstellungen im Backend für Wayland wird das Portal freedesktop.portal.Settings verwendet.
- Die API GtkFileLauncher hat die Möglichkeit implementiert, auf schreibbare Dateien zuzugreifen, wenn sie innerhalb von flatpak-Paketen verwendet wird.
- Im GSK (GTK Scene Kit) wurde die Unterstützung für Profilierung und die Möglichkeit hinzugefügt, Pixel des ursprünglichen Bildes basierend auf einer „Verschiebungsmappe“ (displacement map) zu verschieben, um komplexe grafische Effekte zu erzeugen.
- Die API GskRenderNodeReplay wurde hinzugefügt, um den Baum der Renderknoten zu verarbeiten.
- Neue Typen von Renderknoten „copy“ und „paste“ wurden hinzugefügt, die es ermöglichen, einen Bereich unter dem aktuellen Element an eine andere Stelle im Szenengraphen zu kopieren und einzufügen.
- Ein neuer Typ von Renderknoten „composite“ wurde hinzugefügt, der zusätzliche Compositing-Operationen beim Rendern eines Elements über einen Hintergrund ermöglicht, wie zum Beispiel das Überlagern mit einer Maske.
- In CSS wurde die Eigenschaft „backdrop-filter“ hinzugefügt, um Effekte auf den Hintergrundbereich anzuwenden, wie zum Beispiel das Verschwommen des Hintergrunds.
- In CSS wurde die Unterstützung für die Einstellung „reduced-motion“ hinzugefügt, die darüber informiert, dass die Verwendung von Animationen minimiert werden soll.
Quelle: opennet.ru

