73 lines
2.2 KiB
Markdown
73 lines
2.2 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",`:
|
|
```
|
|
dependencies: [.package(url: "https://github.com/AparokshaUI/Adwaita", from: "0.1.1")],
|
|
```
|
|
|
|
## 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
|