Об этом проекте
Freya — это кроссплатформенная, нативная, декларативная GUI-библиотека для Rust. Она ориентирована на разработчиков, создающих настольные приложения на Rust, которые хотят использовать компонентную модель UI без опоры на веб-технологии.
Основная модель: компоненты — это переиспользуемые элементы UI, которые перерисовываются при изменении состояния, от которого они зависят. Компоненты могут хранить внутреннее состояние или подписываться на общее состояние; любой тип, реализующий трейт Component, может выступать в роли компонента; корневой компонент приложения может быть обычной функцией. Встроенные примеры включают Button и Switch.
Готовые компоненты варьируются от простых элементов управления, таких как Button, Switch и Slider, до более сложных, например VirtualScrollView, Calendar и ColorPicker. Примеры файлов с префиксом component_ в папке examples демонстрируют их.
Области функций, описанные в README:
- Анимации: переходы для цветов, размеров и позиций с контролем времени, easing-функций и последовательностей.
- Редактирование форматированного текста: управление курсором, выделение, сочетания клавиш, настраиваемое форматирование и виртуализация.
- Редактор кода: независимый от состояния редактор, использующий Rope для текста и tree-sitter для подсветки синтаксиса; вы предоставляете грамматику и запросы подсветки. Включается через функцию code-editor.
- Рендеринг Markdown через компонент MarkdownViewer (функция markdown).
- Маршрутизация и навигация с помощью derive Routable, макетов, ссылок и контекста роутера (функция router).
- Глобальное управление состоянием через freya-radio — систему на основе каналов, где компоненты подписываются на каналы и получают обновления только при изменении релевантных данных (функция radio).
- Интеграция библиотеки иконок, в настоящее время поддерживается Lucide.
- Headless-тестирование с помощью freya-testing, которое может имитировать взаимодействия и сохранять состояние UI в файлы; используется самой Freya для тестирования встроенных компонентов.
- Графики и построение диаграмм через библиотеку Plotters (функция ploters).
- Интернационализация с использованием системы локализации Fluent, включая переводы, плюрализацию и переключение локалей (функция i18n).
- Модификаторы стиля, вдохновленные Material Design, такие как ripple-эффекты (функция material-design).
- Интеграция WebView для встраивания веб-контента рядом с нативным UI (функция webview).
- Эмуляция терминала с поддержкой PTY для встроенных терминалов или SSH-клиентов (функция terminal-pty).
- Инструменты разработчика для просмотра дерева компонентов в реальном времени (функция devtools).
Использование: последний стабильный релиз указывается как freya = "0.4", доступны предрелиз 0.5.0-rc.7 и вариант с веткой main. Репозиторий использует git-подмодули, поэтому клонирование требует --recurse-submodules или последующего git submodule update --init --recursive. Примеры можно запускать с помощью cargo run --example counter. Руководство по настройке среды разработки приведено в документации. В README отмечается возможная проблема компиляции на Windows с windows-gnu.
Проект ссылается на веб-сайт, документацию docs.rs, Discord-сервер, руководство по внесению вклада и страницу спонсорства, а также упоминает Dioxus, rust-skia и других участников.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.