2024-03-27 18:06:36 -04:00

90 lines
2.7 KiB
Markdown

# Hello World
![The "HelloWorld" app][image-1]
This is a beginner tutorial. We will create a simple "Hello, world!" app using _Adwaita_.
## Create the Swift Package
1. Open your terminal client and navigate to a directory you want to create the package in (e.g. `~/Documents/`).
2. Create a new folder for the package using `mkdir HelloWorld`.
3. Enter the newly created folder using `cd HelloWorld`.
4. Run `swift package init --type executable` for creating a new Swift package.
5. Open the Swift package. If you are using GNOME Builder, click on `Select a Folder…` in the view that appears after opening Builder and open the `HelloWorld` folder.
## Add the Dependency
1. Open the `Package.swift` file.
2. Add the following line of code after `name: "HelloWorld",`:
```swift
dependencies: [.package(url: "https://github.com/AparokshaUI/Adwaita", from: "0.1.1")],
```
3. Add the dependency to the executable target:
```swift
targets: [
// Targets are the basic building blocks of a package, defining a module or a test suite.
// Targets can depend on other targets in this package and products from dependencies.
.executableTarget(
name: "HelloWorld",
dependencies: [.product(name: "Adwaita", package: "Adwaita")]
),
]
```
4. On macos you may need to set the platform version. Add the following after `name: "HelloWorld",`:
```swift
platforms: [.macOS(.v10_15)],
```
## Create the App
1. Navigate to `Sources/main.swift`.
2. An app that uses the _Adwaita_ framework has a structure that conforms to the `App` protocol. The `scene` property returns one or more windows which provide content for display. An `@main` attribute marks it as the entry point of the app.
Replace `print("Hello, world!")` by your first app:
```swift
import Adwaita
@main
struct HelloWorld: App {
let id = "io.github.david_swift.HelloWorld"
var app: GTUIApp!
var scene: Scene {
Window(id: "content") { _ in
Text("Hello, world!")
.padding()
}
}
}
```
## Test the App
1. Run the executable Swift package (in GNOME Builder, press the play button, on the command line, use `swift run`).
You can see that one important component of a window in GNOME is missing: The header bar.
## Add a Header Bar
1. If you add another view inside of the `Window`'s body, the views get aligned vertically:
```swift
import Adwaita
@main
struct HelloWorld: App {
let id = "io.github.david_swift.HelloWorld"
var app: GTUIApp!
var scene: Scene {
Window(id: "content") { _ in
// Add the header bar:
HeaderBar.empty()
Text("Hello, world!")
.padding()
}
}
}
```
2. Run the app.
[image-1]: ../../Icons/HelloWorld.png