Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/AparokshaUI/adwaita-swift
This project has moved to https://git.aparoksha.dev/aparoksha/adwaita-swift - A framework for creating user interfaces for GNOME with an API similar to SwiftUI
https://github.com/AparokshaUI/adwaita-swift
adwaita gnome gtk libadwaita linux swift swiftui
Last synced: 2 months ago
JSON representation
This project has moved to https://git.aparoksha.dev/aparoksha/adwaita-swift - A framework for creating user interfaces for GNOME with an API similar to SwiftUI
- Host: GitHub
- URL: https://github.com/AparokshaUI/adwaita-swift
- Owner: AparokshaUI
- License: mit
- Archived: true
- Created: 2023-09-12T04:14:12.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2024-10-17T18:56:49.000Z (3 months ago)
- Last Synced: 2024-10-20T04:35:50.884Z (3 months ago)
- Topics: adwaita, gnome, gtk, libadwaita, linux, swift, swiftui
- Language: Swift
- Homepage: https://aparokshaui.github.io/adwaita-swift/
- Size: 3.96 MB
- Stars: 822
- Watchers: 12
- Forks: 16
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE.md
Awesome Lists containing this project
README
> [!IMPORTANT]
>
> **This project has moved. You can find it [here](https://git.aparoksha.dev/aparoksha/adwaita-swift).**
>
> The decision is based on [this article](https://sfconservancy.org/GiveUpGitHub/).
>
> Thanks to [No GitHub](https://codeberg.org/NoGitHub) for the badge used below.
>
> [![No GitHub](https://nogithub.codeberg.page/badge.svg)](https://sfconservancy.org/GiveUpGitHub/)
Adwaita for Swift
_Adwaita_ is a framework for creating user interfaces for GNOME with an API similar to SwiftUI.
The following code:
```swift
struct Counter: View {@State private var count = 0
var view: Body {
HStack {
Button(icon: .default(icon: .goPrevious)) {
count -= 1
}
Text("\(count)")
.title1()
.frame(minWidth: 100)
Button(icon: .default(icon: .goNext)) {
count += 1
}
}
}}
```Describes a simple counter view:
![Counter Example][image-1]
More examples are available in the [demo app][1].
## Table of Contents
- [Goals][2]
- [Installation][4]
- [Usage][5]
- [Thanks][6]## Goals
_Adwaita_’s main goal is to provide an easy-to-use interface for creating GNOME apps. The backend should stay as simple as possible, while not limiting the possibilities there are with [Libadwaita][7] and [GTK][8].
If you want to use _Adwaita_ in a project, but there are widgets missing, open an [issue on GitHub][9].
Find more information about the project's motivation in [this blog post](https://www.swift.org/blog/adwaita-swift/).
## Installation
### Dependencies
#### FlatpakIt is recommended to develop apps inside of a Flatpak.
That way, you don't have to install Swift or any of the dependencies on your system, and you always have access to the latest versions.
Take a look at the [template repository](https://github.com/AparokshaUI/AdwaitaTemplate).
This works on Linux only.#### Directly on System
You can also run your apps directly on the system.
If you are using a Linux distribution, install `libadwaita-devel` or `libadwaita` (or something similar, based on the package manager) as well as `gtk4-devel`, `gtk4` or similar.
On macOS, follow these steps:
1. Install [Homebrew][11].
2. Install Libadwaita (and thereby GTK 4):
```
brew install libadwaita
```### Swift Package
1. Open your Swift package in GNOME Builder, Xcode, or any other IDE.
2. Open the `Package.swift` file.
3. Into the `Package` initializer, under `dependencies`, paste:
```swift
.package(url: "https://github.com/AparokshaUI/Adwaita", from: "0.1.0")
```## Usage
I recommend using the [template repository](https://github.com/AparokshaUI/AdwaitaTemplate) as a starting point.
Follow the [interactive tutorial](https://aparokshaui.github.io/adwaita-swift/tutorials/table-of-contents) or [read the docs](https://aparokshaui.github.io/adwaita-swift/documentation/adwaita) in order to get to know _Adwaita for Swift_.
## Thanks
### Dependencies
- [XMLCoder][18] licensed under the [MIT license][19]
- [Levenshtein Transformations](https://github.com/david-swift/LevenshteinTransformations) licensed under the [MIT license](https://github.com/david-swift/LevenshteinTransformations/blob/main/LICENSE.md)### Other Thanks
- The [contributors][20]
- The auto-generation of widgets is based on [Swift Cross UI](https://github.com/stackotter/swift-cross-ui)
- [SwiftLint][21] for checking whether code style conventions are violated
- The programming language [Swift][22][1]: Tests/
[2]: #goals
[4]: #installation
[5]: #usage
[6]: #thanks
[7]: https://gnome.pages.gitlab.gnome.org/libadwaita/doc/1-latest/index.html
[8]: https://docs.gtk.org/gtk4/
[9]: https://github.com/AparokshaUI/Adwaita/issues
[10]: https://github.com/AparokshaUI/Libadwaita
[11]: https://brew.sh
[12]: user-manual/GettingStarted.md
[13]: user-manual/Basics/HelloWorld.md
[14]: user-manual/Basics/CreatingViews.md
[15]: user-manual/Basics/Windows.md
[16]: user-manual/Basics/KeyboardShortcuts.md
[17]: user-manual/Advanced/CreatingWidgets.md
[18]: https://github.com/CoreOffice/XMLCoder
[19]: https://github.com/CoreOffice/XMLCoder/blob/main/LICENSE
[20]: Contributors.md
[21]: https://github.com/realm/SwiftLint
[22]: https://github.com/apple/swift
[23]: https://github.com/SourceDocs/SourceDocs[image-1]: Icons/Counter.png
[image-2]: Icons/Demo.png