Hello, GUI
In this tutorial, we will create a simple graphical user interface (GUI) application that displays a message.
Prerequisites
Create a new project
We will be starting from the hello-world
project we created in the previous tutorial.
Add the GUI library
First, we need to add the GUI library to the project. Open the manifest.json
file in the project directory and add the karm-ui
library to the requires
field:
{
"$schema": "https://schemas.cute.engineering/stable/cutekit.manifest.component.v1",
"id": "hello-world",
"type": "exe",
"description": "Greets the world",
"requires": [
"karm-sys",
"karm-ui"
]
}
Write the source code
Update the main.cpp
file in the project directory to create a text view with the message "Hello, GUI!".
#include <karm-sys/entry.h>
#include <karm-ui/app.h>
#include <karm-ui/input.h>
#include <karm-ui/view.h>
Async::Task<> entryPointAsync(Sys::Context &ctx) {
// Create a text view with the message "Hello, GUI!"
auto app = Ui::text("Hello, GUI!");
// Run the app
co_return Ui::runApp(ctx, app);
}
Build and run
Build and run the project:
./skift.sh builder run hello-world
You should see a window with the message "Hello, GUI!".
Centering the text
You might have noticed that the text is not centered in the window. To center the text, we can use the center
function:
#include <karm-sys/entry.h>
#include <karm-ui/app.h>
#include <karm-ui/input.h>
#include <karm-ui/view.h>
Async::Task<> entryPointAsync(Sys::Context &ctx) {
// Create a text view with the message "Hello, GUI!" and center it
auto app = Ui::text("Hello, GUI!") | Ui::center();
// Run the app
co_return Ui::runApp(ctx, app);
}
If you build and run the project again, you should see the text centered in the window.
Conclusion
Congratulations! You have created your first GUI application for skiftOS
Going further
Karm UI provides many more features for creating graphical user interfaces. You can explore the Karm UI documentation to learn more about the available components and how to use them.