+++
title = "Adwaita"
description = "Develop beautiful apps following the design guidelines of the GNOME desktop."
date = 2024-10-07
[taxonomies]
tags = ["Linux", "Aparoksha"]
[extra]
featured = true
banner = "Adwaita.png"
+++

Develop beautiful apps following the design guidelines of the GNOME desktop.

Read the <a class="external" href="https://adwaita-swift.aparoksha.dev">documentation</a> to get started or <a class="external" href="https://git.aparoksha.dev/aparoksha/adwaita-swift">browse the code</a>.

## The Backend

The Adwaita backend is based on the <a class="external" href="https://gnome.pages.gitlab.gnome.org/libadwaita/doc/1-latest/">_libadwaita_</a> C API.
libadwaita is used for developing native GNOME apps.

## The Development Environment

It is recommended to develop Libadwaita apps on a Linux system.
Linux is probably available for your device and can be installed alongside Windows or macOS.
I recommend picking a Linux distribution offering a vanilla GNOME experience, such as <a class="external" href="https://fedoraproject.org/de/">Fedora</a> or <a class="external" href="https://vanillaos.org/">VanillaOS</a>.

Now, install <a class="external" href="https://apps.gnome.org/en/Builder/">GNOME Builder</a> via the GNOME Software application.

### Flatpak

<a class="external" href="https://flatpak.org/">Flatpak</a> facilitates the distribution of apps on Linux.
If you decide to use Flatpak already when developing the app, you do not have to install any dependencies on your system.
Simply clone the <a class="external" href="https://git.aparoksha.dev/aparoksha/adwaita-template">template repository</a>, open in GNOME Builder, and run the template app.
Follow the instructions in the readme file to create your own app.

{{ image(url="Environment.png", alt="GNOME Builder and a todo app") }}

## The Design

This backend allows the creation of apps following the <a class="external" href="https://developer.gnome.org/hig/">GNOME Human Interface Guidelines</a>.
The following screenshot serves as an example for GNOME's design language.

{{ image(url="App.png", alt="A native GNOME app called Tuba" transparent=true) }}

## Distribution

The apps can be distributed using Flatpak. The most popular app store is <a class="external" href="https://flathub.org">Flathub</a>.
Read the <a class="external" href="https://adwaita-swift.aparoksha.dev/documentation/adwaita/publishingapps">instructions in the official docs</a>.

## Aparoksha Interoperability
This backend is part of the Aparoksha package. If you use default Aparoksha elements, they will render correctly on GNOME.
You can call platform-specific widgets for GNOME as well.
