Skip to content
forked from slint-ui/slint

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.

License

Notifications You must be signed in to change notification settings

giannissc/sixtyfps

Repository files navigation

SixtyFPS

This is the monolithic repository of the SixtyFPS project.

What is SixtyFPS

SixtyFPS is a toolkit to efficiently develop fluid graphical user interfaces and embed them in different programming language environments. Our design goals are

  • Lightweight: Fit into a few hundred kilobytes of RAM and require little processing power.
  • Straightforward: Programmers and designers should feel feel productive and enjoy the design and development process.
  • Intuitive APIs The APIs should be idiomatic, easy to use and intuitive, for each supported target language. Excellent documentation should describe the APIs, teach concepts and how to use them most efficiently.
  • Native: We support many platforms. From embedded devices, to desktop, including mobile and web. One should feel at home on each platform. Both the user and the developer. The appearance and look and feel should match was is expected of an application build for this platform.
Printer Demo Widget Gallery
Screenshot of the Printer Demo Screenshot of the Gallery Demo

Status

SixtyFPS is still in the early stages of development. APIs can and will change, important features are still missing.

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

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.

C++ Library

Rust Crate

NodeJS bindings

The .60 DSL

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

Todo

Contributions

Contributions are welcome. To contribute, please see CONTRIBUTING.md. Contributions are done under 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.

About

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.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Rust 94.1%
  • C++ 3.8%
  • TypeScript 0.7%
  • CMake 0.6%
  • JavaScript 0.4%
  • HTML 0.2%
  • Python 0.2%