awesome-jellyfin/assets/clients
2024-09-13 19:40:31 +02:00
..
icons feat: new client icons and more (#34) 2023-12-17 02:54:20 +01:00
CLIENTS.template.md feat: client types (#36) 2023-12-17 03:43:52 +01:00
clients.yaml feat: add streamyfin to clients list (#99) 2024-09-13 19:40:31 +02:00
README.md fix: added missing types key 2023-12-16 02:11:32 +01:00

Jellyfin Client YAML Configuration Schema

The schema provides detailed documentation for constructing a YAML configuration file used by the Client Markdown Generator. The YAML file contains three main sections: icons, targets, and clients.

clients Section

Lists client definitions compatible with Jellyfin.

Client Definition

Each client in the clients list has fields detailing its specifics.

Field Type Required Description
name String Yes Name of the client.
targets List[String] Yes Platforms supported (e.g., iOS, Android, Windows).
oss String No URL to the open-source repository, if available.
official Boolean No Marks the client as an official Jellyfin client (defaults inferred).
beta Boolean No Marks the client as being in beta.
website String No Official website URL for the client.
price Price Object * No Specifies if the client is free, paid, or both. Default is free if oss is provided.
downloads List[Hoster] Yes List of hosters where the client can be downloaded.
types List[String] No A list of strings representing additional client categories or features.

The types field within a client's definition is an optional list of strings that provides additional classification for the client based on its functionality or use case. This can be particularly useful for denoting special features or categories that the client falls under, such as 'Music' for music-specific clients or other identifiers for unique client types.

*) Price Definition

Field Type Required Description
free Boolean No Indicates if the client can be downloaded for free. Default is true if oss is provided.
paid Boolean No Indicates if there is a paid version of the client.

Hoster Definition

Field Type Required Description
icon String No Key representing the icon to be displayed.
icon-url String No URL to a custom icon.
text String No Text displayed if no icon is used.
url String Yes Where the client can be downloaded (mandatory).

icons Section

This section defines a map of icon keys to various representations for use next to client download links in the markdown output.

icons:
  key:
    light: "path/to/light-mode/icon.png"
    dark: "path/to/dark-mode/icon.png"
    single: "path/to/icon.png"
    text: Icon Description

Icon Definition

Each key within the icons section represents an icon identifier. Icon objects can have various representations and descriptions.

Field Type Required Description
light String If dark set Path to the icon image for light mode (optional).
dark String If light set Path to the icon image for dark mode (optional).
single String No Path to the icon image when no mode-specific icon is used.
text String No * Description text displayed if no icon image is used.

*) If no image provided, text is required.

targets Section

Targets categorize clients into platform- or environment-based groups.

targets:
  - key: Browser
    ...

Target Group Definition

Each entry within the targets list represents a group of platforms or environments with the following attributes:

Field Type Required Description
key String Yes Unique identifier for the target group.
display String Yes Display name, commonly with an emoji icon.
has List Yes A list of individual target platform entries.

Target Definition

Each has list entry within a TargetGroup object corresponds to a specific platform or environment.

Field Type Required Description
name String Yes Target name used in the clients section's targets field.
mapped String Yes Human-friendly name corresponding to the target name.

Tips for Adding New Entries

To add new platforms or icons, define them in the targets or icons sections:

icons:
  new-icon-key:
    light: "assets/clients/icons/new-icon-light.png"
    dark: "assets/clients/icons/new-icon-dark.png"
    text: "New Icon Description"

targets:
  - key: NewPlatform
    display: "🆕 New Platform"
    has:
      - name: NewPlatform # simple key for defining client targets (target: [Browser, ...])
        mapped: "The New Platform Display Name" # display name for the target in the generated Markdown document

Reference these new identifiers when creating a client entry:

- name: "New Jellyfin Client"
  targets: [NewPlatform]
  oss: https://github.com/your-username/new-jellyfin-client
  official: false
  beta: false
  website: https://newclient.example.com/
  types: [ Music ]
  price:
    free: true
    paid: false
  downloads:
    - icon: new-icon-key
      url: https://example.com/client-download