ДоступСн графичСский Ρ‚ΡƒΠ»ΠΊΠΈΡ‚ GTK 4.22 со встроСнным Π΄Π²ΠΈΠΆΠΊΠΎΠΌ отрисовки SVG

ПослС ΡˆΠ΅ΡΡ‚ΠΈ мСсяцСв Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½ Ρ€Π΅Π»ΠΈΠ· ΠΌΠ½ΠΎΠ³ΠΎΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ Ρ‚ΡƒΠ»ΠΊΠΈΡ‚Π° для создания графичСского интСрфСйса ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ β€” GTK 4.22. GTK 4 развиваСтся Π² Ρ€Π°ΠΌΠΊΠ°Ρ… процСсса Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ пытаСтся ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹ΠΉ Π² Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Π»Π΅Ρ‚ API, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π½Π΅ опасаясь, Ρ‡Ρ‚ΠΎ ΠΊΠ°ΠΆΠ΄Ρ‹Π΅ ΠΏΠΎΠ»Π³ΠΎΠ΄Π° придётся ΠΏΠ΅Ρ€Π΅Π΄Π΅Π»Ρ‹Π²Π°Ρ‚ΡŒ прилоТСния ΠΈΠ·-Π·Π° измСнСния API Π² ΠΎΡ‡Π΅Ρ€Π΅Π΄Π½ΠΎΠΉ Π²Π΅Ρ‚ΠΊΠ΅ GTK.

Π‘Ρ€Π΅Π΄ΠΈ Π·Π°ΠΌΠ΅Ρ‚Π½Ρ‹Ρ… ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΠΉ Π² GTK 4.22:

  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° встроСнная систСма отрисовки ΠΈ Ρ€Π°Π·Π±ΠΎΡ€Π° ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ SVG, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‰Π°Ρ Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΡŽ ΠΈ Π΄Π°ΡŽΡ‰Π°Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ создания Π°Π½ΠΈΠΌΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… ΠΏΠΈΠΊΡ‚ΠΎΠ³Ρ€Π°ΠΌΠΌ, ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹Ρ… элСмСнтов интСрфСйса ΠΈ динамичСски ΠΌΠ΅Π½ΡΡŽΡ‰ΠΈΡ…ΡΡ ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ², Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ прогрСсса. GtkSvg Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ интСгрируСтся с Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΎΠΉ GSK (GTK Scene Kit), ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰Π΅ΠΉ возмоТности отрисовки графичСских сцСн Ρ‡Π΅Ρ€Π΅Π· OpenGL ΠΈ Vulkan. Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° librsvg, Ρ€Π°Π½Π΅Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠ°Ρ для отрисовки SVG-ΠΏΠΈΠΊΡ‚ΠΎΠ³Ρ€Π°ΠΌΠΌ, ΡƒΠ΄Π°Π»Π΅Π½Π° ΠΈΠ· числа зависимостСй.

    Для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΎΠΌ SVG ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ класс Gtk.Svg, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ ΠΎΠ±ΠΎΠΉΡ‚ΠΈΡΡŒ Π±Π΅Π· Π²Π½Π΅ΡˆΠ½ΠΈΡ… зависимостСй ΠΏΡ€ΠΈ отрисовкС Π²Π΅ΠΊΡ‚ΠΎΡ€Π½Ρ‹Ρ… ΠΏΠΈΠΊΡ‚ΠΎΠ³Ρ€Π°ΠΌΠΌ ΠΈ рСсурсов для ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. ΠŸΡ€Π΅Π»ΠΎΠΆΠ΅Π½Π½Π°Ρ рСализация Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° SVG Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π° ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ для GTK ΠΈ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ 1250 ΠΈΠ· 1616 тСстов совмСстимости ΠΈΠ· Π½Π°Π±ΠΎΡ€Π° resvg (для сравнСния, Firefox ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ 1385 тСстов, librsvg β€” 1168, Π° QtSvg β€” 591).

  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½ Π²ΠΈΠ΄ΠΆΠ΅Ρ‚ GtkPopoverBin, ΡƒΠΏΡ€ΠΎΡ‰Π°ΡŽΡ‰ΠΈΠΉ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ контСкстных мСню ΠΈ Π²Ρ‹ΠΏΠ°Π΄Π°ΡŽΡ‰ΠΈΡ… Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ² Π² Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Π²ΠΈΠ΄ΠΆΠ΅Ρ‚Ρ‹. GtkPopoverBin ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΊΠ°ΠΊ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ для ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π²ΡΠΏΠ»Ρ‹Π²Π°ΡŽΡ‰ΠΈΡ… ΠΎΠΊΠΎΠ½ Π² Π²ΠΈΠ΄ΠΆΠ΅Ρ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ сами ΠΏΠΎ сСбС Π½Π΅ ΡƒΠΌΠ΅ΡŽΡ‚ это Π΄Π΅Π»Π°Ρ‚ΡŒ.
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½ Π½ΠΎΠ²Ρ‹ΠΉ Ρ‚ΠΈΠΏ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ GtkTryExpression, Π΄ΠΎΠΏΡƒΡΠΊΠ°ΡŽΡ‰ΠΈΡ… ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ fallback-ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ. GtkTryExpression пытаСтся Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠ· списка, Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€ ΠΏΠΎΠΊΠ° ΠΎΠ΄Π½ΠΎ ΠΈΠ· Π½ΠΈΡ… Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΎ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ.
  • ЗадСйствован Π½ΠΎΠ²Ρ‹ΠΉ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ ΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹Ρ… ΠΏΠΈΠΊΡ‚ΠΎΠ³Ρ€Π°ΠΌΠΌ, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‰ΠΈΠΉ Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΡŽ ΠΈ ΠΌΠ΅Π½ΡΡŽΡ‰ΠΈΠ΅ΡΡ состояния (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, для ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ†ΠΈΠΈ активности). Для управлСния ΡˆΠΈΡ€ΠΈΠ½ΠΎΠΉ ΠΏΠΈΠΊΡ‚ΠΎΠ³Ρ€Π°ΠΌΠΌ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΎ CSS-свойство Β«-gtk-icon-weightΒ». Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΎ дСмонстрационноС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ org.gtk.Shaper с Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π° для Π½ΠΎΠ²ΠΎΠ³ΠΎ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° ΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹Ρ… ΠΏΠΈΠΊΡ‚ΠΎΠ³Ρ€Π°ΠΌΠΌ.
     ДоступСн графичСский Ρ‚ΡƒΠ»ΠΊΠΈΡ‚ GTK 4.22 со встроСнным Π΄Π²ΠΈΠΆΠΊΠΎΠΌ отрисовки SVG
  • Π’ бэкСндС для Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π² окруТСниях Π½Π° Π±Π°Π·Π΅ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° Wayland Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° ΡΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Π°Ρ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° xx-session-management, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для восстановлСниС состояния ΠΎΠΊΠΎΠ½ ΠΏΡ€Π΅Ρ€Π²Π°Π½Π½Ρ‹Ρ… сСансов (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, послС Π°Π²Π°Ρ€ΠΈΠΉΠ½ΠΎΠ³ΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡ‚Π½ΠΎΠ³ΠΎ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€Π°). Для Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ слСдуСт Π²Ρ‹ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ окруТСния Β«GDK_DEBUG=session-mgmtΒ».
  • Π’ API GtkApplication Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ сохранСния состояния, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» xx-session-management. Π’ GNOME 50 данная Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ задСйствована для сохранСния сСансов ΠΈ восстановлСния ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΉ ΠΎΠΊΠΎΠ½.
  • Для доступа ΠΊ настройкам Π² бэкСндС для Wayland задСйствован ΠΏΠΎΡ€Ρ‚Π°Π» freedesktop.portal.Settings.
  • Π’ API GtkFileLauncher Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ доступа ΠΊ Ρ„Π°ΠΉΠ»Π°ΠΌ Π½Π° запись, ΠΏΡ€ΠΈ использовании Π²Π½ΡƒΡ‚Ρ€ΠΈ flatpak-ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ².
  • Π’ GSK (GTK Scene Kit) Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° профилирования ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ смСщСния пиксСлСй исходного изобраТСния Π½Π° основС Β«ΠΊΠ°Ρ€Ρ‚Ρ‹ смСщСния» (displacement map) для создания слоТных графичСских эффСктов.
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½ API GskRenderNodeReplay для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π΄Π΅Ρ€Π΅Π²Π° ΡƒΠ·Π»ΠΎΠ² отрисовки (Render Node).
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ Π½ΠΎΠ²Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ ΡƒΠ·Π»ΠΎΠ² отрисовки Β«copyΒ» ΠΈ Β«pasteΒ», ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠ΅ ΡΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ Π²ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ ΠΏΠΎΠ΄ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΌ элСмСнтом Π² Π΄Ρ€ΡƒΠ³ΠΎΠ΅ мСсто Π³Ρ€Π°Ρ„Π° сцСны.
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½ Π½ΠΎΠ²Ρ‹ΠΉ Ρ‚ΠΈΠΏ ΡƒΠ·Π»ΠΎΠ² отрисовки Β«compositeΒ», ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡ‚ΠΈΠ½Π³Π° ΠΏΡ€ΠΈ отрисовкС элСмСнтом ΠΏΠΎΠ²Π΅Ρ€Ρ… Ρ„ΠΎΠ½Π°, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Π½Π°Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ с использованиСм маски.
  • Π’ CSS Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΎ свойство Β«backdrop-filterΒ» для примСнСния эффСктов ΠΊ Ρ„ΠΎΠ½ΠΎΠ²ΠΎΠΉ области, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ Ρ€Π°Π·ΠΌΡ‹Ρ‚ΠΈΠ΅ Ρ„ΠΎΠ½Π°.
  • Π’ CSS Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° настройки Β«reduced-motionΒ», ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΡŽΡ‰Π΅ΠΉ ΠΎ нСобходимости ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ использованиС Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΈ.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ