GUIs mit Rust
Bei der Programmierung von GUIs im
Retained Mode
werden typischerweise Referenzen auf Datenstrukturen gehalten, die sowohl zum Lesen
als auch zum Verändern genutzt werden:
- zwischen GUI-Komponenten in Parent/Child-Hierarchien
- zwischen GUI-Komponenten einerseits, und Event-Behandlung sowie Datenmodell andererseits
In Safe Rust wird dies durch das Ownership-Modell und
den Borrow Checker verhindert.
Alternativen:
GUI-Libraries für Rust
Aktiv entwickelte, von Rust aus nutzbare GUI-Libraries sind:
- im Immediate Mode:
- im Retained Mode:
egui
Chancen:
- einfaches Programmier-/Datenmodell (Immediate Mode)
- im Reactive Mode wird UI Code dabei nur während Animationen oder User Events ausgeführt
- einfache Anbindung/Integration von/in Plattformen
- unterstützt WebAssembly
Risiken:
- der Busfaktor ist ungefähr 1. Der Hauptautor
verwendet es aber in seinem Startup Rerun, mit mehreren Mitarbeitern.
- es kann schwierig oder unmöglich sein, gewünschtes Verhalten oder Layout umzusetzen
- ruckeliges Layouting beim Ändern der Fenstergröße
- nur eingeschränktes bzw. umständliches Rendering:
- als Fill sind nur Farben möglich, keine Muster oder Gradienten
- Gradienten müssen als Mesh generiert werden
- als Stroke sind nur Farben möglich, keine
Muster oder Gradienten
- Line Cap, Line Join können nicht parametrisiert werden
- Dash Patterns müssen explizit
generiert werden
- es gibt keine Bezierkurvenzüge, sie müssen
stückweise in lineare PathShape
umgewandelt
werden
- die Widgets haben kein natives Aussehen und Verhalten
- insbesondere native Menüs werden nicht unterstützt
Iced
Iced wird von Kraken gesponsort, um damit
Cryptowatch Desktop zu entwickeln.
Eine kommende Version von Pop!_OS's COSMIC Desktop soll
auf Iced basieren.
Chancen:
Risiken:
- keine Unterstützung für:
- Multiline Text Felder
- Tabellen Widget
- Tab Focussing
- mehrere Fenster
- Layers
- der Busfaktor ist ungefähr 1
- die Widgets haben kein natives Aussehen und Verhalten
Slint
Slint wird von 2 ehemaligen Qt-Entwicklern geschrieben.
Chancen:
Risiken:
- es steht unter GPL3 bzw. einer teuren kommerziellen Lizenz
- die Widgets haben kein natives Aussehen und Verhalten
GUI-Applikationen, die in Rust geschrieben sind
alert-after, Backup GUI, epilys/kitkat, HexoSynth, Inlyne, Rusty Shadertoy Browser, Servo, Way Cooler- mit Dioxus: Easy-Release, Ebou, Floneum, rusl, TwitVault, Uplink
- mit Druid: arthmis/image-viewer, ASCII-d, Calenda.rs, cam, derekdreery/image-viewer, fragment, grpc-client, GTFS Manager, jack-mixer, Kielip, Kiro Synth, Kondo, Lapce, nonepad, Pando, Pollendina, Psst, Quantum Chess, Runebender, Scribl, solplan-rust, Sprite, sudoku_rust, Synthesizer IO, Xi Win, Zeitig
- mit egui: apt-decoder, binocle, Blackjack, canviewer-rs, Caricare, CarTunes, carveout, ccaccounting, ChatGPT-rs, chip8_rust, claui, Companion of the Avatar, cowbump, dashboard, Dattorro reverb VST plugin, Deadliner, DeepGliss, DFU Buddy, dockeye, epick, epomo, Fearless-NES, Festival, FLP Abyss Player, Foresight Mining Software Corporation, funcially, FunUTD, Fuzzy Drone Controller, GameGirl, GBemulator, Glyphana, Gossip, grapher, Hacker Newsfeed, harptabber, Headlines, Hexerator, Hobogo, Hyperspeedcube, keyboard-heatmap, KissCam, Klask, Ladder, Laser Simulator, Loqui, Magnet Wallet, Malakal, mCubed, MFEKglif, Midi and Virtual Book jukebox Player, Minty, MITM Proxy, Mori, mqttV, NESImg, netstrat, Nodus, Nuance, oculante, Optical Flow Processing Stack, Pend, PickPicPack, pid-balancer, Postsack, PpdEditor, Puffin, pw-viz, Rerun, rgis, rusl, Rust Logic Simulator, Rust-vJoy-Manager, Rusty AutoClicker, Rusty Hub, serial-monitor-rust, Silicate, Simp, SIMple-Electronics, Space Engineers Calculator, SPV, STOPER, STV, sudoku-solver, SysEx Drop, Tarsila, tinyrss, Translator, vocode, YClass
- mit Electron: Ferrum, Finda
- mit GTK+: Amberol, Authenticator-rs, Blackbody, Czkawka, Done, Eww, Findex, Firmware Manager, Fractal, Fragments, gerb, Hotwire, keyboard-configurator, Kubernetes log viewer, NewsFlash, pinephone-gtk-rs-starter, Popsicle, Rnote, Shortwave, Solanum, SongRec, Szyszka
- mit Iced: Airshipper, Ajour, Bathtub, Beacon, Borderlands 3 Save Editor, Corroded Monitor, Cryptowatch Desktop, enclone visual, ENSnano, ESLauncher2, FastOTP, Halloy, IceCHIP8, icy_term, Lembas, Linkage, Ludusavi, Neothesia, OctaSine, offline-chess-puzzles, Onagre, Open Vehicle Diagnostics, PWDuck, RAB, Range Trainer, rusl, Series Troxide, SlimeVR Wrangler, SMMDB Client, Sniffnet, Spectrogram, StableView, tf2-launcher, TolStack, TypeTest, Töörö Editor, Universal Android Debloater GUI, ytdlp-gui
- mit imgui: NDCell, nes-rust, Papercraft, Rustarok, Sailor, Search, xprite
- mit sciter: Calligrapher AI, Pippette, RenegadeX Launcher, temps-lite
- mit Slint: cargo-ui, Chiptrack, ImageSieve, Moiré, Raccoin, rusl, Viewer for Slint
- mit Tauri: Alexandria, BS Redis Desktop Client, Clash Verge, Collie, CRust, Flying Carpet, Graviton, Just Run My Debugger!, Kadium, lencx/ChatGPT, Lodestone, mdSilo, mediarepo, Mr Tagger, N-Link, NoFWL, Orange, Piano Trainer, Pointless, Pot, Pretty Clean, rdpFX, Recut, Spacedrive, Spaceman, Spicy Launcher, Spyglass, SquirrelDisk, Tauri Yewprint desktop app, Tiger, Time Machine Inspector, typstudio, Upscale-rs, Verve, Wikit, Wirefish, Xplorer, Yaki
Alle Angaben ohne Gewähr • Home • Kontakt