Skip to content
Browse the docs

Start a new app

Copy the template into a new repository and rename the crate, QML module, app ID, desktop file, notification file and binary.

  1. Copy the template directory to the new app's repository.

  2. Rename, by search and replace in every file, and rename the files that carry the name:

    What Template value Where
    Crate and library telamon-app-template, telamon_app_template Cargo.toml, CMakeLists.txt
    QML module URI net.eterneon.telamon.apptemplate CMakeLists.txt, main.cpp
    App ID, desktop file net.eterneon.telamon.apptemplate main.cpp, src/lib.rs, data/
    Name and repository name: "Telamon App", repo: "telamon-framework" app! in src/lib.rs
    Notification file data/telamon-apptemplate.notifyrc named telamon- plus the last part of the app ID; its DesktopEntry= and IconName= are the app ID
    Binary name telamon-app-template CMakeLists.txt, main.cpp
    Optional telamon_backend_new, the telamon_app C++ namespace src/lib.rs, main.cpp, src/backend.rs
  3. In Cargo.toml, take telamon-framework-ui from git, pinned to a release tag (the comment there shows the line), and add telamon-framework-system or telamon-framework-flatpak only if the app needs them:

    telamon-framework-ui = { git = "https://github.com/EternalCoder454/atlas-framework", tag = "v2.0.0" }

    The template's own Cargo.toml uses path = "../crates/..." dependencies, because it sits in the framework's checkout; replace them.

  4. Give the app's RPM Requires: telamon-ui and BuildRequires: telamon-ui with >= X.Y.Z, the same version as ui: in the app! call in src/lib.rs (the template says 1.3.0). Keep the two equal. See Compatibility.

  5. Add properties and invokables to src/backend.rs, pages to qml/, and list each page in QML_FILES in CMakeLists.txt.

  6. Run the framework's checks in the app's CI: tools/lint-app.sh <app dir> and tools/check-app-names.sh <app dir>. telamon-preview <page.qml> --out <dir> renders a page in every theme, direction and text size, and exits 1 when QML warned (the framework's tools/README.md has the options).