quvyta-framework
qframe
Um framework em Rust para aplicativos de terminal. Ele dá o runtime, um conjunto de componentes e arquivos de tema, ícones e idiomas, com uma única regra visual: a forma nasce da cor, nunca de colchetes ou caracteres de moldura.
cargo add quvyta-frameworkUm aplicativo mínimo
Dados, uma vista que os desenha, uma atualização que os muda.
O runtime transforma teclas e cliques em mensagens e só redesenha quando algo mudou. O pacote se chama quvyta-framework e a biblioteca, qframe, então o código a importa com use qframe::prelude::*;.
O mesmo aplicativo roda nos testes sem terminal nenhum: aperte teclas, clique e leia a tela de volta como texto.
O texto que as pessoas veem pertence aos arquivos de idioma e é lido com t!("key"); o exemplo usa cadeias simples para ficar curto. Rust 1.95 ou mais novo.
use qframe::prelude::*;
#[derive(Default)]
struct Counter {
count: i32,
}
#[derive(Clone)]
enum Msg {
Increment,
}
impl App for Counter {
type Msg = Msg;
fn update(&mut self, msg: Msg) -> Command<Msg> {
match msg {
Msg::Increment => self.count += 1,
}
Command::none()
}
fn view(&self, ui: &mut View<'_, Msg>) {
ui.column(|ui| {
ui.add(Text::new(format!("Count: {}", self.count)));
ui.add(Button::new("Add one").variant("primary").on_press(Msg::Increment));
})
.gap(1);
}
}
// Os testes conduzem o mesmo aplicativo sem terminal.
let mut app = Harness::new(Counter::default(), 30, 4);
app.press("tab").press("enter");
assert!(app.screen().contains("Count: 1"));
O que vem com ele
Tudo o que um aplicativo de terminal cuidadoso precisa.
- Componentes
Botões, listas, árvores, tabelas, abas, formulários e assistentes, campos de data, hora e duração, seletores de arquivo e pasta, menus, avisos, dicas, uma paleta de comandos, gráficos, vistas de Markdown, código e log, e um terminal.
- Temas
Iris, Nordic, Amber e Monochrome. Cada cor vem do tema, então um aplicativo inteiro muda com um único ajuste.
- Ícones em três modos
Nerd Font, Unicode simples e ASCII. Cada glifo ocupa exatamente uma célula em todos os modos.
- Nove idiomas
Inglês, turco, alemão, espanhol, francês, português do Brasil, russo, chinês simplificado e japonês, para cada componente; as palavras do seu aplicativo ficam ao lado.
- Teclado e mouse
Cada controle responde aos dois, com a mesma escala de tons: em repouso, sob o cursor, com o foco, pressionado.
- Movimento que sussurra
As durações vêm do tema, e a preferência por menos movimento é respeitada em todo lugar.
Quatro temas
A mesma tela, em quatro temas.
Cada cor vem do tema, então um aplicativo inteiro muda com um único ajuste. Escolha um abaixo e o mesmo painel assume as cores dele; o seletor são quatro botões de opção, sem script nenhum.
A vitrine
Uma página para cada componente.
Instale a vitrine e rode qframe: cada componente tem uma demonstração ao vivo, seu código, um guia e uma referência. Cada imagem desta página é uma das telas de teste dela, desenhada sem terminal.
cargo install quvyta-framework-showcase && qframeDocumentação
Onde ler mais.
- Documentação da API no docs.rs
Cada item público, documentado em inglês.
- O repositório
A biblioteca, a vitrine e os princípios de design por trás delas.