GUIs mit Rust
Im Retained Mode werden üblicherweise mehrere Referenzen auf die
selben Daten gehalten (häufig sogar wechselseitig), und sowohl zum Lesen, als auch zum Verändern genutzt:
- zwischen Widgets und Datenmodell
- zwischen Parent- und Child-Widgets
In (Safe) Rust ist dies, aufgrund des Ownership-Modells bzw.
des Borrow Checkers, nicht (ohne Weiteres) möglich.
Alternativen:
GUI-Libraries für Rust
Aktiv entwickelte, mit Rust nutzbare GUI-Libraries sind:
- im Immediate Mode:
- im Retained Mode:
egui
Chancen:
- Die Integration mit neuen Plattformen ist einfach.
- Das Programmiermodell ist einfach (Immediate Mode).
- Im Reactive Mode wird UI-Code nur während Animationen oder User-Events ausgeführt.
- Funktionalität:
- Accessibility
- Drag n Drop
- Layout:
- Tab Focussing
- WebAssembly-Unterstützung
- Widgets:
Risiken:
- Die Widgets haben kein natives Aussehen und Verhalten.
- Fehlende Funktionalität:
- Autokorrektur
- Native Menüs
- Das Relayouting beim Ändern der Fenstergröße ist ruckelig.
- Es gibt nur ein 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
- Es kann schwierig oder unmöglich sein, gewünschtes Verhalten, Aussehen oder Layout umzusetzen.
- Der Busfaktor ist ungefähr 1. Der Hauptautor
verwendet es aber in seinem Startup Rerun, mit mehreren Mitarbeitern.
GPUI
GPUI wurde speziell für den GUI-Texteditor
Zed entwickelt.
Chancen:
- Praktikabel mit vermutlich langfristiger Nutzbarkeit, da GPUI in einer prominenten Applikation (Zed) verwendet wird
und deren Entwickler eine kommerzielles Interesse haben.
- Funktionalität:
Risiken:
- Die Widgets haben kein natives Aussehen und Verhalten.
- Zur Zeit noch enge Kopplung an das Zed-Repository.
- Suboptimales Textrendering auf LoDPI-Displays
- Wenig Dokumentation vorhanden.
- Fehlende Funktionalität:
- Accessibility
- Autokorrektur
- Tab Focussing
- WebAssembly-Unterstützung
- Widgets:
Iced
Iced wurde von Kraken gesponsort, um damit
Kraken Desktop zu entwickeln.
Eine kommende Version von Pop!_OS's COSMIC Desktop soll
auf Iced basieren.
Roadmap
Chancen:
Risiken:
- Die Widgets haben kein natives Aussehen und Verhalten.
- Fehlende Funktionalität:
- Accessibility
- Autokorrektur
- Layers
- Tab Focussing
- Widgets:
- Performance: derzeit wird nach jedem Event die Applikation komplett neu gerendert.
- Wenig Dokumentation
- Häufige Brüche in der API
- Der Busfaktor ist ungefähr 1.
Slint
Slint wird von 2 ehemaligen Qt-Entwicklern geschrieben.
Chancen:
- Funktionalität:
- Accessibility
- Layout:
- Multiline Text Input
- Tab Focussing
- WebAssembly-Unterstützung
- Widgets:
Risiken:
- Die Widgets haben kein natives Aussehen und Verhalten.
- Fehlende Funktionalität:
- Die GUIs werden nicht in Rust, sondern in einer DSL entwickelt.
- Slint steht nur unter GPL3 oder einer teuren kommerziellen
Lizenz zur Verfügung.
GUI-Applikationen, die in Rust geschrieben sind
alert-after, HexoSynth, Inlyne, Rusty Shadertoy Browser, Sprite
- mit Dioxus: Easy-Release, Ebou, Floneum, Port Manager, TwitVault, Uplink, wasm-explorer
- mit Druid: ASCII-d, cam, Kiro Synth, Kondo, Psst
- mit egui: Actuate, afx, AGI PIC Viewer, Andromeda, apt-decoder, Babel Player, binocle, BoquilaHUB, bucksaw, canviewer-rs, Caricare, CarTunes, carveout, ccaccounting, ChatGPT-rs, ChatImproVR, chip8_rust, Circuit simulator, Commonmark Viewer, Companion of the Avatar, cowbump, cron-habit-tracker, Cuprous Logic Simulator, Daedalus molecular viewer, Damus Notedeck, dashboard, Dattorro reverb VST plugin, Deadliner, DeepGliss, Desk Agent, DeskVision, DFU Buddy, egui_brew, Ellama, Ephemeris Explorer, epick, evo, Fearless-NES, Festival, fluxfox, Foresight Mining Software Corporation, funcially, FunUTD, Fuzzy Drone Controller, Gaia Maker, GameGirl, GBemulator, Glitch, Glyphana, Gossip, grapher, GraphPU, Hacker News Reader, Hacker Newsfeed, harptabber, Headlines, Hexerator, Hobogo, Hydrate, Hyperspeedcube, icy_term, IcyDraw, Interactive PDF Analysis, Kaspa NG, keyboard-heatmap, Kiorg, KissCam, kmpeek, Kotoist, Laser Simulator, Legion RGB Control, LibreCDJ, Liquid CAD, lldbui, Loqui, Luminol, Magnet Wallet, MakerPnP, maps, MartyPC, MFEKglif, microCeption, Midi and Virtual Book jukebox Player, NanoMeters, NESImg, Netpurr, netstrat, ntsc-rs, objdiff, oculante, Oklch Color Picker, Optical Flow Processing Stack, Peng, Penny Pilot, Phichain, pic-fluids, PickPicPack, pid-balancer, PlasCAD, Postsack, pubsubman, Puffin, pw-viz, RDFGlance, Rerun, rgis, rPack egui, ruffle_desktop, Rust-vJoy-Manager, Rusty AutoClicker, RustyChaosCraftor, s-rack, Sam, serial-monitor-rust, Servo, Silicate, Simple Renamer, SIMple-Electronics, simplekanainput, Simplez Machine, Simuverse, Snow, Space Engineers Calculator, space_editor, STV, sudoku-solver, Symbiants, Synth-mod, SysEx Drop, Talon, Tarsila, Translator, Tritium, trophy-lodge, Truncate, tsyncs, Tuner-1000, Turing Machine, TVIS, txgraph, UTTT, vocode, Walksnail OSD Tool, Web Value Tracker, YClass
- mit Electron: Ferrum, Finda
- mit Floem: Lapce
- mit Flutter: Save Our Secrets
- mit GPUI: Coop, Drakkar VFX, Gpui Based Calculator, GPUI Calculator, GPUI List examples, GPUI TODO App, Helix gpui, Hummingbird, Kallax, Longbridge Pro, Loungy, Memory Match Game, Muzak, Ngurra, PGUI, Zed
- mit GTK+: Amberol, Authenticator-rs, Blackbody, Czkawka, Done, Eww, Findex, Firmware Manager, Fractal, Fragments, gerb, Hotwire, keyboard-configurator, NewsFlash, noaa-apt, pinephone-gtk-rs-starter, Popsicle, Rnote, Shortwave, Solanum, SongRec, Szyszka
- mit Iced: Airshipper, Amphitheatre Desktop, Bash's TF2 Monitor, Beacon, BlurThing, Borderlands 3 Save Editor, Corroded Monitor, Cryo Cooler Controller, Dynasty, enclone visual, ENSnano, Gauntlet, Halloy, Holodeck, Icebreaker, IceCHIP8, Iced Material Icon Browser, Iced minesweep-rs, Iced Soundboard, iced_receipts, Iced_Solitaire, jstation-controller, Kraken Desktop, Linkage, Ludusavi, Maple //, My Hacker News Reader, NADI IDE, Neothesia, OChat, OctaSine, offline-chess-puzzles, Onagre, Pathfinder, pigg, Pikeru, pk_editor, PumpBin, PWDuck, Range Trainer, Resonate-Oxide, ruxguitar, Series Troxide, SlimeVR Wrangler, Sniffnet, Spectrogram, StableView, tf2-launcher, Töörö Editor, Universal Android Debloater GUI, ViewSkater, Vimini, XMODITS, ytdlp-gui, Ziplocator
- mit imgui: NDCell, nes-rust, Papercraft, Rustarok, Sailor, Search, xprite
- mit Qt: LightkeeperRM
- mit Ribir: PoleStar
- mit Slint: cargo-ui, Chiptrack, codevis-gui, DiSPuTe, ImageSieve, Krokiet, Raccoin, Rotor, Rusty Weather, Slint Minesweeper, Stardew Valley Mod Manager, Tomotroid, Viewer for Slint
- mit Tauri: Alexandria, BS Redis Desktop Client, Collie, CRust, Flying Carpet, GG, GitButler, Graviton, Just Run My Debugger!, Kadium, lencx/ChatGPT, Lodestone, mdSilo, mediarepo, Mr Tagger, N-Link, NeoHtop, NoFWL, Orange, Piano Trainer, Pointless, Pot, Pretty Clean, RapidRAW, rdpFX, Recut, Spacedrive, Spaceman, Spicy Launcher, Spyglass, SquirrelDisk, Tauri Yewprint desktop app, Tiger, Time Machine Inspector, typstudio, Upscale-rs, Verve, Wikit, Wirefish, Xplorer, Yaak API Client
- mit Xilem: minesweeper
Alle Angaben ohne Gewähr
• Home
• Kontakt