Files
community-plugins/lyrics/plugin.toml
T

167 lines
4.4 KiB
TOML

id = "h465855hgg/lyrics"
name = "Lyrics"
version = "1.1.0"
plugin_api = 3
author = "h465855hgg"
license = "MIT"
dependencies = ["playerctl", "python3", "cp"]
tags = ["bar", "service", "music", "media", "animation"]
icon = "music"
description = "Synchronized lyrics with karaoke highlighting, animated transitions, and flexible lyric sources."
[[setting]]
key = "lyrics_source"
type = "select"
label_key = "settings.lyrics_source.label"
description_key = "settings.lyrics_source.description"
default = "auto"
options = [
{ value = "auto", label_key = "settings.lyrics_source.options.auto" },
{ value = "lrclib", label_key = "settings.lyrics_source.options.lrclib" },
{ value = "netease", label_key = "settings.lyrics_source.options.netease" },
{ value = "mpris", label_key = "settings.lyrics_source.options.mpris" },
{ value = "custom", label_key = "settings.lyrics_source.options.custom" },
{ value = "external", label_key = "settings.lyrics_source.options.external" },
]
[[setting]]
key = "custom_url"
type = "string"
label_key = "settings.custom_url.label"
description_key = "settings.custom_url.description"
default = ""
visible_when = { key = "lyrics_source", values = ["custom"] }
[[setting]]
key = "custom_json_field"
type = "string"
label_key = "settings.custom_json_field.label"
description_key = "settings.custom_json_field.description"
default = "syncedLyrics"
visible_when = { key = "lyrics_source", values = ["custom"] }
[[setting]]
key = "cue_text"
type = "string"
label_key = "settings.cue_text.label"
description_key = "settings.cue_text.description"
default = "•••••"
[[setting]]
key = "scroll_mode"
type = "select"
label_key = "settings.scroll_mode.label"
default = "auto"
description_key = "settings.scroll_mode.description"
options = [
{ value = "auto", label_key = "settings.scroll_mode.options.auto" },
{ value = "marquee", label_key = "settings.scroll_mode.options.marquee" },
{ value = "static", label_key = "settings.scroll_mode.options.static" },
]
[[setting]]
key = "marquee_speed"
type = "int"
label_key = "settings.marquee_speed.label"
default = 30
min = 10
max = 120
description_key = "settings.marquee_speed.description"
[[setting]]
key = "max_lines"
type = "int"
label_key = "settings.max_lines.label"
default = 1
min = 1
max = 3
description_key = "settings.max_lines.description"
[[setting]]
key = "gradient"
type = "bool"
label_key = "settings.gradient.label"
default = true
description_key = "settings.gradient.description"
[[setting]]
key = "animation"
type = "select"
label_key = "settings.animation.label"
default = "karaoke"
description_key = "settings.animation.description"
options = [
{ value = "karaoke", label_key = "settings.animation.options.karaoke" },
{ value = "cascade", label_key = "settings.animation.options.cascade" },
{ value = "wave", label_key = "settings.animation.options.wave" },
{ value = "fade", label_key = "settings.animation.options.fade" },
{ value = "none", label_key = "settings.animation.options.none" },
]
[[setting]]
key = "max_chars"
type = "int"
label_key = "settings.max_chars.label"
default = 24
min = 8
max = 80
description_key = "settings.max_chars.description"
[[setting]]
key = "char_width"
type = "int"
label_key = "settings.char_width.label"
default = 9
min = 4
max = 24
description_key = "settings.char_width.description"
# Headless background service: polls MPRIS metadata, fetches lyrics, publishes state.
[[service]]
id = "service"
entry = "lyrics_service.luau"
# Bar widget: thin presentation that mirrors the published lyrics state.
[[widget]]
id = "lyrics"
entry = "lyrics.luau"
[[widget.setting]]
key = "glyph"
type = "glyph"
label_key = "settings.glyph.label"
default = "music"
[[widget.setting]]
key = "show_artist"
type = "bool"
label_key = "settings.show_artist.label"
default = true
[[widget.setting]]
key = "hide_when_paused"
type = "bool"
label_key = "settings.hide_when_paused.label"
default = false
[[widget.setting]]
key = "show_cover"
type = "bool"
label_key = "settings.show_cover.label"
description_key = "settings.show_cover.description"
default = true
[[widget.setting]]
key = "active_color"
type = "color"
label_key = "settings.active_color.label"
description_key = "settings.active_color.description"
default = "primary"
[[widget.setting]]
key = "inactive_color"
type = "color"
label_key = "settings.inactive_color.label"
description_key = "settings.inactive_color.description"
default = "on_surface_variant"