Slint — это набор инструментов декларативного графического пользовательского интерфейса для создания собственных пользовательских интерфейсов для встраиваемых, настольных и мобильных приложений, написанных на Rust, C++, JavaScript или Python.
Название Slint происходит от наших целей дизайна:
Посетите #MadeWithSlint, чтобы просмотреть некоторые проекты, использующие Slint. Мы приглашаем вас использовать Slint и стать частью его сообщества.
Slint находится в активной разработке. Состояние поддержки каждой платформы следующее:
Slint поддерживает навигацию по многим виджетам с помощью клавиатуры, а пользовательские интерфейсы являются масштабируемыми. Имеется базовая инфраструктура для вспомогательных технологий, таких как программы чтения с экрана. Мы понимаем, что необходимо проделать дополнительную работу, чтобы получить лучшую в своем классе поддержку для пользователей с особыми потребностями.
RaspberryPi | СТМ32 | РП2040 |
---|---|---|
Видео Slint на Raspberry Pi | Видео Slint на STM32 | Видео Slint на RP2040 |
Окна | macOS | Линукс |
---|---|---|
Демонстрация принтера | Слайд-головоломка | Энергетический монитор | Галерея виджетов | Демо-версия погоды |
---|---|---|---|---|
Больше примеров и демо в папке примеров.
Пользовательский интерфейс определен на предметно-ориентированном языке, который является декларативным, простым в использовании, интуитивно понятным и предоставляет мощный способ описания графических элементов, их размещения, их иерархии, привязок свойств и потока данных через различные состояния.
Вот обязательный «Hello World»:
export component HelloWorld inherits Window {
width : 400px ;
height : 400px ;
Text {
y : parent .width / 2 ;
x : parent .x + 200px ;
text : "Hello, world" ;
color : blue ;
}
}
Для получения более подробной информации ознакомьтесь с документацией по языку Slint.
Папка примеров содержит примеры и демонстрации, показывающие, как использовать язык разметки Slint и как взаимодействовать с пользовательским интерфейсом Slint на поддерживаемых языках программирования.
Папка docs
содержит гораздо больше информации, включая инструкции по сборке и внутреннюю документацию разработчика.
Обратитесь к README каждого языкового каталога в папке api
:
Приложение состоит из бизнес-логики, написанной на Rust, C++ или JavaScript, и разметки дизайна пользовательского интерфейса .slint
, которая компилируется в собственный код.
Файлы .slint
компилируются заранее. Выражения в .slint
— это чистые функции, которые компилятор может оптимизировать. Например, компилятор может выбрать «встроенные» свойства и удалить те, которые являются постоянными или неизмененными. В будущем мы надеемся сократить время рендеринга на устройствах начального уровня за счет предварительной обработки изображений и текста. Компилятор может определить, что элемент Text
или « Image
всегда находится поверх другого Image
в том же месте. Следовательно, оба элемента могут быть заранее отображены в один элемент, что сокращает время рендеринга.
Компилятор использует типичные этапы компиляции: лексирование, анализ, оптимизацию и, наконец, генерацию кода. Он предоставляет различные серверные части для генерации кода на целевом языке. Генератор кода C++ создает заголовочный файл C++, генератор Rust создает код Rust и так далее. Также включен интерпретатор динамических языков.
Библиотека времени выполнения состоит из механизма, поддерживающего свойства, объявленные на языке .slint
. Компоненты с их элементами, элементами и свойствами размещаются в одной области памяти, чтобы уменьшить выделение памяти.
Механизмы рендеринга и стили настраиваются во время компиляции:
femtovg
использует для рендеринга OpenGL ES 2.0.skia
использует Skia для рендеринга.software
рендерер использует ЦП без каких-либо дополнительных зависимостей. ПРИМЕЧАНИЕ. Когда в системе установлен Qt, стиль qt
становится доступным, используя QStyle Qt для создания виджетов, выглядящих естественно.
У нас есть несколько инструментов, которые помогут в разработке файлов .slint:
--auto-reload
позволяет легко просмотреть ваш пользовательский интерфейс во время работы над ним (когда использование предварительного просмотра LSP невозможно).Пожалуйста, ознакомьтесь с README для редакторов, чтобы получить советы о том, как настроить ваш любимый редактор для хорошей работы со Slint.
Вы можете использовать Slint по любой из следующих лицензий на ваш выбор:
Ознакомьтесь с вариантами лицензирования Slint на веб-сайте и в разделе часто задаваемых вопросов по лицензированию.
Мы приветствуем ваш вклад: в виде кода, отчетов об ошибках или отзывов.
Пожалуйста, ознакомьтесь с нашим отдельным FAQ.
Мы увлечены программным обеспечением — дизайном API, разработкой кроссплатформенного программного обеспечения и компонентами пользовательского интерфейса. Наша цель — сделать разработку пользовательских интерфейсов интересной для всех: от разработчиков Python, JavaScript, C++ или Rust до дизайнеров UI/UX. Мы считаем, что программное обеспечение растет органично, и сохранение его открытого исходного кода — лучший способ поддержать этот рост. Члены нашей команды находятся удаленно в Германии.
Не стесняйтесь присоединяться к обсуждениям Github для общего чата или вопросов. Используйте проблемы Github, чтобы сообщать об общедоступных предложениях или ошибках.
Мы общаемся в нашем Mattermost-инстансе, где вы можете послушать или задать свои вопросы.
Конечно, вы также можете связаться с нами лично по электронной почте [email protected].