swift-cross-ui
OpenCombine
swift-cross-ui | OpenCombine | |
---|---|---|
3 | 5 | |
487 | 2,647 | |
- | 0.8% | |
8.8 | 4.1 | |
13 days ago | 4 months ago | |
Swift | Swift | |
MIT License | MIT License |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
swift-cross-ui
-
Writing Gnome Apps with Swift
For another SwiftUI-like wrapper, see also https://github.com/stackotter/swift-cross-ui (used by Adawaita to generate widgets, and mentioned in other comments).
The key premise of this approach is to provide a SwiftUI-like declarative wrapper around Gnome functionality. It's unclear what it adds over swift-cross-ui.
SwiftUI itself has growing pains mainly around being on the right thread for processing/updates and getting data binding right.
Blog entries on swift.org or from Apple tend to be little demos that show the happy path, but when discussing new frameworks (like a Gnome wrapper) or platforms (like the recent embedded), I'd like more demonstration that the authors understand and address key issues and will sustain development. Cross-platform UI frameworks get complicated quickly and have a long tail of issues (cf Flutter, Java/Eclipse, et al) that can be blockers for clients/users. For Swift it doesn't help to have multiple concurrency models and obviously different behaviors on apple platforms and Linux (where UI is not officially tested).
-
Mousetrap.jl: a GUI library for Julia and C++ that fully wrap GTK4
Some interesting stuff happening here [1] and here [2] too.
[1] https://github.com/stackotter/swift-cross-ui/tree/main
- SwiftCrossUI - cross-platform SwiftUI-like UI framework built on SwiftGtk
OpenCombine
- How to use OpenCombine framework with Android Studio
-
Combine: Why do you thinkPassthroughSubject is a class?
The OpenCombine implementation of PassthroughSubject does use a lock, and perhaps the objects needed to be a class to make sure that lock didn't get moved/duplicated.
-
Any good source on how to understand Combine framework? I'm really having a hard time grasping its concepts.
I have three books on the topic but don't think any of them are that wonderful. One thing that helped a little bit was reading through the OpenCombine source.
- OpenCombine: Open-source implementation of Apple's Combine
-
How would you model this situation where I want to use a custom property wrapper but also want @Published functionality?
Here is an open-source implementation of the @Published property wrapper, it could put you on the right track for getting the same functionality with your @UserDefault wrapper: https://github.com/OpenCombine/OpenCombine/blob/master/Sources/OpenCombine/Published.swift
What are some alternatives?
OpenSwiftUI - WIP — OpenSwiftUI is an OpenSource implementation of Apple's SwiftUI DSL.
PromiseKit - Promises for Swift & ObjC.
Mousetrap.jl - Finally, a GUI Engine made for Julia
RxSwift - Reactive Programming in Swift
CImGui.jl - Julia wrapper for cimgui
ReSwift - Unidirectional Data Flow in Swift - Inspired by Redux
Tokamak - SwiftUI-compatible framework for building browser apps with WebAssembly and native apps for other platforms
ReactiveCocoa - Cocoa framework and Obj-C dynamism bindings for ReactiveSwift.
SwiftGtk - A Swift wrapper around gtk-3.x and gtk-4.x that is largely auto-generated from gobject-introspection
ReactKit - Swift Reactive Programming.
swift-gif - Cross-platform GIF encoder and decoder for Swift
SignalKit - SignalKit is a reactive Swift framework with focus on clean and readable API.