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:
|
Accessibility |
Autokorrektur |
Introspection |
Layers |
Multi Windowing |
Tab Focusing |
WebAssembly |
egui |
ja |
nein |
❓ |
ja |
❓ |
ja |
ja |
GPUI |
nein |
nein |
Element Inspector |
❓ |
ja |
ja |
nein |
Iced |
nein |
nein |
Debug Overlay |
❓ |
ja |
nein |
❓ |
Slint |
ja |
nein |
❓ |
❓ |
ja |
ja |
ja |
Widgets
Layout
Diskussion
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.
Risiken:
- Die Widgets haben kein natives Aussehen und Verhalten.
- 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.
- Layout via Taffy
Risiken:
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.
- Das Relayouting beim Ändern der Fenstergröße ist ruckelig.
- Fehlende Funktionalität:
- Wenig Dokumentation
- Häufige Brüche in der API
- Der Busfaktor ist ungefähr 1.
Slint
Slint wurde von 2 ehemaligen Qt-Entwicklern gegründet.
Chancen:
- Die GUI kann sprachunabhängig entwickelt und an Code in C++, Python, Rust und TypeScript angebunden werden.
Risiken:
- Die Widgets haben kein natives Aussehen und Verhalten.
- Die GUIs werden nicht in Rust, sondern in einer DSL entwickelt.
- Das Lizenzmodell.
GUI-Applikationen, die in Rust geschrieben sind
alert-after, gTexViewer, 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, curvefever, 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, Gem Player, Glitch, Glyphana, Gossip, grapher, GraphPU, Hacker News Reader, Hacker Newsfeed, harptabber, Headlines, Hexerator, Hobogo, Hydrate, Hyperspeedcube, icy_term, IcyDraw, Kaspa NG, keyboard-heatmap, Kiorg, KissCam, kmpeek, Kotoist, Laser Simulator, Legion RGB Control, LibreCDJ, Liquid CAD, lldbui, Loqui, Luminol, Magnet Wallet, MakerPnP, maps, MapVas, MartyPC, MFEKglif, microCeption, Midi and Virtual Book jukebox Player, NanoMeters, ncube, NESImg, Netpurr, netstrat, ntsc-rs, objdiff, oculante, Oklch Color Picker, Optical Flow Processing Stack, Ouroboros, Peng, Penny Pilot, Phichain, pic-fluids, PickPicPack, pid-balancer, PlasCAD, PolarsView, Poly Cue Tag Generator, 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, Shelv, 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, Thoth, TinyWiiBackupManager, 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, ui-floem-test
- mit Flutter: Save Our Secrets
- mit GPUI: Coop, Drakkar VFX, Gpui Based Calculator, GPUI Calculator, GPUI List examples, GPUI TODO App, Helix gpui, Hummingbird, Kagi, Kallax, Longbridge Pro, Loungy, Memory Match Game, Ngurra, PGUI, Solitaire vibe coding session, Zed
- mit GTK+: Amberol, Authenticator-rs, Blackbody, Czkawka, Done, Eww, Findex, Firmware Manager, Fractal, Fragments, gerb, Hotwire, keyboard-configurator, Marco, Nett Icon Viewer, 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, Copenhagen Hnefatafl, Corroded Monitor, Cryo Cooler Controller, Dynasty, enclone visual, ENSnano, Flowsurface, Gauntlet, Halloy, Harbor, 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, QuantumLauncher, Range Trainer, Resonate-Oxide, ruxguitar, Sanchaar, Series Troxide, SlimeVR Wrangler, Sniffnet, Spectrogram, StableView, tf2-launcher, Töörö Editor, ui-iced-test, 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, Castle of Focus, Chiptrack, codevis-gui, DiSPuTe, ImageSieve, Krokiet, LibrePCB, N Music, POVVER, Raccoin, Rotor, Rusty Weather, Slint Minesweeper, Stardew Valley Mod Manager, Temporis, Tomotroid, Viewer for Slint, WebSocket Reflector X
- 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, Spicy Launcher, SquirrelDisk, Tiger, Time Machine Inspector, typstudio, Upscale-rs, Verve, Wirefish, Xplorer, Yaak API Client
- mit Xilem: minesweeper, xilem-chess
Alle Angaben ohne Gewähr
• Home
• Kontakt