Slint é um kit de ferramentas GUI declarativo para construir interfaces de usuário nativas para aplicativos incorporados, desktop e móveis escritos em Rust, C++, JavaScript ou Python.
O nome Slint é derivado dos nossos objetivos de design:
Visite #MadeWithSlint para ver alguns dos projetos usando Slint. Convidamos você a usar o Slint e fazer parte de sua comunidade.
Slint está em desenvolvimento ativo. O estado do suporte para cada plataforma é o seguinte:
Slint oferece suporte à navegação baseada em teclado de muitos widgets e as interfaces de usuário são escalonáveis. A infraestrutura básica para tecnologia assistiva, como leitores de tela, já está instalada. Estamos cientes de que é necessário mais trabalho para obter o melhor suporte possível para usuários com necessidades especiais.
FramboesaPi | STM32 | RP2040 |
---|---|---|
Vídeo do Slint no Raspberry Pi | Vídeo do Slint no STM32 | Vídeo do Slint no RP2040 |
Windows | macOS | Linux |
---|---|---|
Demonstração da impressora | Quebra-cabeça de slides | Monitor de Energia | Galeria de widgets | Demonstração meteorológica |
---|---|---|---|---|
Mais exemplos e demonstrações na pasta de exemplos
A UI é definida em uma linguagem específica de domínio que é declarativa, fácil de usar, intuitiva e fornece uma maneira poderosa de descrever elementos gráficos, seu posicionamento, sua hierarquia, ligações de propriedades e o fluxo de dados através dos diferentes estados.
Aqui está o obrigatório "Hello World":
export component HelloWorld inherits Window {
width : 400px ;
height : 400px ;
Text {
y : parent .width / 2 ;
x : parent .x + 200px ;
text : "Hello, world" ;
color : blue ;
}
}
Para mais detalhes, confira a documentação da linguagem Slint.
A pasta de exemplos contém exemplos e demonstrações, mostrando como usar a linguagem de marcação Slint e como interagir com uma interface de usuário Slint a partir de linguagens de programação suportadas.
A pasta docs
contém muito mais informações, incluindo instruções de construção e documentos internos do desenvolvedor.
Consulte o README de cada diretório de idioma na pasta api
:
Um aplicativo é composto pela lógica de negócios escrita em Rust, C++ ou JavaScript e pela marcação de design da interface do usuário .slint
, que é compilada em código nativo.
Os arquivos .slint
são compilados antecipadamente. As expressões no .slint
são funções puras que o compilador pode otimizar. Por exemplo, o compilador poderia optar por propriedades "inline" e remover aquelas que são constantes ou inalteradas. No futuro, esperamos melhorar o tempo de renderização em dispositivos de baixo custo, pré-processando imagens e texto. O compilador pode determinar que um elemento Text
ou Image
está sempre em cima de outra Image
no mesmo local. Consequentemente, ambos os elementos poderiam ser renderizados antecipadamente em um único elemento, reduzindo assim o tempo de renderização.
O compilador usa as fases típicas do compilador de lexing, análise, otimização e, finalmente, geração de código. Ele fornece diferentes back-ends para geração de código na linguagem de destino. O gerador de código C++ produz um arquivo de cabeçalho C++, o gerador Rust produz código Rust e assim por diante. Um intérprete para linguagens dinâmicas também está incluído.
A biblioteca de tempo de execução consiste em um mecanismo que suporta propriedades declaradas na linguagem .slint
. Os componentes com seus elementos, itens e propriedades são dispostos em uma única região de memória, para reduzir as alocações de memória.
Os backends e estilos de renderização são configuráveis em tempo de compilação:
femtovg
usa OpenGL ES 2.0 para renderização.skia
usa Skia para renderização.software
usa a CPU sem dependências adicionais. NOTA: Quando o Qt é instalado no sistema, o estilo qt
fica disponível, usando o QStyle do Qt para obter widgets com aparência nativa.
Temos algumas ferramentas para ajudar no desenvolvimento de arquivos .slint:
--auto-reload
facilita a visualização de sua UI enquanto você trabalha nela (quando não é possível usar a visualização LSP).Por favor, verifique nosso README de editores para dicas sobre como configurar seu editor favorito para funcionar bem com o Slint.
Você pode usar o Slint sob qualquer uma das seguintes licenças, à sua escolha:
Consulte as opções de licenciamento do Slint no site e as Perguntas frequentes sobre licenciamento.
Agradecemos suas contribuições: na forma de código, relatórios de bugs ou feedback.
Consulte nosso FAQ separado.
Somos apaixonados por software - design de API, desenvolvimento de software multiplataforma e componentes de interface de usuário. Nosso objetivo é tornar o desenvolvimento de interfaces de usuário divertido para todos: desde desenvolvedores de Python, JavaScript, C++ ou Rust até designers de UI/UX. Acreditamos que o software cresce organicamente e mantê-lo em código aberto é a melhor forma de sustentar esse crescimento. Os membros da nossa equipe estão localizados remotamente na Alemanha.
Sinta-se à vontade para participar das discussões do Github para bate-papos gerais ou perguntas. Use os problemas do Github para relatar sugestões públicas ou bugs.
Conversamos em nossa instância Mattermost, onde você pode ouvir ou fazer suas perguntas.
É claro que você também pode entrar em contato conosco em particular por e-mail para [email protected].