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.
| Field | Rule |
|---|---|
id | Reverse-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 |
version | Semantic. Higher than any version already in the store |
name, summary, author, licence, icon | All needed by the store. Licence is an SPDX id |
homepage, categories | Shown in the app list and the store |
permissions | See 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
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.
| Name | Means |
|---|---|
network, audio, camera, location, bluetooth | The hardware or network |
notifications, background | Showing notifications, running when not in front |
phone, contacts, messages | Personal data and calls |
files.music, files.pictures, files.documents, files.downloads | Those 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.