quvyta
Sprache: Deutsch

quvyta-framework

qframe

Ein Rust-Framework für Terminal-Anwendungen. Es gibt dir die Laufzeit, einen Satz Widgets sowie Theme-, Symbol- und Sprachdateien, mit einer visuellen Regel: die Form entsteht aus Farbe, nie aus Klammern oder Rahmenzeichen.

cargo add quvyta-framework
Das Showcase in 25 Sekunden, von seinen eigenen Tests aufgenommen: das laufende Dashboard-Beispiel durchläuft die Themes Nordic, Amber und Monochrome, dann öffnet die Befehlspalette die Tabs-Seite und wechselt von der laufenden Demo zu ihrem Code.

Eine kleinste Anwendung

Daten, eine Ansicht, die sie zeichnet, ein Update, das sie ändert.

Die Laufzeit macht aus Tasten und Klicks Nachrichten und zeichnet nur neu, wenn sich etwas geändert hat. Das Paket heißt quvyta-framework, seine Bibliothek qframe, im Code also use qframe::prelude::*;.

Dieselbe Anwendung läuft in den Tests ganz ohne Terminal: Tasten drücken, klicken und den Bildschirm als Text zurücklesen.

Text, den Menschen sehen, gehört in Sprachdateien und wird mit t!("key") gelesen; das Beispiel nutzt der Kürze wegen einfache Zeichenketten. Rust 1.95 oder neuer.

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);
    }
}

// Tests steuern dieselbe Anwendung ohne Terminal.
let mut app = Harness::new(Counter::default(), 30, 4);
app.press("tab").press("enter");
assert!(app.screen().contains("Count: 1"));

Was dabei ist

Alles, was eine sorgfältige Terminal-Anwendung braucht.

  • Widgets

    Schaltflächen, Listen, Bäume, Tabellen, Tabs, Formulare und Assistenten, Felder für Datum, Zeit und Dauer, Datei- und Ordnerauswahl, Menüs, Toasts, Tooltips, eine Befehlspalette, Diagramme, Markdown-, Code- und Protokollansichten und ein Terminal.

  • Themes

    Iris, Nordic, Amber und Monochrome. Jede Farbe kommt aus dem Theme, also ändert sich eine ganze Anwendung mit einer Einstellung.

  • Symbole in drei Modi

    Nerd Font, reines Unicode und ASCII. Jede Glyphe ist in jedem Modus genau eine Zelle breit.

  • Neun Sprachen

    Englisch, Türkisch, Deutsch, Spanisch, Französisch, brasilianisches Portugiesisch, Russisch, vereinfachtes Chinesisch und Japanisch, für jede Komponente; die Wörter deiner Anwendung liegen daneben.

  • Tastatur und Maus

    Jedes Element antwortet beiden, mit derselben Tonleiter: ruhend, überfahren, fokussiert, gedrückt.

  • Bewegung, die flüstert

    Die Dauern kommen aus dem Theme, und reduzierte Bewegung wird überall respektiert.

Vier Themes

Derselbe Bildschirm, in vier Themes.

Jede Farbe kommt aus dem Theme, also ändert sich eine ganze Anwendung mit einer Einstellung. Wähle unten eines, und dasselbe Dashboard nimmt seine Farben an; der Schalter sind vier Radioknöpfe, ganz ohne Skript.

Theme
Das Showcase im Theme Iris, auf demselben Dashboard: eine CPU-Sparkline, Ressourcenanzeigen, ein Balken pro Dienst, Statusabzeichen und eine große Uhr
Iris: die Farben der Familie, und die dieser Seite.
Das Showcase im Theme Nordic, auf demselben Dashboard: eine CPU-Sparkline, Ressourcenanzeigen, ein Balken pro Dienst, Statusabzeichen und eine große Uhr
Nordic: kühle Blautöne.
Das Showcase im Theme Amber, auf demselben Dashboard: eine CPU-Sparkline, Ressourcenanzeigen, ein Balken pro Dienst, Statusabzeichen und eine große Uhr
Amber: warme Töne überall.
Das Showcase im Theme Monochrome, auf demselben Dashboard: eine CPU-Sparkline, Ressourcenanzeigen, ein Balken pro Dienst, Statusabzeichen und eine große Uhr
Monochrome: Grautöne überall, Farbe nur für den Status.

Das Showcase

Eine Seite für jede Komponente.

Installiere das Showcase und starte qframe: jede Komponente hat eine laufende Demo, ihren Code, eine Anleitung und eine Referenz. Jedes Bild auf dieser Seite ist einer ihrer Testbildschirme, ohne Terminal gezeichnet.

cargo install quvyta-framework-showcase && qframe

Dokumentation

Wo mehr zu lesen ist.