adwaita.docc/Adwaita.md
2024-04-25 18:30:49 +02:00

166 lines
3.5 KiB
Markdown

# ``Adwaita``
_Adwaita for Swift_ is a framework for creating user interfaces for GNOME with an API similar to SwiftUI.
## Overview
Write user interfaces in a declarative way.
As an example, the following code defines a _view_ (more information: ``View``).
```swift
struct Counter: View {
@State private var count = 0
var view: Body {
HStack {
Button(icon: .default(icon: .goPrevious)) {
count -= 1
}
Text("\(count)")
.style("title-1")
.frame(minWidth: 100)
Button(icon: .default(icon: .goNext)) {
count += 1
}
}
}
}
```
A view can be implemented in different ways, the following screenshot showing an example.
![Screenshot of the counter app](Counter.png)
## Goals
_Adwaita for Swift_'s main goal is to provide an easy-to-use interface for creating apps for the GNOME ecosystem.
An article about the project's motivation is available on the [website of the Swift programming language](https://www.swift.org/blog/adwaita-swift/).
## Installation
### Dependencies
#### Flatpak
It 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](https://brew.sh).
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")
```
## Template repository
It is recommended to develop apps on Linux inside a Flatpak.
Find more information in the [template repository](https://github.com/AparokshaUI/AdwaitaTemplate).
## Topics
### Tutorials
- <doc:Table-of-Contents>
### Basics
- <doc:CreatingViews>
- <doc:Windows>
- <doc:KeyboardShortcuts>
### Advanced
- <doc:CreatingWidgets>
- <doc:PublishingApps>
### Views
- ``ActionRow``
- ``AlertDialog``
- ``Avatar``
- ``Banner``
- ``Bin``
- ``Box``
- ``Button``
- ``ButtonContent``
- ``Carousel``
- ``CenterBox``
- ``CheckButton``
- ``Clamp``
- ``ComboRow``
- ``EntryRow``
- ``ExpanderRow``
- ``FlowBox``
- ``ForEach``
- ``Form``
- ``FormSection``
- ``HStack``
- ``HeaderBar``
- ``Label``
- ``LevelBar``
- ``LinkButton``
- ``List``
- ``ListBox``
- ``Menu``
- ``NavigationSplitView``
- ``NavigationView``
- ``Overlay``
- ``OverlaySplitView``
- ``PasswordEntryRow``
- ``Picture``
- ``Popover``
- ``PreferencesGroup``
- ``PreferencesPage``
- ``PreferencesRow``
- ``ProgressBar``
- ``ScrolledWindow``
- ``ScrollView``
- ``SearchBar``
- ``SearchEntry``
- ``SpinRow``
- ``Spinner``
- ``SplitButton``
- ``StatusPage``
- ``SwitchRow``
- ``Text``
- ``ToastOverlay``
- ``Toggle``
- ``ToggleButton``
- ``ToolbarView``
- ``ViewStack``
- ``ViewSwitcher``
- ``VStack``
- ``WindowTitle``
### Windows
- ``AboutWindow``
- ``FileDialog``
- ``Window``
### Menus
- ``MenuButton``
- ``MenuSection``
- ``Submenu``