quvyta-framework
qframe
Un framework en Rust para aplicaciones de terminal. Te da el runtime, un juego de componentes y archivos de tema, iconos e idiomas, con una sola regla visual: la forma nace del color, nunca de corchetes ni caracteres de marco.
cargo add quvyta-frameworkUna aplicación mínima
Datos, una vista que los dibuja, una actualización que los cambia.
El runtime convierte teclas y clics en mensajes y solo vuelve a dibujar cuando algo ha cambiado. El paquete se llama quvyta-framework y su biblioteca qframe, así que el código la importa con use qframe::prelude::*;.
La misma aplicación corre en las pruebas sin terminal alguna: pulsa teclas, haz clic y vuelve a leer la pantalla como texto.
El texto que ve la gente vive en archivos de idioma y se lee con t!("key"); el ejemplo usa cadenas simples para no alargarse. Rust 1.95 o posterior.
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);
}
}
// Las pruebas manejan la misma aplicación sin terminal.
let mut app = Harness::new(Counter::default(), 30, 4);
app.press("tab").press("enter");
assert!(app.screen().contains("Count: 1"));
Qué trae
Todo lo que necesita una aplicación de terminal cuidada.
- Componentes
Botones, listas, árboles, tablas, pestañas, formularios y asistentes, campos de fecha, hora y duración, selectores de archivo y carpeta, menús, avisos, ayudas flotantes, una paleta de comandos, gráficos, vistas de Markdown, código y registro, y una terminal.
- Temas
Iris, Nordic, Amber y Monochrome. Cada color viene del tema, así que una aplicación entera cambia con un solo ajuste.
- Iconos en tres modos
Nerd Font, Unicode simple y ASCII. Cada glifo ocupa exactamente una celda en todos los modos.
- Nueve idiomas
Inglés, turco, alemán, español, francés, portugués de Brasil, ruso, chino simplificado y japonés, para cada componente; las palabras de tu aplicación viven a su lado.
- Teclado y ratón
Cada control responde a los dos, con la misma escala de tonos: en reposo, señalado, con el foco, pulsado.
- Movimiento que susurra
Las duraciones vienen del tema, y la preferencia de menos movimiento se respeta en todas partes.
Cuatro temas
La misma pantalla, en cuatro temas.
Cada color viene del tema, así que una aplicación entera cambia con un solo ajuste. Elige uno abajo y el mismo panel toma sus colores; el interruptor son cuatro botones de opción, sin script alguno.
La vitrina
Una página para cada componente.
Instala la vitrina y ejecuta qframe: cada componente tiene una demo en vivo, su código, una guía y una referencia. Cada imagen de esta página es una de sus pantallas de prueba, dibujada sin terminal.
cargo install quvyta-framework-showcase && qframeDocumentación
Dónde leer más.
- Documentación de la API en docs.rs
Cada elemento público, documentado en inglés.
- El repositorio
La biblioteca, la vitrina y los principios de diseño que hay detrás.