2024-03-29 11:29:57 +01:00

2.8 KiB

Hello World

The "HelloWorld" app

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")],
  1. Add the dependency to the executable target:
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")]
    ),
]
  1. On macOS you may need to set the platform version. Add the following after name: "HelloWorld",:
platforms: [.macOS(.v10_15)],

Create the App

  1. Navigate to Sources/main.swift. On macOS, you may have to change the file name to something else, e.g. HelloWorld.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:
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:
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()
        }
    }

}
  1. Run the app.