Date and time | 2021-01-11T15:00Z |
---|---|
Topic | Initial discussion about a new shared application registration format |
Next Meeting | 2021-01-15T15:00Z |
- @dixonary (Draft launcher and .draft format author).
- @Eeems (Oxide author).
- @LinusCDE (Toltec maintainer).
- @matteodelabre (Toltec maintainer).
- @raisjn (remux author).
We had a high-level discussion about a new application file format. The .draft format is no longer suitable for the more advanced behaviour that we would want to support.
It would be ideal to have a new format ASAP.
- .draft: first format, key-value store
key=value
Q: is this sufficient? Does it need upgrades or replacement, etc?
.draft parser is bad in the original implementation (crashes on unexpected keys)
JSON is hard to parse, relative to other formats like .draft.
Q: will we need .draft and .oxide (or whatever) files forever?
- Minimise difficulty with interoperability
- Easy to read, easy to write
- Hard to break (in the way that json is easy to break!)
- Open-ended and extensible
- Minimise the number of required fields
- Key-value storage, like .draft already has [minimum required]
- Nested storage
- Arrays, or a way of representing multiple values mapped to the same key
- Namespacing for the sake of launcher-specific options
- Construct an entirely new format; officially deprecate .draft and provide an upgrade path for old .draft files to be replaced by new files
- Expand .draft in a backwards-compatible way
- Create a shell-accessible binary file or interoperable (C?) library which parses whatever format
-
.draft format is the old name and (obviously) draft-specific
-
.oxide is the oxide format currently
-
linux uses .desktop
-
.inklet
-
.rmapp has support pending any better suggestions.
-
leave this question open to the community - do you have a better name?
- forward-compatible
- easily parsed with existing library tools
- first party support for arrays, nested data
- can be formalised quickly
- may be less readable than yaml
- requires zero effort from users who do not wish to upgrade their launcher
- An interactive program which queries for values and outputs a complete application specification
- A list-applications binary (or similar) which can output all found applications in all known locations
Current
/etc/draft
/opt/etc/draft
$HOME/.config/draft
/opt/usr/share/applications
New
/usr/share/applications
$HOME/.local/share/applications