Slint est une boîte à outils GUI déclarative permettant de créer des interfaces utilisateur natives pour les applications intégrées, de bureau et mobiles écrites en Rust, C++, JavaScript ou Python.
Le nom Slint est dérivé de nos objectifs de conception :
Visitez #MadeWithSlint pour voir certains des projets utilisant Slint. Nous vous invitons à utiliser Slint et à faire partie de sa communauté.
Slint est en développement actif. L’état de support pour chaque plateforme est le suivant :
Slint prend en charge la navigation au clavier de nombreux widgets et les interfaces utilisateur sont évolutives. L'infrastructure de base pour les technologies d'assistance telles que les lecteurs d'écran est en place. Nous sommes conscients que davantage de travail est nécessaire pour obtenir la meilleure assistance possible pour les utilisateurs ayant des besoins particuliers.
FramboisePi | STM32 | RP2040 |
---|---|---|
Vidéo de Slint sur Raspberry Pi | Vidéo de Slint sur STM32 | Vidéo de Slint sur RP2040 |
Fenêtres | macOS | Linux |
---|---|---|
Démo d'imprimante | Puzzle coulissant | Moniteur d'énergie | Galerie de widgets | Démo météo |
---|---|---|---|---|
Plus d'exemples et de démos dans le dossier exemples
L'interface utilisateur est définie dans un langage spécifique au domaine qui est déclaratif, facile à utiliser, intuitif et fournit un moyen puissant de décrire les éléments graphiques, leur emplacement, leur hiérarchie, les liaisons de propriétés et le flux de données à travers les différents états.
Voici le "Hello World" obligatoire :
export component HelloWorld inherits Window {
width : 400px ;
height : 400px ;
Text {
y : parent .width / 2 ;
x : parent .x + 200px ;
text : "Hello, world" ;
color : blue ;
}
}
Pour plus de détails, consultez la documentation du langage Slint.
Le dossier d'exemples contient des exemples et des démos, montrant comment utiliser le langage de balisage Slint et comment interagir avec une interface utilisateur Slint à partir des langages de programmation pris en charge.
Le dossier docs
contient beaucoup plus d'informations, notamment des instructions de construction et des documents de développement internes.
Reportez-vous au README de chaque répertoire de langue dans le dossier api
:
Une application est composée de la logique métier écrite en Rust, C++ ou JavaScript et du balisage de conception de l'interface utilisateur .slint
, qui est compilé en code natif.
Les fichiers .slint
sont compilés à l'avance. Les expressions du .slint
sont de pures fonctions que le compilateur peut optimiser. Par exemple, le compilateur pourrait choisir d'"incorporer" les propriétés et de supprimer celles qui sont constantes ou inchangées. À l'avenir, nous espérons améliorer le temps de rendu sur les appareils bas de gamme en prétraitant les images et le texte. Le compilateur peut déterminer qu'un élément Text
ou Image
est toujours au-dessus d'une autre Image
au même emplacement. Par conséquent, les deux éléments pourraient être restitués à l'avance en un seul élément, réduisant ainsi le temps de rendu.
Le compilateur utilise les phases typiques du compilateur de lexing, d'analyse, d'optimisation et enfin de génération de code. Il fournit différents back-ends pour la génération de code dans le langage cible. Le générateur de code C++ produit un fichier d'en-tête C++, le générateur Rust produit du code Rust, etc. Un interprète pour les langages dynamiques est également inclus.
La bibliothèque d'exécution se compose d'un moteur qui prend en charge les propriétés déclarées dans le langage .slint
. Les composants avec leurs éléments, éléments et propriétés sont disposés dans une seule région de mémoire, afin de réduire les allocations de mémoire.
Les backends et les styles de rendu sont configurables au moment de la compilation :
femtovg
utilise OpenGL ES 2.0 pour le rendu.skia
utilise Skia pour le rendu.software
utilise le processeur sans dépendances supplémentaires. REMARQUE : lorsque Qt est installé sur le système, le style qt
devient disponible, en utilisant le QStyle de Qt pour obtenir des widgets d'aspect natif.
Nous disposons de quelques outils pour vous aider au développement de fichiers .slint :
--auto-reload
facilite la prévisualisation de votre interface utilisateur pendant que vous travaillez dessus (lorsque l'utilisation de l'aperçu LSP n'est pas possible).Veuillez consulter notre README pour les éditeurs pour obtenir des conseils sur la façon de configurer votre éditeur préféré pour qu'il fonctionne correctement avec Slint.
Vous pouvez utiliser Slint sous l'une des licences suivantes, à votre choix :
Consultez les options de licence Slint sur le site Web et la FAQ sur les licences.
Nous apprécions vos contributions : sous forme de code, de rapports de bogues ou de commentaires.
Veuillez consulter notre FAQ séparée.
Nous sommes passionnés par les logiciels - conception d'API, développement de logiciels multiplateformes et composants d'interface utilisateur. Notre objectif est de rendre le développement d'interfaces utilisateur amusant pour tout le monde : des développeurs Python, JavaScript, C++ ou Rust jusqu'aux concepteurs UI/UX. Nous pensons que les logiciels se développent de manière organique et que les conserver en open source est le meilleur moyen de soutenir cette croissance. Les membres de notre équipe sont situés à distance en Allemagne.
N'hésitez pas à rejoindre les discussions Github pour une discussion générale ou des questions. Utilisez les problèmes Github pour signaler des suggestions ou des bugs publics.
Nous discutons dans notre instance Mattermost où vous êtes invités à écouter ou à poser vos questions.
Vous pouvez bien sûr également nous contacter en privé par e-mail à [email protected].