Rise

GUI На Rust

Мой идеальный вариант Desktop GUI Библиотеки

  • UX - возможности гибко строить адаптивный интерфейс относительно размерностей блоков и их позиционирования
  • UI - использовать все возможности стилизации интерфейса: border, transformation, images, rounded corners, etc.. 
  • Кросс-платформенность - все должно работать идентично на всех базовых desktop-ах: Linux , MacOS, Windows
  • Простая сборка - сборка приложения простая, понятая и линейная, без лишних конфигураций и мучений с линковкой

Проблемы существующих GUI решений

GTK

  • Сотни тысяч строк кода на Си которые никто не поддерживает
  • Cairo - ест слишком много памяти, рисует на CPU, плохое кэширование
  • GSK - также тонны строк на Си которые никто не будет поддерживать, работает на GPU
  • GSK - построен на Contraint Layout, непрактично с точки зрения верстки.
  • Большой рантайм, муторно собирать статически, плохая кросс-платформенность.
  • Сложно создавать и поддерживать кастомные компоненты
  • Нет поддержки анимаций

Qt (QML)

  • Необъятный рантайм, огромное количество возможностей кастомизации, но уровень контроля над происходящим слабый
  • Высокий порог вхождения, для построения даже простых интерфейсов требуется высокий уровень знаний Qt в целом.
  • Написан на С++, имеет огромную историю атавизмов и собственных костылей

В чем суть проблемы использования разных Layout калькуляторов

Absolute

  • Максимум контроля
  • Плохо подходит для адаптивных интерфейсов

Constraint

  • Позиционирование относительно крепления к определенному компоненту по принципу ленты
  • Удобно интегрируется в визуальные редакторы
  • Сложное относительное позиционирование элементов с сохранением гибкости

Стандартные Linear, Vertical, Grid

  • Также остается проблема с гибкостью позиционирования
  • Grid не является гибким относительно адаптивных интерфейсов

Достоинства FlexBox

  • Понятный и простой - взят из Web, имеет сотни статей, и известен каждому верстальщику
  • Гибкий - позволяет комбинировать множество вариантов позиционирования
  • Вместе с комбинацией с CSS возможностями позволяет быстро создать UX любого интерфейса 

deck

By Anton Shramko

deck

  • 1,605