feat(lyrics): expand sources and display controls
This commit is contained in:
+331
-2
@@ -1,10 +1,10 @@
|
||||
id = "h465855hgg/lyrics"
|
||||
name = "Lyrics"
|
||||
version = "1.3.0"
|
||||
version = "1.4.0"
|
||||
plugin_api = 3
|
||||
author = "h465855hgg"
|
||||
license = "MIT"
|
||||
dependencies = ["playerctl", "python3", "cp"]
|
||||
dependencies = ["playerctl", "python3", "cp", "chmod"]
|
||||
tags = ["bar", "service", "music", "media", "animation"]
|
||||
icon = "music"
|
||||
description = "Synchronized lyrics with karaoke highlighting, animated transitions, and flexible lyric sources."
|
||||
@@ -35,11 +35,112 @@ 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 = "qqmusic", label_key = "settings.lyrics_source.options.qqmusic" },
|
||||
{ value = "kugou", label_key = "settings.lyrics_source.options.kugou" },
|
||||
{ value = "qishui", label_key = "settings.lyrics_source.options.qishui" },
|
||||
{ value = "apple_music", label_key = "settings.lyrics_source.options.apple_music" },
|
||||
{ value = "spotify", label_key = "settings.lyrics_source.options.spotify" },
|
||||
{ value = "musixmatch", label_key = "settings.lyrics_source.options.musixmatch" },
|
||||
{ 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 = "lyrics_sources"
|
||||
type = "string_list"
|
||||
label_key = "settings.lyrics_sources.label"
|
||||
description_key = "settings.lyrics_sources.description"
|
||||
default = ["lrclib", "netease", "qqmusic", "kugou", "qishui", "apple_music", "spotify", "musixmatch"]
|
||||
visible_when = { key = "lyrics_source", values = ["auto"] }
|
||||
advanced = true
|
||||
|
||||
[[setting]]
|
||||
key = "translation_language"
|
||||
type = "select"
|
||||
label_key = "settings.translation_language.label"
|
||||
description_key = "settings.translation_language.description"
|
||||
default = "zh-Hans"
|
||||
options = [
|
||||
{ value = "zh-Hans", label_key = "settings.translation_language.options.zh-Hans" },
|
||||
{ value = "zh-Hant", label_key = "settings.translation_language.options.zh-Hant" },
|
||||
{ value = "en", label_key = "settings.translation_language.options.en" },
|
||||
{ value = "ja", label_key = "settings.translation_language.options.ja" },
|
||||
{ value = "ko", label_key = "settings.translation_language.options.ko" },
|
||||
]
|
||||
|
||||
[[setting]]
|
||||
key = "spotify_sp_dc"
|
||||
type = "string"
|
||||
label_key = "settings.spotify_sp_dc.label"
|
||||
description_key = "settings.spotify_sp_dc.description"
|
||||
default = ""
|
||||
advanced = true
|
||||
visible_when = { key = "lyrics_source", values = ["spotify"] }
|
||||
|
||||
[[setting]]
|
||||
key = "spotify_access_token"
|
||||
type = "string"
|
||||
label_key = "settings.spotify_access_token.label"
|
||||
description_key = "settings.spotify_access_token.description"
|
||||
default = ""
|
||||
advanced = true
|
||||
visible_when = { key = "lyrics_source", values = ["spotify"] }
|
||||
|
||||
[[setting]]
|
||||
key = "apple_developer_token"
|
||||
type = "string"
|
||||
label_key = "settings.apple_developer_token.label"
|
||||
description_key = "settings.apple_developer_token.description"
|
||||
default = ""
|
||||
advanced = true
|
||||
visible_when = { key = "lyrics_source", values = ["apple_music"] }
|
||||
|
||||
[[setting]]
|
||||
key = "apple_user_token"
|
||||
type = "string"
|
||||
label_key = "settings.apple_user_token.label"
|
||||
description_key = "settings.apple_user_token.description"
|
||||
default = ""
|
||||
advanced = true
|
||||
visible_when = { key = "lyrics_source", values = ["apple_music"] }
|
||||
|
||||
[[setting]]
|
||||
key = "apple_storefront"
|
||||
type = "string"
|
||||
label_key = "settings.apple_storefront.label"
|
||||
description_key = "settings.apple_storefront.description"
|
||||
default = "us"
|
||||
advanced = true
|
||||
visible_when = { key = "lyrics_source", values = ["apple_music"] }
|
||||
|
||||
[[setting]]
|
||||
key = "musixmatch_token"
|
||||
type = "string"
|
||||
label_key = "settings.musixmatch_token.label"
|
||||
description_key = "settings.musixmatch_token.description"
|
||||
default = ""
|
||||
advanced = true
|
||||
visible_when = { key = "lyrics_source", values = ["musixmatch"] }
|
||||
|
||||
[[setting]]
|
||||
key = "qishui_api_url"
|
||||
type = "string"
|
||||
label_key = "settings.qishui_api_url.label"
|
||||
description_key = "settings.qishui_api_url.description"
|
||||
default = ""
|
||||
advanced = true
|
||||
visible_when = { key = "lyrics_source", values = ["qishui"] }
|
||||
|
||||
[[setting]]
|
||||
key = "qishui_token"
|
||||
type = "string"
|
||||
label_key = "settings.qishui_token.label"
|
||||
description_key = "settings.qishui_token.description"
|
||||
default = ""
|
||||
advanced = true
|
||||
visible_when = { key = "lyrics_source", values = ["qishui"] }
|
||||
|
||||
[[setting]]
|
||||
key = "custom_url"
|
||||
type = "string"
|
||||
@@ -55,6 +156,7 @@ label_key = "settings.custom_json_field.label"
|
||||
description_key = "settings.custom_json_field.description"
|
||||
default = "syncedLyrics"
|
||||
visible_when = { key = "lyrics_source", values = ["custom"] }
|
||||
advanced = true
|
||||
|
||||
[[setting]]
|
||||
key = "cue_text"
|
||||
@@ -69,6 +171,7 @@ type = "select"
|
||||
label_key = "settings.cue_font_mode.label"
|
||||
description_key = "settings.cue_font_mode.description"
|
||||
default = "follow"
|
||||
advanced = true
|
||||
options = [
|
||||
{ value = "follow", label_key = "settings.cue_font_mode.options.follow" },
|
||||
{ value = "custom", label_key = "settings.cue_font_mode.options.custom" },
|
||||
@@ -81,6 +184,101 @@ label_key = "settings.cue_font_family.label"
|
||||
description_key = "settings.cue_font_family.description"
|
||||
default = "sans-serif"
|
||||
visible_when = { key = "cue_font_mode", values = ["custom"] }
|
||||
advanced = true
|
||||
|
||||
[[setting]]
|
||||
key = "lyrics_offset_ms"
|
||||
type = "int"
|
||||
label_key = "settings.lyrics_offset_ms.label"
|
||||
description_key = "settings.lyrics_offset_ms.description"
|
||||
default = 0
|
||||
min = -10000
|
||||
max = 10000
|
||||
|
||||
[[setting]]
|
||||
key = "poll_interval_ms"
|
||||
type = "int"
|
||||
label_key = "settings.poll_interval_ms.label"
|
||||
description_key = "settings.poll_interval_ms.description"
|
||||
default = 500
|
||||
min = 100
|
||||
max = 5000
|
||||
advanced = true
|
||||
|
||||
[[setting]]
|
||||
key = "display_mode"
|
||||
type = "select"
|
||||
label_key = "settings.display_mode.label"
|
||||
description_key = "settings.display_mode.description"
|
||||
default = "toggle"
|
||||
options = [
|
||||
{ value = "toggle", label_key = "settings.display_mode.options.toggle" },
|
||||
{ value = "lyrics", label_key = "settings.display_mode.options.lyrics" },
|
||||
{ value = "track", label_key = "settings.display_mode.options.track" },
|
||||
]
|
||||
|
||||
[[setting]]
|
||||
key = "double_line"
|
||||
type = "bool"
|
||||
label_key = "settings.double_line.label"
|
||||
description_key = "settings.double_line.description"
|
||||
default = true
|
||||
|
||||
[[setting]]
|
||||
key = "double_line_auto_fit"
|
||||
type = "bool"
|
||||
label_key = "settings.double_line_auto_fit.label"
|
||||
description_key = "settings.double_line_auto_fit.description"
|
||||
default = true
|
||||
visible_when = { key = "double_line", values = ["true"] }
|
||||
|
||||
[[setting]]
|
||||
key = "double_line_height_budget"
|
||||
type = "int"
|
||||
label_key = "settings.double_line_height_budget.label"
|
||||
description_key = "settings.double_line_height_budget.description"
|
||||
default = 26
|
||||
min = 18
|
||||
max = 40
|
||||
visible_when = { key = "double_line", values = ["true"] }
|
||||
advanced = true
|
||||
|
||||
[[setting]]
|
||||
key = "show_translation"
|
||||
type = "bool"
|
||||
label_key = "settings.show_translation.label"
|
||||
description_key = "settings.show_translation.description"
|
||||
default = true
|
||||
visible_when = { key = "double_line", values = ["true"] }
|
||||
|
||||
[[setting]]
|
||||
key = "show_romanization"
|
||||
type = "bool"
|
||||
label_key = "settings.show_romanization.label"
|
||||
description_key = "settings.show_romanization.description"
|
||||
default = false
|
||||
visible_when = { key = "double_line", values = ["true"] }
|
||||
|
||||
[[setting]]
|
||||
key = "secondary_line_mode"
|
||||
type = "select"
|
||||
label_key = "settings.secondary_line_mode.label"
|
||||
description_key = "settings.secondary_line_mode.description"
|
||||
default = "translation_first"
|
||||
options = [
|
||||
{ value = "translation_first", label_key = "settings.secondary_line_mode.options.translation_first" },
|
||||
{ value = "romanization_first", label_key = "settings.secondary_line_mode.options.romanization_first" },
|
||||
{ value = "translation", label_key = "settings.secondary_line_mode.options.translation" },
|
||||
{ value = "romanization", label_key = "settings.secondary_line_mode.options.romanization" },
|
||||
]
|
||||
visible_when = { key = "double_line", values = ["true"] }
|
||||
|
||||
[[setting]]
|
||||
key = "karaoke_enabled"
|
||||
type = "bool"
|
||||
label_key = "settings.karaoke_enabled.label"
|
||||
description_key = "settings.karaoke_enabled.description"
|
||||
default = true
|
||||
|
||||
[[setting]]
|
||||
key = "scroll_mode"
|
||||
@@ -102,6 +300,7 @@ default = 30
|
||||
min = 10
|
||||
max = 120
|
||||
description_key = "settings.marquee_speed.description"
|
||||
advanced = true
|
||||
|
||||
[[setting]]
|
||||
key = "max_lines"
|
||||
@@ -111,6 +310,7 @@ default = 1
|
||||
min = 1
|
||||
max = 3
|
||||
description_key = "settings.max_lines.description"
|
||||
advanced = true
|
||||
|
||||
[[setting]]
|
||||
key = "gradient"
|
||||
@@ -130,6 +330,9 @@ options = [
|
||||
{ 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 = "typewriter", label_key = "settings.animation.options.typewriter" },
|
||||
{ value = "pulse", label_key = "settings.animation.options.pulse" },
|
||||
{ value = "blink", label_key = "settings.animation.options.blink" },
|
||||
{ value = "none", label_key = "settings.animation.options.none" },
|
||||
]
|
||||
|
||||
@@ -141,6 +344,7 @@ default = 15
|
||||
min = 8
|
||||
max = 80
|
||||
description_key = "settings.max_chars.description"
|
||||
advanced = true
|
||||
|
||||
[[setting]]
|
||||
key = "char_width"
|
||||
@@ -150,6 +354,92 @@ default = 9
|
||||
min = 4
|
||||
max = 24
|
||||
description_key = "settings.char_width.description"
|
||||
advanced = true
|
||||
|
||||
[[setting]]
|
||||
key = "font_family"
|
||||
type = "string"
|
||||
label_key = "settings.font_family.label"
|
||||
description_key = "settings.font_family.description"
|
||||
default = ""
|
||||
|
||||
[[setting]]
|
||||
key = "primary_font_size"
|
||||
type = "int"
|
||||
label_key = "settings.primary_font_size.label"
|
||||
description_key = "settings.primary_font_size.description"
|
||||
default = 0
|
||||
min = 0
|
||||
max = 48
|
||||
|
||||
[[setting]]
|
||||
key = "font_weight"
|
||||
type = "select"
|
||||
label_key = "settings.font_weight.label"
|
||||
description_key = "settings.font_weight.description"
|
||||
default = "normal"
|
||||
options = [
|
||||
{ value = "thin", label_key = "settings.font_weight.options.thin" },
|
||||
{ value = "light", label_key = "settings.font_weight.options.light" },
|
||||
{ value = "normal", label_key = "settings.font_weight.options.normal" },
|
||||
{ value = "medium", label_key = "settings.font_weight.options.medium" },
|
||||
{ value = "semibold", label_key = "settings.font_weight.options.semibold" },
|
||||
{ value = "bold", label_key = "settings.font_weight.options.bold" },
|
||||
{ value = "heavy", label_key = "settings.font_weight.options.heavy" },
|
||||
]
|
||||
|
||||
[[setting]]
|
||||
key = "secondary_font_size"
|
||||
type = "int"
|
||||
label_key = "settings.secondary_font_size.label"
|
||||
description_key = "settings.secondary_font_size.description"
|
||||
default = 10
|
||||
min = 6
|
||||
max = 36
|
||||
visible_when = { key = "double_line", values = ["true"] }
|
||||
|
||||
[[setting]]
|
||||
key = "font_style"
|
||||
type = "select"
|
||||
label_key = "settings.font_style.label"
|
||||
description_key = "settings.font_style.description"
|
||||
default = "normal"
|
||||
advanced = true
|
||||
options = [
|
||||
{ value = "normal", label_key = "settings.font_style.options.normal" },
|
||||
{ value = "fixed", label_key = "settings.font_style.options.fixed" },
|
||||
{ value = "ink_centered", label_key = "settings.font_style.options.ink_centered" },
|
||||
]
|
||||
|
||||
[[setting]]
|
||||
key = "line_gap"
|
||||
type = "int"
|
||||
label_key = "settings.line_gap.label"
|
||||
description_key = "settings.line_gap.description"
|
||||
default = 2
|
||||
min = 0
|
||||
max = 24
|
||||
visible_when = { key = "double_line", values = ["true"] }
|
||||
|
||||
[[setting]]
|
||||
key = "padding_left"
|
||||
type = "int"
|
||||
label_key = "settings.padding_left.label"
|
||||
description_key = "settings.padding_left.description"
|
||||
default = 0
|
||||
min = 0
|
||||
max = 64
|
||||
advanced = true
|
||||
|
||||
[[setting]]
|
||||
key = "padding_right"
|
||||
type = "int"
|
||||
label_key = "settings.padding_right.label"
|
||||
description_key = "settings.padding_right.description"
|
||||
default = 0
|
||||
min = 0
|
||||
max = 64
|
||||
advanced = true
|
||||
|
||||
# Headless background service: polls MPRIS metadata, fetches lyrics, publishes state.
|
||||
[[service]]
|
||||
@@ -186,6 +476,38 @@ entry = "lyrics.luau"
|
||||
description_key = "settings.show_cover.description"
|
||||
default = true
|
||||
|
||||
[[widget.setting]]
|
||||
key = "cover_shape"
|
||||
type = "select"
|
||||
label_key = "settings.cover_shape.label"
|
||||
description_key = "settings.cover_shape.description"
|
||||
default = "circle"
|
||||
options = [
|
||||
{ value = "circle", label_key = "settings.cover_shape.options.circle" },
|
||||
{ value = "rounded", label_key = "settings.cover_shape.options.rounded" },
|
||||
{ value = "square", label_key = "settings.cover_shape.options.square" },
|
||||
{ value = "custom", label_key = "settings.cover_shape.options.custom" },
|
||||
]
|
||||
|
||||
[[widget.setting]]
|
||||
key = "cover_radius"
|
||||
type = "int"
|
||||
label_key = "settings.cover_radius.label"
|
||||
description_key = "settings.cover_radius.description"
|
||||
default = 5
|
||||
min = 0
|
||||
max = 32
|
||||
visible_when = { key = "cover_shape", values = ["custom"] }
|
||||
|
||||
[[widget.setting]]
|
||||
key = "cover_size"
|
||||
type = "int"
|
||||
label_key = "settings.cover_size.label"
|
||||
description_key = "settings.cover_size.description"
|
||||
default = 18
|
||||
min = 12
|
||||
max = 32
|
||||
|
||||
[[widget.setting]]
|
||||
key = "active_color"
|
||||
type = "color"
|
||||
@@ -199,3 +521,10 @@ entry = "lyrics.luau"
|
||||
label_key = "settings.inactive_color.label"
|
||||
description_key = "settings.inactive_color.description"
|
||||
default = "on_surface_variant"
|
||||
|
||||
[[widget.setting]]
|
||||
key = "secondary_color"
|
||||
type = "color"
|
||||
label_key = "settings.secondary_color.label"
|
||||
description_key = "settings.secondary_color.description"
|
||||
default = "on_surface_variant"
|
||||
|
||||
Reference in New Issue
Block a user