Project file and permissions

zrnapp.toml says who the app is and how to build it. Permissions are declarations only for now: nothing enforces them.

zrnapp.toml

This is what zrn new "Notes" --lang python writes:

[app]
id = "io.github.you.notes"
name = "Notes"
version = "0.1.0"
summary = "Notes for ztOS"
author = ""
licence = "MIT"
icon = "icon.svg"
categories = ["Utility"]
permissions = []

[build]
lang = "python"
entry = "main.py"
include = ["*.py"]

For C and C++ [build] has lang and sources = ["main.c"]. Rust has lang = "rust" and its Cargo.toml, whose zrnui dependency is a path into your copy of the SDK.

FieldRule
idReverse-DNS with three or more parts, lower case. Never changes. Also the Wayland app_id and desktop id. Pass the same id to App in your code
versionSemantic. Higher than any version already in the store
name, summary, author, licence, iconAll needed by the store. Licence is an SPDX id
homepage, categoriesShown in the app list and the store
permissionsSee below

A bad id stops the build and tells you the fix:

zrn: error: .../zrnapp.toml: id 'badid' is not valid
zrn: fix: use reverse-DNS with at least three parts (io.github.you.app) or zrn-name for Zerone Laboratories' apps

Permissions

Gap: declared, not enforced

An app can do what its user can do, whatever this list says. Moderators read the list and ask about each one. Enforcing it with bubblewrap or Landlock is planned in DESIGN.md's Round 2. Declare honestly now, because that is what gets reviewed.

NameMeans
network, audio, camera, location, bluetoothThe hardware or network
notifications, backgroundShowing notifications, running when not in front
phone, contacts, messagesPersonal data and calls
files.music, files.pictures, files.documents, files.downloadsThose folders

What goes in the package

zrn pack turns the project into a manifest, zexec.json. From zrn info on the app above:

{
 "arch": "any",
 "built": { "by": "zrn 0.1.0", "lang": "python" },
 "categories": [ "Utility" ],
 "entry": "app/main.py",
 "icon": "icon.svg",
 "id": "io.github.you.notes",
 "licence": "MIT",
 "min_ztos": "0.1",
 "name": "Notes",
 "permissions": [],
 "runtime": "python3",
 "summary": "Notes for ztOS",
 "version": "0.1.0",
 "zexec": 1,
 "zrnui": "0.1"
}
        417  zexec.json
        345  app/main.py
        207  icon.svg

The store's CI adds source, which holds the repo and commit. bundles is set when libzrnui is inside. arch is aarch64, x86_64 or any.

Licences

libzrnui and the bindings are LGPL-2.1-or-later, so an app under any licence can link them. The zrn tools are GPL-2.0-or-later. Examples and templates are MIT, so what zrn new gives you is yours. The bundled fallback font, Selawik, is SIL OFL 1.1. Segoe UI and Segoe MDL2 Assets come from the system and are not in the SDK or on this site.

Checked against zrn-sdk commit ea16771. Pictures are real renders of code that compiled. Source and proof.