Slint ist ein deklaratives GUI-Toolkit zum Erstellen nativer Benutzeroberflächen für eingebettete, Desktop- und mobile Anwendungen, die in Rust, C++, JavaScript oder Python geschrieben sind.
Der Name Slint leitet sich von unseren Designzielen ab:
Besuchen Sie #MadeWithSlint, um einige der Projekte anzuzeigen, die Slint verwenden. Wir laden Sie ein, Slint zu nutzen und Teil seiner Community zu werden.
Slint befindet sich in aktiver Entwicklung. Der Stand der Unterstützung für jede Plattform ist wie folgt:
Slint unterstützt die tastaturbasierte Navigation vieler Widgets und Benutzeroberflächen sind skalierbar. Die grundlegende Infrastruktur für unterstützende Technologien wie Bildschirmlesegeräte ist vorhanden. Wir sind uns bewusst, dass noch mehr Arbeit erforderlich ist, um erstklassigen Support für Benutzer mit besonderen Bedürfnissen zu erhalten.
RaspberryPi | STM32 | RP2040 |
---|---|---|
Video von Slint auf Raspberry Pi | Video von Slint auf STM32 | Video von Slint auf RP2040 |
Windows | macOS | Linux |
---|---|---|
Druckerdemo | Schiebepuzzle | Energiemonitor | Widget-Galerie | Wetterdemo |
---|---|---|---|---|
Weitere Beispiele und Demos im Beispielordner
Die Benutzeroberfläche ist in einer domänenspezifischen Sprache definiert, die deklarativ, einfach zu verwenden und intuitiv ist und eine leistungsstarke Möglichkeit bietet, grafische Elemente, ihre Platzierung, ihre Hierarchie, Eigenschaftsbindungen und den Datenfluss durch die verschiedenen Zustände zu beschreiben.
Hier ist das obligatorische „Hallo Welt“:
export component HelloWorld inherits Window {
width : 400px ;
height : 400px ;
Text {
y : parent .width / 2 ;
x : parent .x + 200px ;
text : "Hello, world" ;
color : blue ;
}
}
Weitere Informationen finden Sie in der Slint Language-Dokumentation.
Der Beispielordner enthält Beispiele und Demos, die zeigen, wie man die Auszeichnungssprache Slint verwendet und wie man mit einer Slint-Benutzeroberfläche aus unterstützten Programmiersprachen interagiert.
Der docs
Ordner enthält viele weitere Informationen, einschließlich Build-Anweisungen und interne Entwicklerdokumente.
Weitere Informationen finden Sie in der README-Datei jedes Sprachverzeichnisses im api
-Ordner:
Eine Anwendung besteht aus der in Rust, C++ oder JavaScript geschriebenen Geschäftslogik und dem .slint
Benutzeroberflächen-Design-Markup, das in nativen Code kompiliert wird.
Die .slint
Dateien werden vorab kompiliert. Die Ausdrücke in der .slint
sind reine Funktionen, die der Compiler optimieren kann. Der Compiler könnte sich beispielsweise dafür entscheiden, Eigenschaften zu „inline“ und diejenigen zu entfernen, die konstant oder unverändert sind. In Zukunft hoffen wir, die Renderzeit auf Low-End-Geräten durch die Vorverarbeitung von Bildern und Text zu verbessern. Der Compiler könnte feststellen, dass ein Text
oder Image
immer über einem anderen Image
an derselben Stelle liegt. Dadurch konnten beide Elemente vorab in ein einziges Element gerendert werden, wodurch die Renderzeit verkürzt wurde.
Der Compiler verwendet die typischen Compilerphasen Lexing, Parsing, Optimierung und schließlich Codegenerierung. Es stellt verschiedene Backends für die Codegenerierung in der Zielsprache bereit. Der C++-Codegenerator erzeugt eine C++-Headerdatei, der Rust-Generator erzeugt Rust-Code und so weiter. Ein Interpreter für dynamische Sprachen ist ebenfalls enthalten.
Die Laufzeitbibliothek besteht aus einer Engine, die in der .slint
Sprache deklarierte Eigenschaften unterstützt. Komponenten mit ihren Elementen, Elementen und Eigenschaften werden in einem einzigen Speicherbereich angeordnet, um die Speicherzuweisung zu reduzieren.
Rendering-Backends und -Stile sind zur Kompilierungszeit konfigurierbar:
femtovg
Renderer verwendet OpenGL ES 2.0 zum Rendern.skia
Renderer verwendet Skia zum Rendern.software
Renderer nutzt die CPU ohne zusätzliche Abhängigkeiten. HINWEIS: Wenn Qt auf dem System installiert ist, wird der qt
Stil verfügbar. Mithilfe des QStyle von Qt können Widgets mit nativem Aussehen erstellt werden.
Wir verfügen über einige Tools, die Sie bei der Entwicklung von .slint-Dateien unterstützen:
--auto-reload
erleichtert die Vorschau Ihrer Benutzeroberfläche, während Sie daran arbeiten (wenn die Verwendung der LSP-Vorschau nicht möglich ist).Bitte lesen Sie in unserer README-Datei für Editoren nach, wie Sie Ihren bevorzugten Editor so konfigurieren, dass er gut mit Slint funktioniert.
Sie können Slint nach Ihrer Wahl unter einer der folgenden Lizenzen verwenden:
Weitere Informationen zu den Slint-Lizenzierungsoptionen finden Sie auf der Website und in den häufig gestellten Fragen zur Lizenzierung.
Wir freuen uns über Ihre Beiträge: in Form von Code, Fehlerberichten oder Feedback.
Bitte beachten Sie unsere separaten FAQ.
Wir haben eine Leidenschaft für Software – API-Design, plattformübergreifende Softwareentwicklung und Benutzeroberflächenkomponenten. Unser Ziel ist es, dass die Entwicklung von Benutzeroberflächen für jeden Spaß macht: vom Python-, JavaScript-, C++- oder Rust-Entwickler bis hin zum UI/UX-Designer. Wir glauben, dass Software organisch wächst und dass die Open-Source-Lösung der beste Weg ist, dieses Wachstum aufrechtzuerhalten. Unsere Teammitglieder sind in Deutschland ansässig.
Nehmen Sie gerne an Github-Diskussionen teil, um sich allgemein zu unterhalten oder Fragen zu stellen. Verwenden Sie Github-Probleme, um öffentliche Vorschläge oder Fehler zu melden.
Wir chatten in unserer Mattermost-Instanz, wo Sie gerne zuhören oder Ihre Fragen stellen können.
Selbstverständlich können Sie uns auch privat per E-Mail an [email protected] kontaktieren.