ABCDEFGHIJKLMNOPQRSTUVWXYZAAABACADAEAFAGAHAIAJAKALAMANAOAPAQARASATAUAVAWAXAYAZBABB
1
EGUICushyIcedMakePadUIFloemViziaFreyaZngNotesPaxNotesSlintYewRelm4TkFlutterCruxQMetaObjectRibir
2
Url
https://github.com/emilk/egui
https://crates.io/crates/znghttps://www.pax.dev/
https://github.com/slint-ui/slint/tree/master/api/rs/slint
https://yew.rs/https://relm4.org/
https://peterlane.codeberg.page/rstk/
https://github.com/redbadger/crux
https://ribir.org/
3
Repo
https://github.com/khonsulabs/cushy
https://github.com/iced-rs/iced/tree/master/examples
https://github.com/makepad/makepad
https://github.com/lapce/floem
https://github.com/vizia/vizia
https://github.com/marc2332/freya
https://github.com/zng-ui/zng
https://github.com/paxengine/pax
https://github.com/slint-ui/slint
https://github.com/yewstack/yew
https://codeberg.org/peterlane/rstk/
https://github.com/fzyzcjy/flutter_rust_bridge
https://github.com/redbadger/crux
https://github.com/woboq/qmetaobject-rs
https://github.com/RibirX/Ribir
4
Docshttps://cushy.rs/v0.4.0/guide/
https://book.iced.rs/index.html
https://makepad.notion.site/Makepad-Architecture-v1-1-e7937c8893074cb79f687a792b5e7495
https://docs.rs/floem/latest/floem/
https://book.vizia.dev/
https://book.freyaui.dev/index.html
https://zng-ui.github.io/doc/zng/index.html
https://docs.slint.dev/latest/docs/rust/slint/
https://relm4.org/book/stable/introduction.html
https://oooutlk.github.io/tk/intro.html
https://docs.flutter.dev/https://ribir.org/docs/introduction/
5
Intro video
https://www.youtube.com/@ectonDev
https://www.youtube.com/watch?v=XrR4VCKB0cQ
https://www.youtube.com/watch?v=rC4FCS-oMpg
https://www.youtube.com/watch?v=crI_raloHgo
https://youtu.be/WBcv4V-whHk
https://www.youtube.com/watch?v=cWCZms92-1g&t=5s
6
Status
Active, Less experimental than others
Active, ExperimentalActiveActive, Experimental
Primary driver is Lapce which intends to switch to Xilem
ExperimentalYesYesExperimental for DesktopYesUnmaintained (archived repo)YesYesAlpha
7
Runtimewinitwgpu, winitwgpu/winitOwn / Nativeskia+(winit|baseview)WebrenderPax-runtimeCustomwinit/gpu
8
FocusNative/WebDesktop appsSimple/toy desktop apps.Desktop appsDesktop appsDesktop/Mobile/WebWeb-style appsEmbeddedDesktop is not ready.Web appsApp core, not UI
9
Mode/Architecture
Immediate modeReactiveELMImmediate mode (sort-of)ReactiveReactive (lens)Reactive (dioxus)Reactive (?)
10
LicenseMIT/ApacheMIT/ApacheMITMITMITMITMITPaid?Confusing/misleading FAQMIT
11
TestsVery bad`cargo test` runs 0 testsVery bad`cargo test` runs 0 testsSome
12
occurences of `#[test]`
31
But some are actually for the GUI!
744 (excluding `lib` folder)Mostly untested1278899101
13
Coverage
Very badVery badVery badVery badVery bad
14
No. of Dependencies for example
300+268Tour85293widget gallery275widget gallery476ui420-540`window` and `multi`Gallery113TodoMVC
15
Contributors
4736Tiny community.221Fairly active community in discord41Only 5 active forks, can't find any examples on github with a 'makepad-widgets' cargo dependency5028Small community, but fairly active222641014
16
Github Dependents
17968
https://github.com/emilk/egui/network/dependents
22
https://github.com/khonsulabs/cushy/network/dependents
17
Year created
2018
856bbf4dae4a69693a0324da34e8b0dd3754dfdf
202320192021Initial commit on 2021/09/172019
18
tabbed-document-ui example url
https://github.com/hydra/egui-tabbed-document-ui-example
https://github.com/hydra/cushy/tree/tabbed-document-ui-example-with-elm/examples/tabbed-document-ui
https://github.com/hydra/iced/tree/tabbed-document-ui-example/examples/tabbed_document_ui
https://github.com/hydra/makepad/tree/tabbed-document-ui/examples/tabbed_document_ui
https://github.com/hydra/floem/tree/tabbed-document-ui/examples/tabbed-document-ui
https://github.com/hydra/vizia/blob/tabbed-document-example/examples/tabbed_document.rs
19
Native file-picker
NoHas exampleYesvia rfdYesMaybeSee FileDialogYesNo, use rfdYesNo
20
Native error dialogs
NoYesvia rfdYesNoYesNo
21
Window control (title, full screen, focus, minimize, drag)
Minimal (size, icon, resize)SomeYesfocus, full-screen, etc.No
22
Multi-window
YesYesYesSee 'multiwindow' exampleNo
23
Image support
YesYesYesYesYesYesYesGood?
24
SVG support
Yesvia egui_extrasMaybeNo examplesYesYesYesMaybeUses webrender, but no example found.
25
Markdown support
YesNoYes288 depsMaybeIncompleteNoYesNoYes??
26
ClipboardYesYesYesYesctrl+c/x/v works in string/text widgetYessee 'shader_editor' example
27
Localization/Internationalization
YesIn-progress
See https://github.com/khonsulabs/cushy/issues/187
See https://github.com/khonsulabs/cushy/pull/226
NoNoNoNot on roadmap.YesCalled i10nYesYes??
28
Visual editor
NoNoNoNot yetNoNoNoNoYesPax Create (Commercial), Pax DesignerNoNo
29
Responsive layout
YesBut see below.YesYesYesYesYesYesYes
30
Keyboard navigation
Yesa bit funkyYesVery goodBadOn roadmapNoYessome issues with focus in lists and drop down. incorrect keys used for section, etc.SomeDoesn't behave well in widget gallery exampleNoGood
31
Keyboard control (shortcuts, etc)
YesSee 'keymap' example.
32
Dynamic views/containers/stacks
YesYesYesYessee `src/views/dyn_*.rs`Not explicitlySee implementations of List/TabView/etc.
33
Event system
NoMaybeYes for widgetsYes
34
Custom events
N/ANo
35
Components/Widgets
MinimalMinimalhttps://docs.rs/floem/latest/floem/widgets/index.html#functionsGoodGoodManySee zng-wgt-* cratesMinimalSee pax-std components.None!
https://docs.flutter.dev/reference/widgets
36
ButtonYesYesYesYesYesYesYesYesYes
37
Toggle buttons (e.g. 'Bold' on/off)
Not sure
38
System menus
YesNoNoOn roadmapNoThere's Menu and MenuBarNot 'native', but they exist.Nouse 'muda' crateYesNo
39
Context menus
YesNoOn roadmapNoYesMaybe
40
Text label
YesYesYesYesYesYesYesYes
41
SliderYesYesYesYes
But clicking left/right doesn't work as expected
YesYesYesexample in 'text' exampleYesYesYes
42
RadioYesYesYesYesYesYesYesYesYesYes
43
Drop-down/Pop-up
YesCalled ComboBoxNoPlannedYesaka 'pick_list'YesYesYesSee also 'PickList', which has an arrow.YesYesYesYes
44
Typing to searchNoNoSee 'pick_list' example.NoNoNoNo
45
Combobox
NoNoNoYesNoYesNo
46
Typing into Combo to searchYesSee 'combo_box' example.YesNo
47
Lists/Tables
YesYesNoYesSimple and EnhancedLists onlyYesYes
48
SortingNoDIY, or use 3rd party crates like egui-data-tablesNoNoYesYes
49
MulticolumnYesNoNoNoYesYes
50
SelectionNoDIY, or use 3rd party crates like egui-data-tables or egui-selectable-table
51
Treeview column in listNoNoNoNoNo
52
TabsYesNobut see `iced_aw` crateYesYessee `src/views/tab.rs`YesYes?Yes
53
with dynamic contentPossible to roll-your-own using a `Switcher`No tab-bar implementation.YesNo, static onlyNo?No example
54
Toolbars
NoNoNoNoNoNo toggle buttonNoBut see ToggleButton and ButtonsNoNo?
55
Resizable
YesYesYesYesYesYes?Yes
56
Tooltip
YesYesNoYessee `src/views/tooltip.rs`YesOn buttons, etc.Yes
57
Treeview
Yes, but not-built-in.No real tree, but it's possible to use collapsible headers.
See also: egui_ltreeview crate
NoYesNoMaybesee file_explorer exampleNo
58
Splitter with Handle
YesNoMaybeSee 'pane_grid' example.LimitedNo dedicated view, but see draggable_sidebar.rs exampleNoNo
59
Documentation
Repo and API only
60
BookNoYesMinimalNoNoYesLimitedYes
61
Architecture overview
A little in the API docs for Widget
MinimalOne page in the book, but only covers user-facing view/update cycleYes, but outdated.Not linked from website.NoYesNoNot in dioxus either
62
Developer friendlyness
63
Discoverability
Pooroften you have to use <something::method>() instead of 'instance.method', but you don't know what 'something' is.Pooroften you have to use <something::method>() instead of 'instance.method', but you don't know what 'something' is.BadUses a DSLOkGoodPoore.g. no macro auto-complete in `rsx!()`, poorly documented properties.BadUses `.slint` DSL.
64
IDE auto-completeYesPure rust, no DSL, but see aboveYesPure rust, no DSLYesPure rust, no DSL, but see aboveNoYesYesNo (though better in dioxus 0.6 apparently)
65
API coherency
BadConfusing. Many ways you can attempt to do something, most resulting in failure. e.g. layout, sense and styling APIs.GoodGood
66
Ease of use / Intuitive API
PoorDespite advertising itself as 'egui aims to be the easiest-to-use Rust GUI library' it is in fact far from easy to use.Mostly very goodPoor
67
Temporal coupling
SomeIt's immediate mode...Nono 'reactive' / 'effects', etc.Some
Unintelligable! (See hooks, use_memo, use_reactive, use_effect, etc)
68
GUI testability
Maybe oksee 'egui_kittest'Somesome examples have testsMaybe okNon existentNon existentPoor?No examples have tests.
69
Disk space (target folder)
7.5GB for tabbed_document_ui
18GB after cargo build and running a few examples.
1.7GB to run the ui_zoo example
Requires over 22GB of free space to run `cargo test`
70
ThoughtsRequires C to build, NO.Mobile/game-centric, not rust
71
Repo-layout
GoodGoodGoodBadContains library + IDE + experimentsGood, with cratesGoodGoodGood
72
Examples
Very goodGoodGoodOkSome real-apps tooGoodGoodSome don't work or are unfinished or contain commented out codeGoodOkMinimalNo UI examples, mostly game/animation/graphic focussed
73
Other observations and issues
74
It's immediate mode, ui code is mixed in with application logic.
Widgets look like 'game/web' widgets, not desktop widgets.
Some issues with text selection when selecting from the rightCannot find DSL documentation via crates/readmes/etcSevere lack of documentation; no details on architecture, views, event system, etc.Immature projectFrustrating developer experience. e.g. 'rules of hooks', panics, router, etc.
75
Lots of real-world appsNo real-world examplesNo good example showing how to structure a non-trivial application into re-usable components/modules, each with their own state.Decent looking widgetsNo 'getting started' guide or book.Lack of documentationBad documentation when it comes to the dioxus framework, no overview of dioxus.
76
UI layout painful and code gets very very nested, very very quickly.
3rd part crates exist for 'css-like' layout, like egui_taffy, but then you'll have 2 pardymes of layout and interop to deal with.
No documentation regarding application state.
Most example simple have a single giant 'Message' enum and single 'state' struct, each with everything bundled togetherwhich does not scale. See 'Tour' example (`enum Message` and `struct Tour` respectively).Codebase feels unfocussed and messy. e.g. `cx_api.rs` has 'cpu_cores`, `begin_video_playback` and `set_key_focus` No documentation for signals or effects.Cancerous 'Data` traitMakes too many assumptions about the knowledge or experience of developers.
77
Default look/feel is nice.Unfinished styling system.Decent amount of widgets and some decent examples, but not easy to find.Severely lacking in documentation.No documentation for layout/sizing/stying.Unable to work out where to store state in a real-world projectExamples are not self contained (no cargo.toml)
78
Very capableVery helpful developers, responsive to feedback.Helpful communityVery unfinished.Rendering issues (odd 1px borders/artifacts)Rendering overflow issues.Minimal or no 'why' or 'what' comments in examples.
79
No task/event/async/threading system, roll-your-ownNice codebaseMuch useless API documentation likely due to enforced documentation linting, often the documentation just repeats the method name, args and return value with little to no useful information. e.g. `widget::diff`Lots of commented out code.Event bleed-through issuesCommunity too small, only a couple of reference projectsBad for rapid prototyping when state is involved.
80
Comprehensive amount of widgetsKey aspects entirely undocumented, e.g. Events and event propogation.Community slow to respond, questions go unanswered for days.Various elements don't behave as expected (lists, drop-down, etc)Various elements don't behave as expected (lists, tabview, popup)Very helpful developers, responsive to feedback.
81
Pain with the '... is not implemented for ...' when building views.Very helpful developers, responsive to feedback.Very helpful developers, responsive to feedback.
82
83
Suitability for complex dynamic desktop apps
Maybe, but much care needs to be taken to structure the applicationBAD, due to tiny community and too-experimental nature.
Passable, but making it looks nice is a lot of work.
Maybe in the future, not now.Passable, unless you need i18nBADBAD
84
85
Overall feeling after attempting to write test case. (A window with multi languages, tool bar (open, new, select language dropdown), tabs, agnostic document container, 'home' content, 'document' with state)Usable.

Requires the use of 3rd party crates for localization/i18n
Definately usable, but missing many widgets.

Was able to add Localization support.
Was able to combine it with an ELM like archicture for user-interactions.
As with other frameworks, managing state is the primary failure point. The non-native looking styling is also a huge time-sink.
Frustrating experience.
Maybe OK in the future, but right now it's unfinished, opaque, and frustrating.Passable.more success than with Vizia or Freya when it came to having state-per-tab.Failed, initially OK, but ultimately frustrating.Failed, initially frustrating, worse with time not better.
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100