AccueilActualités informatiqueInterfaces utilisateur graphiques : SixtyFPS-Toolkit de Berlin retravaillé comme Slint

Interfaces utilisateur graphiques : SixtyFPS-Toolkit de Berlin retravaillé comme Slint

Six mois après la présentation de SixtyFPS 0.1, le toolkit pour la création d’interfaces utilisateur graphiques change de nom et s’appelle désormais Slint. Les développeurs derrière le projet écrit en Rust ont publié en parallèle la version 0.2.0, qui étend entre autres l’interaction avec OpenGL.

The artist formerly known as SixtyFPS est une boîte à outils pour le développement multi-plateforme d’applications. Il vise les appareils embarqués, les appareils mobiles et les ordinateurs de bureau. Selon le dépôt GitHub, il ne nécessite que quelques centaines de Ko de RAM et une faible puissance de processeur.

Sommaire

Le nom d’origine du framework est dérivé de la fréquence d’image fluide de 60 images par seconde (Frames Per Second, FPS). Cependant, les développeurs ont dû recevoir plusieurs retours indiquant que les 60 FPS stables étaient désormais dépassés, car la plupart des écrans offrent des taux de rafraîchissement nettement plus élevés.

Le nouveau nom, issu d’une discussion publique sur GitHub, signifie Straightforward, Lightweight, Native Toolkit. Le changement de nom a des répercussions sur les noms des API et des paquets. Les développeurs doivent adapter leur Cargo.toml pour Rust ou leur CMakeLists.txt pour C++.

La plus grande nouveauté technique de la version 0.2.0 est l’option d’utiliser du code OpenGL avant ou après une scène Slint. La page Slint montre pour cela un exemple d’application à l’aspect psychédélique, compilé après WebAssembly et dont le code source se trouve sur GitHub.

Le Toolkit apporte son propre langage de balisage appelé .slint (anciennement .60), qui sert à définir les positions, les couleurs et les contenus. Il s’appuie sur une structure JSON et s’inspire des Cascading Style Sheets. Un Hello World simple se trouve dans le dépôt GitHub :

HelloWorld := Window {
    width: 400px;
    height: 400px;

    Text {
       y: parent.width / 2;
       x: parent.x + 200px;
       text: "Hello, world";
       color: blue;
    }
}

Un compilateur traduit le code de balisage en code Rust ou C++ tout en effectuant des optimisations. Pour l’exécution, l’environnement d’exécution Slint offre une interface pour la conversion des propriétés. Comme backend, il est actuellement possible d’utiliser au choix OpenGL ES 2.0 ou QStyle de Qt.

Le compilateur Slint traduit le code de balisage en code natif qui est exécuté sur le runtime Slint.

(Image : Slint)

Slint offre une connexion à d’autres langages de programmation lors de l’exécution. Actuellement, il existe des API pour Rust, C++ et JavaScript. À long terme, des interfaces devraient être disponibles pour d’autres langages comme Python et Go.

En ce qui concerne les plates-formes cibles, le référentiel GitHub indique que seule la variante embarquée est actuellement terminée. La mise en œuvre pour les ordinateurs de bureau est donc en cours, tandis que la connexion aux systèmes d’exploitation mobiles Android et iOS est encore en suspens sur la liste des choses à faire. Une intégration directe pour le web n’est certes pas prévue, mais le code peut être compilé selon WebAssembly.

Pour l’interaction avec les environnements de développement, il existe une implémentation du Language Server Protocol (LSP), que Codenvy, Microsoft et Red Hat ont publié en 2016 en tant qu’interface indépendante de l’outil entre les langages de programmation et les outils de développement. Cela permet notamment d’utiliser la mise en évidence de la syntaxe et l’autocomplétion dans le code Visual Studio. L’intégration offre également une prévisualisation en direct de l’application.

Les deux développeurs du projet, Oliver Goffart et Simon Hausmann, sont basés à Berlin. Tous deux ont acquis de l’expérience multiplateforme autour du framework Qt. Ils ont été impliqués dans le projet KDE basé sur Qt et ont travaillé chez Trolltech, la mère du framework Qt. Hausmann a acquis de l’expérience dans le domaine des langages de balisage avec Qt QML (Qt Modeling Language) chez Qt Company en tant que développeur principal pour le moteur QtQml.

De plus amples détails sur la boîte à outils UI et le changement de nom de SixtyFPS à Slint sont disponibles sur le blog de Slint. Le code source se trouve sur GitHub. Le toolkit est disponible sous trois licences : Outre la licence GPLv3 pour les projets open source et une variante commerciale, il existe la licence dite Ambassador, qui offre aux « ambassadeurs » qui contribuent à la diffusion du projet une licence libre sans les restrictions de la GPL.

Plus d'articles