Package format
An applet package is a zip file named <id>.glimpse.zip. glimpsectl applet package builds it and glimpsectl applet install installs it; Package and share an applet shows both.
Building
glimpsectl applet package [DIR] runs just build in the project directory. The build must put every file the applet needs to run into dist/, including <id>.desktop. glimpsectl then:
- refuses a
dist/holding a different id, or a desktop entry withoutImplements=me.aresa.Glimpse.Applet1andExec; - refuses an
Execof./<file>whendist/<file>does not exist; - refuses a
dist/metadata.toml, which it writes itself; - writes
<id>.glimpse.zipin the current directory, or at--out PATH.
A bare program name in Exec (node, uv) is looked up on PATH of the machine that runs it.
Contents
me.aresa.GlimpseTodo.glimpse.zip
├── metadata.toml
├── me.aresa.GlimpseTodo.desktop
└── applet.mjsmetadata.toml names the id and every other file with its SHA-256:
id = "me.aresa.GlimpseTodo"
[[files]]
path = "me.aresa.GlimpseTodo.desktop"
sha256 = "<64 hex digits>"
[[files]]
path = "applet.mjs"
sha256 = "<64 hex digits>"| Limit | Value |
|---|---|
| Unpacked size of all files | 512 MiB |
metadata.toml | 1 MiB |
Entries, including metadata.toml (checked on install) | 10,000 |
Installing
glimpsectl applet install takes a .glimpse.zip or a project directory, which it builds first. It refuses a package whose files do not match metadata.toml exactly, by name and hash, or whose paths leave the package. Then it:
- copies the files to
~/.local/share/glimpse/applets/<id>/; - writes
~/.local/share/applications/<id>.desktop, with a relativeExec(./todo) made absolute,Pathset to that directory, andX-Glimpse-Installed-By=glimpsectl; - prints a config line to place the applet.
Installing again replaces an earlier glimpsectl install of the same id. It refuses when the directory holds files the earlier install does not list, or when the desktop entry was not written by glimpsectl.
glimpsectl applet uninstall <id> removes the files metadata.toml lists and the desktop entry, and leaves anything else in place.