Slint is an open-source declarative GUI toolkit to build native user interfaces for Rust, C++, JavaScript, or Python apps.
Find a file
2020-09-25 09:50:03 +02:00
.cargo Update license header to mention that commertial option are available 2020-08-26 13:23:42 +02:00
.github/workflows Try to allow manual workflow dispatches in the CI 2020-09-23 14:13:25 +02:00
.vscode Added a basic logo 2020-08-11 09:03:56 +02:00
api Fix crash in TextInput when deleting a left-directed selection 2020-09-23 17:33:09 +02:00
docs Document the two way binding 2020-09-24 09:33:08 +02:00
examples Start code egeneration for the two ways binding 2020-09-24 14:37:16 +02:00
helper_crates Update license header to mention that commertial option are available 2020-08-26 13:23:42 +02:00
resources Try to include screenshots of the gallery, tweak the layout a little and update the others 2020-09-11 17:38:35 +02:00
sixtyfps_compiler Start code egeneration for the two ways binding 2020-09-24 14:37:16 +02:00
sixtyfps_runtime Two ways binding with optimized public property in the interpreter 2020-09-25 09:50:03 +02:00
tests Two ways binding with optimized public property in the interpreter 2020-09-25 09:50:03 +02:00
tools Support for named type as property 2020-09-17 13:14:01 +02:00
vscode_extension Add some draft of a VS extension to highlight .60 files 2020-08-12 19:41:35 +02:00
xtask Rework Cargo.toml license checking 2020-09-07 20:38:04 +02:00
.clang-format Reformat public header with Qt's clang-format 2020-05-11 15:20:17 +02:00
.gitignore Improve setup experience with VS code 2020-07-22 09:38:02 +02:00
Cargo.toml Reduce the default set in the workspace 2020-09-22 13:53:13 +02:00
CMakeLists.txt Skeleton for a TODO app 2020-09-07 14:15:27 +02:00
CONTRIBUTING.md Use a shorter rfc issue link 2020-09-03 12:03:35 +02:00
LICENSE.md Try to fix license detection on GitHub 2020-08-31 15:45:52 +02:00
README.md Try to include screenshots of the gallery, tweak the layout a little and update the others 2020-09-11 17:38:35 +02:00
rustfmt.toml Initial commit laying out the structure 2020-05-04 10:49:58 +02:00

SixtyFPS

Build Status

This is the repository of the SixtyFPS project.

Warning: Pre-Alpha

SixtyFPS is still in the early stages of development: APIs will change and important features are still being developed. Do not use this yet in production.

At the moment, it's possible to create user interfaces from C++, Rust, and NodeJS. These can be compiled and shown on Linux, macOS, Windows and in Web Browsers (using WebAssembly).

We aim to support the development of this project through commercial licensing and services. We would love to get feedback from potential future customers or users.

What is SixtyFPS

SixtyFPS is a toolkit to efficiently develop fluid graphical user interfaces for any display: embedded devices and desktop applications. We support multiple programming languages, such as Rust, C++ or JavaScript.

Our design goals are:

  • Lightweight: Fit into a few hundred kilobytes of RAM and require little processing power.
  • Straightforward: Programmers and designers should feel productive and be able to enjoy the design and development process. The APIs should be consistent, easy to use, and intuitive, no matter the target language. High-quality documentation should describe the APIs, teach concepts and how to use them.
  • Native: We support many different target platforms, from embedded devices, to desktops, including mobile and web. You should feel at home on each platform; both the user and the developer. The look and feel and experience should match what users expect of an application built for a specific platform.

Demos running in WebAssembly Simulation

Printer Demo Widget Gallery
Screenshot of the Printer Demo Screenshot of the Gallery Demo

Desktop native controls

Windows macOS Linux
Screenshot of the Gallery on Windows Screenshot of the Gallery on macOS Screenshot of the Gallery on Linux

Architecture

An application is composed of the business logic written in Rust, C++, or JavaScript and the .60 user interface design markup, which is compiled to native code.

Architecture Overview

Documentation

SixtyFPS can be used from different frontend languages. Refer to the README of these directories for reference documentation.

The docs folder contains build instructions and internal developer docs.

Supported integration languages

The .60 Language

SixtyFPS comes with a mark-up language that is specifically designed for user interfaces: It provides a powerful way to describe graphical elements, their placement and the flow of data through the different states. At the heart of it are a familar syntax to describe the hierarchy of elements and property bindings. Here's the obligatory "Hello World":

HelloWorld := Window {
    Text {
       text: "Hello, world"
       color: blue;
    }
}

Check out the language reference for more details.

Examples / Demo

All examples and demos are located in the examples folder.

Contributions

Contributions are welcome, in the form of code, bug reports or feedback. As an example we track issues where we specifically seek feedback with an RFC tag. To contribute, please see CONTRIBUTING.md. Due to the dual-licensing nature, contributions require agreeing to a CLA.

License

The software is provided under a dual licensing scheme

  • GNU GPLv3: Open source license ideal for free software.
  • Commercial SixtyFps license: more details to come.

Contact us

Github issues can be used to report public suggestions or bugs.

You can also contact us privately by sending email to info@sixtyfps.io