Slint es un conjunto de herramientas GUI declarativa para crear interfaces de usuario nativas para aplicaciones integradas, de escritorio y móviles escritas en Rust, C++, JavaScript o Python.
El nombre Slint se deriva de nuestros objetivos de diseño:
Visite #MadeWithSlint para ver algunos de los proyectos que utilizan Slint. Te invitamos a utilizar Slint y ser parte de su comunidad.
Slint está en desarrollo activo. El estado de soporte para cada plataforma es el siguiente:
Slint admite la navegación basada en teclado de muchos widgets y las interfaces de usuario son escalables. Ya existe la infraestructura básica para tecnología de asistencia, como lectores de pantalla. Somos conscientes de que se necesita más trabajo para obtener el mejor soporte para usuarios con necesidades especiales.
frambuesapi | STM32 | RP2040 |
---|---|---|
Vídeo de Slint en Raspberry Pi | Vídeo de Slint en STM32 | Vídeo de Slint en RP2040 |
ventanas | macos | linux |
---|---|---|
Demostración de la impresora | Rompecabezas de diapositivas | Monitor de energía | Galería de widgets | Demostración del tiempo |
---|---|---|---|---|
Más ejemplos y demostraciones en la carpeta de ejemplos.
La interfaz de usuario se define en un lenguaje específico de dominio que es declarativo, fácil de usar, intuitivo y proporciona una manera poderosa de describir elementos gráficos, su ubicación, su jerarquía, enlaces de propiedades y el flujo de datos a través de los diferentes estados.
Aquí está el obligatorio "Hola mundo":
export component HelloWorld inherits Window {
width : 400px ;
height : 400px ;
Text {
y : parent .width / 2 ;
x : parent .x + 200px ;
text : "Hello, world" ;
color : blue ;
}
}
Para obtener más detalles, consulte la documentación de Slint Language.
La carpeta de ejemplos contiene ejemplos y demostraciones que muestran cómo utilizar el lenguaje de marcado Slint y cómo interactuar con una interfaz de usuario de Slint desde lenguajes de programación compatibles.
La carpeta docs
contiene mucha más información, incluidas instrucciones de compilación y documentos internos del desarrollador.
Consulte el archivo README de cada directorio de idioma en la carpeta api
:
Una aplicación se compone de la lógica empresarial escrita en Rust, C++ o JavaScript y el marcado de diseño de la interfaz de usuario .slint
, que se compila en código nativo.
Los archivos .slint
se compilan con anticipación. Las expresiones en .slint
son funciones puras que el compilador puede optimizar. Por ejemplo, el compilador podría optar por "incorporar" propiedades y eliminar aquellas que sean constantes o sin cambios. En el futuro esperamos mejorar el tiempo de renderizado en dispositivos de gama baja mediante el preprocesamiento de imágenes y texto. El compilador podría determinar que un elemento Text
o Image
siempre está encima de otra Image
en la misma ubicación. En consecuencia, ambos elementos podrían renderizarse con anticipación en un solo elemento, reduciendo así el tiempo de renderizado.
El compilador utiliza las fases típicas del compilador de lexing, análisis, optimización y finalmente generación de código. Proporciona diferentes backends para la generación de código en el idioma de destino. El generador de código C++ produce un archivo de encabezado C++, el generador Rust produce código Rust, etc. También se incluye un intérprete para lenguajes dinámicos.
La biblioteca en tiempo de ejecución consta de un motor que admite propiedades declaradas en el lenguaje .slint
. Los componentes con sus elementos, elementos y propiedades se disponen en una única región de memoria para reducir las asignaciones de memoria.
Los backends y estilos de renderizado se pueden configurar en tiempo de compilación:
femtovg
utiliza OpenGL ES 2.0 para renderizar.skia
utiliza Skia para renderizar.software
utiliza la CPU sin dependencias adicionales. NOTA: Cuando Qt está instalado en el sistema, el estilo qt
pasa a estar disponible, utilizando QStyle de Qt para lograr widgets de apariencia nativa.
Tenemos algunas herramientas para ayudar con el desarrollo de archivos .slint:
--auto-reload
facilita la vista previa de la interfaz de usuario mientras trabaja en ella (cuando no es posible utilizar la vista previa de LSP).Consulte nuestro archivo LÉAME de editores para obtener consejos sobre cómo configurar su editor favorito para que funcione bien con Slint.
Puede utilizar Slint bajo cualquiera de las siguientes licencias, a su elección:
Consulte las opciones de licencia de Slint en el sitio web y las preguntas frecuentes sobre licencias.
Agradecemos sus contribuciones: en forma de código, informes de errores o comentarios.
Consulte nuestras preguntas frecuentes por separado.
Nos apasiona el software: diseño de API, desarrollo de software multiplataforma y componentes de interfaz de usuario. Nuestro objetivo es hacer que el desarrollo de interfaces de usuario sea divertido para todos: desde desarrolladores de Python, JavaScript, C++ o Rust hasta diseñadores de UI/UX. Creemos que el software crece orgánicamente y mantenerlo de código abierto es la mejor manera de sostener ese crecimiento. Los miembros de nuestro equipo están ubicados remotamente en Alemania.
No dudes en unirte a las discusiones de Github para charlas generales o preguntas. Utilice problemas de Github para informar sugerencias o errores públicos.
Charlamos en nuestra instancia de Mattermost, donde puede escucharnos o hacer sus preguntas.
Por supuesto, también puede contactarnos de forma privada por correo electrónico a [email protected].