Skip to content
ShiftPane
Documentation

manifest.json

Every field of a widget’s manifest.

manifest.json says what a widget is and what it may touch. The desktop app checks it when it loads a widget, and the gallery checks it on upload.

JSON
{
  "id": "gpu-ring",
  "name": "GPU ring",
  "description": "GPU load as a ring, with the last minute below it",
  "version": "1.0.0",
  "author": "your-github-login",
  "license": "MIT",
  "repository": "https://github.com/your-github-login/gpu-ring",
  "categories": ["system"],
  "minAppVersion": "0.5.0",
  "sizes": ["small", "medium"],
  "permissions": {
    "sources": ["gpu"],
    "actions": [],
    "local": [],
    "network": [],
    "secrets": []
  },
  "config": []
}

Fields

FieldRequiredWhat it is
idYesLowercase-kebab-case, at most 64 characters. Unique in the gallery; some, like pc-stats and clock, are reserved.
nameYesAt most 48 characters.
descriptionNoAt most 280 characters. The gallery's one-line summary.
versionYesSemver, such as 1.0.0. Each upload has to be higher than the last.
authorYesYour GitHub login.
licenseYesAn SPDX id of an OSI-approved license.
repositoryNoWhere the source lives.
categoriesYesAny of system, dev, productivity, media, finance, weather, fun, other.
minAppVersionYesThe oldest ShiftPane the widget works with.
refreshSecondsNoSeconds between collector runs, 1 to 86,400. Leave it out for widgets with no collector.
sizesYesOne or more of small, medium, large.
permissionsNoWhat it may touch. See Permissions.
configNoSettings the user fills in. See below.

Permissions

FieldHolds
sourcesSystem sources it reads
actionsActions its buttons fire
localApps on this PC or network, as host:port
networkInternet hosts its collector may fetch: a hostname such as api.github.com, or one leading wildcard such as *.example.com
secretsNames in UPPER_SNAKE_CASE, such as GITHUB_TOKEN

Config fields

Each has a key (camelCase), a label, an optional help and required, and a type:

TypeExtra fields
stringdefault
numberdefault, min, max
booleandefault
locationCity search; saves JSON text containing label, latitude, longitude, timezone
datetimeDate and optional time; saves an ISO timestamp with an explicit offset
selectoptions (a list of value and label), default

Keys have to be unique within a widget.

location and datetime require ShiftPane 0.6.0. Location search uses Open-Meteo and requires geocoding-api.open-meteo.com in permissions.network. The user must select a result. Date-only targets mean midnight at the start of that day in the PC timezone. The saved offset fixes the instant; timezone changes do not move it. Invalid local times are rejected; repeated times choose the earlier occurrence.