quvyta
Idioma: Español

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-framework
La vitrina en 25 segundos, grabada por sus propias pruebas: el panel de ejemplo en marcha pasa por los temas Nordic, Amber y Monochrome, y luego la paleta de comandos abre la página de pestañas y va de la demo en vivo a su código.

Una 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.

Tema
La vitrina con el tema Iris, en el mismo panel: una línea de CPU, medidores de recursos, una barra por servicio, distintivos de estado y un reloj grande
Iris: los colores de la familia, y los de este sitio.
La vitrina con el tema Nordic, en el mismo panel: una línea de CPU, medidores de recursos, una barra por servicio, distintivos de estado y un reloj grande
Nordic: azules fríos.
La vitrina con el tema Amber, en el mismo panel: una línea de CPU, medidores de recursos, una barra por servicio, distintivos de estado y un reloj grande
Amber: tonos cálidos de principio a fin.
La vitrina con el tema Monochrome, en el mismo panel: una línea de CPU, medidores de recursos, una barra por servicio, distintivos de estado y un reloj grande
Monochrome: grises de principio a fin, el color solo para el estado.

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 && qframe

Documentación

Dónde leer más.