For ease-of-inclusion this should probably be handled by internal code, and provided as a set of properties on lfm_embed::ctx::model::Data
.
There are 3 main kinds of fonts we should support.
There is no good way to expose a typed enum with the current wizard UI, and the resulting UI from this could allow added user flexibility.
?font=foo
corresponds directly with * { font-family: 'foo' }
in the CSS.?font=foo&include-font=https://example.com/font.otf
will additionally append @font-face { font-family: 'foo' src: url('https://example.com/font.otf') }
.?include-stylesheet
allows for general stylesheet inclusion. It may be specified N times.font: object
null if no font params specified.font.name: string
contains ?font
font.additional_css
will contain the ?include-font
css, as well as the proxied contents of ?include-stylesheet
.Of the crates currently relied on, the following appear too feature-packed should be replaced with simpler internal code, to reduce binary size.
Support for a limited form of (optional) watermaking. It would be up to the themes to include it.
?watermark
specifies opting-in to the watermark.LFME_WATERMARK_MANDATORY: 0|1
forces a watermark if 1
. The main instance will not use this, but alternate instances may.LFME_WATERMARK_TEXT: string
should contain the name of the specific instance, or a tagline.LFME_WATERMARK_IMG: string
should contain a link to an image. The rendered size of this image is at the discretion of a given theme, but it should be around 32x32, and have an aspect ratio no greater than 1:2.LFME_WATERMARK_URL: string
should contain a link to the host, or whoever else the watermarker wishes.watermark: object
null, unless (LFME_WATERMARK_TEXT || LFME_WATERMARK_IMG || LFME_WATERMARK_URL) && (?watermark || LFME_WATERMARK_MANDATORY)
. Should be interpreted as whether to render a watermark.watermark.text
= LFME_WATERMARK_TEXT
. Defaults to lfm_embed
.watermark.img
= LFME_WATERMARK_IMG
. Defaults to null.watermark.url
= LFME_WATERMARK_URL
. Defaults to null.All that is guaranteed is the presence of watermark.text
, so all themes should be able to fallback to text.
Image support should be considered optional. Linking should be considered optional.
It is not an error to specify a mandatory watermark with no possible contents, as the watermark object will simply not be present. A warning should be output on startup.
(range Number start: Number = 0): Number
Generates values from start to the main argument, exclusive.(random): Number
Generates a random float.This should be as transparent as possible to the theme and end-user.
LFME_BACKEND_DEFAULT: string
specifies a default backend for /user/ requests..LFME_BACKEND_ADDITIONAL_GNUKEBOX: string,*
specifies a set of additional domains supporting the libre.fm API.LFME_BACKEND_ADDITIONAL_LISTENBRAINZ: string,*
specifies a set of additional domains supporting the listenbrainz API.LFME_BACKEND_ADDITIONAL_AUDIOSCROBBLER: string,*
specifies a set of additional domains supporting the last.fm API.?backend=(last.fm|libre.fm|listenbrainz|LFME_BACKEND_ADDITIONAL_*)
user.service
never not nulluser.service.type
(audioscrobbler|listenbrainz|gnukebox)
user.service.domain
the string for the service's domain.