Create theme packs

Information on how to create theme packs compatible with Muoto. Use the example package as a reference — it includes starter templates for icon-only, font-only, and combined packs (icon-theme/, font-theme/, full-theme/), each with a theme/ asset tree and rpm/*.spec for building with the Sailfish SDK.

For using the app (apply themes, display density, restore), see Using Muoto.

Requisites

  • Sailfish SDK with sfdk on your PATH (often ~/SailfishOS/bin/sfdk)
  • Basic knowledge of the Linux terminal; familiarity with RPM packaging is helpful but not required for the sfdk workflow

Icons, fonts, sounds

Read the page for the part of the theme you are creating, then return here for packaging and release.

  • Icons
  • Fonts
  • Soundsnot supported in current Muoto releases (format kept for reference and migration)

Project layout

Each theme pack project has two top-level directories:

harbour-themepack-mypackage/
├── theme/           ← pack assets (icons, fonts, package file)
└── rpm/
    └── harbour-themepack-mypackage.spec

Place icons and fonts under theme/ (see the icon and font guidelines). The theme/package file holds the human-readable display name (one line). The spec’s %install section copies theme/ into /usr/share/harbour-themepack-mypackage/ at build time.

.spec file

Open rpm/harbour-themepack-mypackage.spec and edit these lines:

  • Name: the name used in the system to identify your package.
  • Version: the version of the package.
  • Release: the issue of the version.
  • Summary: an intelligible name for your package.
  • Vendor: your name or nickname.
  • Packager: your name or nickname and email (optional).
  • URL: your blog or website (optional).
  • description: description for your package.
  • changelog: the changelog of your package.

Notes

  • The package name must start with harbour-themepack-, e.g. harbour-themepack-mypackage.
  • The file theme/package contains the human-readable name of your theme pack, e.g. My theme pack. Keep it on one line.

Building

  1. Fork or copy a template from harbour-themepack-example (icon-theme/, font-theme/, or full-theme/).
  2. Place your assets under theme/ and edit metadata in rpm/*.spec.
  3. Select an SDK build target and run sfdk build (see below).
  4. Publish the resulting RPMS/*.noarch.rpm on OpenRepos.

Select a build target

List installed SDK tooling and available targets:

~/SailfishOS/bin/sfdk tools list

Each target name encodes the Sailfish OS version and CPU architecture, for example SailfishOS-5.0.0.62-armv7hl or SailfishOS-5.0.0.62-armv7hl.default. Pick the target that matches your SDK installation and device (most phones use armv7hl; newer devices may use aarch64). Theme packs are BuildArch: noarch — the target arch only selects which SDK chroot builds the RPM, not the package contents.

Use the exact target string shown by tools list (including a .default suffix if present).

Build commands

From your pack project root:

~/SailfishOS/bin/sfdk config target=SailfishOS-5.0.0.62-armv7hl
~/SailfishOS/bin/sfdk config target   # verify active target
~/SailfishOS/bin/sfdk build

Output: RPMS/harbour-themepack-mypackage-<version>-<release>.noarch.rpm

Optional — install on a connected device via the SDK:

~/SailfishOS/bin/sfdk deploy --sdk

Themepack helper

To resize SVG icons you can use themepack-helper.

Companion app

If you are familiar with the Sailfish SDK, you can use the companion app model. It ships a small Sailfish app alongside the theme pack (icon requests, docs links, translations). Build it with cd companion && sfdk build — see the companion section in the example repo README.

Releasing

You are ready to build and publish. The usual channel is OpenRepos.

In your package description or store notice, tell users to install Muoto from OpenRepos (this app replaces the old Theme pack support / harbour-themepacksupport and UI Themer / sailfishos-uithemer packages). Theme packs must follow the harbour-themepack-* naming convention and the layout described in the guidelines linked above.


Table of contents


This site uses Just the Docs, a documentation theme for Jekyll.