03 / 06 · Rust · wgpu 28 · WGSL
syngui
Retained-mode GUI-фреймворк для Rust: рисует на GPU через wgpu, оформляется таблицами стилей в духе CSS, связывается реактивными сигналами.
- Лицензия
- MIT OR Apache-2.0
- Платформа
- Linux · Windows · macOS · Android · Web
- Пакеты
- Cargo, из исходников
- Статус
- Молодой, API нестабилен

Что это
Большинство GUI-библиотек для Rust заставляют выбирать: простота immediate mode (egui) или retained-дерево с типизированными стилями (iced), собственный DSL (Slint) или веб-технологии (Tauri, Dioxus). syngui собирает другую комбинацию — настоящие таблицы стилей с каскадом, точечную реактивность в духе SolidJS, retained-дерево виджетов и большой набор виджетов, которые обычно приходится тащить в проект самому.
Автор пользуется им в продакшене: на нём работают synthos, syndesktop, linux-legion и ardor-mouse, так что баги находятся в реальной работе.
Возможности
- Таблицы стилей MSS: переменные и var(), селекторы по типу, классу, составные и по потомкам, :hover, :active, :focus, :checked, :disabled, вложенность, переходы, @keyframes, наследование и псевдоклассы состояния окна.
- Точечная реактивность: use_signal, use_effect, create_memo и use_context с автоматическим отслеживанием зависимостей; поддеревья перестраиваются по частям.
- Retained-архитектура: неизменяемый Widget → Element с состоянием, сравнение через can_update() и распространение флагов грязности.
- Больше 110 виджетов: графики (линии, столбцы, круговые, радар, шкалы), тайловая карта, встроенный терминал (PTY + VT100), Markdown с подсветкой синтаксиса, редактор кода на rope, видеоплеер с синхронизацией по звуку и аппаратным декодированием, инспектор.
- DocumentEditor — блочный редактор в духе Notion, где Markdown и модель, и формат файла: поток или свободный холст, векторные фигуры и живые встраивания своих виджетов.
- 3D-трансформации прямо из стилей, эмиттеры частиц с 15 пресетами и ряд с увеличением под курсором, как в доке macOS.
- Горячие пути измерены: VirtualList, ключи у детей, кэш каскада и отрисовка, собранная в несколько вызовов за один проход.
- wgpu 28 (Vulkan / Metal / DX12 / GL / WebGPU) и шейдеры на WGSL, написанные вручную.
- Linux на X11 и Wayland (со своим drag-and-drop), Windows, macOS, Android и Android TV, WebAssembly.
Установка
cargo build -p syngui
cargo test -p syngui
cargo run -p widget_gallery_mss # every widget + MSS stylingВидео — за необязательной фичей ffmpeg, для неё нужны dev-библиотеки FFmpeg 7+; без неё с FFmpeg ничего не линкуется. Галерея виджетов собирается и в WebAssembly.
Требования и ограничения
- Шейпинг текста простой: латиница, кириллица и CJK рисуются правильно, но нет кернинга, лигатур, GSUB/GPOS, двунаправленного текста и сложных письменностей (арабской, деванагари).
- Цветные эмодзи рисуются без шейпера: последовательности ZWJ и VS16 могут распасться на отдельные глифы.
- Доступность (AccessKit) есть за необязательной фичей и не проверяется постоянно.
- CI пока нет: сборки под Windows, macOS и Android проверяются вручную.
- API нестабилен, ломающие изменения будут.
Скриншоты
- (открыть в полном размере)

На syngui: страницы DocumentEditor и канбан-доски в synthos - (открыть в полном размере)

На syngui: встроенный терминал с btop внутри synthos - (открыть в полном размере)

На syngui: графики — линии, столбцы, круговая диаграмма, радар - (открыть в полном размере)

На syngui: живая карта клавиатуры в linux-legion
Вайбкодинг в Claude Code
Как сделано
Модель пишет код, тесты и большую часть документации. Цифры производительности измерены на моей машине, а все программы, которые я сделал после, — synthos, syndesktop, linux-legion, ardor-mouse — работают на этом фреймворке, так что его баги находятся в настоящей работе.
Всё здесь написано вайбкодингом. github.com/VitaminDB/syngui