Awesome
Owlkettle
Freshly brewed user interfaces.
Owlkettle is a declarative user interface framework based on GTK. It is written in Nim.
Here is an example for a simple counter app. When you click on the "+" Button, the counter increments.
import owlkettle
viewable App:
counter: int
method view(app: AppState): Widget =
result = gui:
Window:
title = "Counter"
defaultSize = (200, 60)
Box(orient = OrientX, margin = 12, spacing = 6):
Label(text = $app.counter)
Button {.expand: false.}:
text = "+"
style = [ButtonSuggested]
proc clicked() =
app.counter += 1
brew(gui(App()))
The code above will result in the following application:
<img alt="Counter Application" src="docs/assets/introduction.png" width="228px">Owlkettle also supports building libadwaita apps.
To enable libadwaita, import owlkettle/adw
and change the last line to adw.brew(gui(App()))
.
Installation
Owlkettle requires GTK 4 to be installed on your system. You can install it by running:
dnf install gtk4-devel libadwaita-devel
on Fedoraapt install libgtk-4-dev libadwaita-1-dev
on Ubuntupacman -S mingw-w64-x86_64-gtk4 mingw-w64-x86_64-libadwaita
on Windows' MSYS2- Checkout the installation docs for more information about the MSYS2 setup
$ nimble install owlkettle
Check out the installation guide for further instructions.
Documentation
You can find a reference of all widgets in docs/widgets.md.
A tutorial for building a simple Todo application can be found here.
Additional examples can be found here.
A reference of all supported libadwaita widgets can be found in docs/widgets_adwaita.md.
<!-- If you want to cross compile checkout [docs/cross_compiling.md](docs/cross_compiling.md). A guide for migrating from owlkettle 1.x.x to 2.0.0 [is available here](docs/migrating_1_to_2.md). -->License
Owlkettle is licensed under the MIT license.
See LICENSE.txt
for more information.