From 1fb13891accd44b7bec9c4405d10b2909046e361 Mon Sep 17 00:00:00 2001 From: loki Date: Mon, 31 Aug 2026 11:45:28 +0200 Subject: [PATCH] feat: manifest, translations, catalog for loki/headsetcontrol --- catalog.toml | 11 +++++ headsetcontrol/plugin.toml | 71 +++++++++++++++++++++++++++++ headsetcontrol/translations/de.json | 42 +++++++++++++++++ headsetcontrol/translations/en.json | 42 +++++++++++++++++ 4 files changed, 166 insertions(+) create mode 100644 catalog.toml create mode 100644 headsetcontrol/plugin.toml create mode 100644 headsetcontrol/translations/de.json create mode 100644 headsetcontrol/translations/en.json diff --git a/catalog.toml b/catalog.toml new file mode 100644 index 0000000..9069f76 --- /dev/null +++ b/catalog.toml @@ -0,0 +1,11 @@ +[[plugin]] +id = "loki/headsetcontrol" +name = "Headset Control" +version = "1.0.0" +author = "loki" +license = "MIT" +icon = "headset" +description = "Monitor and control HeadsetControl-compatible headsets." +plugin_api = 24 +tags = ["audio", "hardware", "headset"] +dependencies = ["headsetcontrol"] diff --git a/headsetcontrol/plugin.toml b/headsetcontrol/plugin.toml new file mode 100644 index 0000000..ba9234f --- /dev/null +++ b/headsetcontrol/plugin.toml @@ -0,0 +1,71 @@ +id = "loki/headsetcontrol" +name = "Headset Control" +version = "1.0.0" +plugin_api = 24 +author = "loki" +license = "MIT" +icon = "headset" +description = "Monitor and control HeadsetControl-compatible headsets." +tags = ["audio", "hardware", "headset"] +dependencies = ["headsetcontrol"] + +[[setting]] +key = "poll_interval" +type = "int" +label_key = "settings.poll_interval.label" +description_key = "settings.poll_interval.description" +default = 60 +min = 10 +max = 600 + +[[setting]] +key = "battery_low" +type = "int" +label_key = "settings.battery_low.label" +description_key = "settings.battery_low.description" +default = 20 +min = 5 +max = 50 + +[[setting]] +key = "sidetone_default" +type = "int" +label_key = "settings.sidetone_default.label" +description_key = "settings.sidetone_default.description" +default = 64 +min = 0 +max = 128 + +[[setting]] +key = "device" +type = "string" +label_key = "settings.device.label" +description_key = "settings.device.description" +default = "" + +[[setting]] +key = "mock" +type = "bool" +label_key = "settings.mock.label" +description_key = "settings.mock.description" +default = false +advanced = true + +[[service]] +id = "headset" +entry = "service.luau" + +[[widget]] +id = "battery" +entry = "widget.luau" + +[[panel]] +id = "control" +entry = "panel.luau" +width = 400 +height = 480 +placement = "floating" + +[[shortcut]] +id = "sidetone" +entry = "shortcut.luau" diff --git a/headsetcontrol/translations/de.json b/headsetcontrol/translations/de.json new file mode 100644 index 0000000..662f5ad --- /dev/null +++ b/headsetcontrol/translations/de.json @@ -0,0 +1,42 @@ +{ + "settings.poll_interval.label": "Aktualisierungsintervall (Sekunden)", + "settings.poll_interval.description": "Wie oft der Headset-Status abgefragt wird.", + "settings.battery_low.label": "Schwelle niedriger Akku", + "settings.battery_low.description": "Warnen, wenn der Akku unter diesen Prozentwert fällt.", + "settings.sidetone_default.label": "Standard-Sidetone", + "settings.sidetone_default.description": "Startwert Sidetone (0-128), wenn das Headset nicht abgefragt werden kann.", + "settings.device.label": "Gerät (VID:PID)", + "settings.device.description": "Leer lassen für Auto-Erkennung, oder z.B. 3329:4b19 setzen.", + "settings.mock.label": "Mock-Gerät", + "settings.mock.description": "Simuliert ein Headset für die Entwicklung ohne Hardware.", + "status.charging": "lädt", + "status.full": "voll", + "status.normal": "Akku", + "status.discharging": "entlädt", + "status.unavailable": "offline", + "chatmix.game": "Spiel", + "chatmix.chat": "Chat", + "widget.chatmix": "Chatmix", + "panel.title": "Headset", + "panel.no_device": "Kein Headset erkannt", + "panel.battery": "Akku", + "panel.chatmix": "Chatmix", + "panel.sidetone": "Sidetone", + "panel.off": "Aus", + "panel.low": "Niedrig", + "panel.high": "Hoch", + "panel.equalizer": "Equalizer-Preset", + "panel.preset": "Preset", + "panel.inactive_time": "Auto-Aus", + "panel.never": "Nie", + "panel.noise_filter": "Rauschfilter", + "panel.voice_prompts": "Sprachansagen", + "panel.volume_limiter": "Lautstärkebegrenzer", + "panel.no_caps": "Keine unterstützten Funktionen.", + "notify.battery_low.title": "Headset-Akku niedrig", + "notify.battery_low.body": "Akku bei %d%%", + "error.no_binary": "headsetcontrol ist nicht installiert", + "error.command_failed": "headsetcontrol-Befehl fehlgeschlagen", + "shortcut.on": "Sidetone an", + "shortcut.off": "Sidetone aus" +} diff --git a/headsetcontrol/translations/en.json b/headsetcontrol/translations/en.json new file mode 100644 index 0000000..bd492d1 --- /dev/null +++ b/headsetcontrol/translations/en.json @@ -0,0 +1,42 @@ +{ + "settings.poll_interval.label": "Poll interval (seconds)", + "settings.poll_interval.description": "How often the headset status is refreshed.", + "settings.battery_low.label": "Low battery threshold", + "settings.battery_low.description": "Warn when the battery drops below this percent.", + "settings.sidetone_default.label": "Default sidetone", + "settings.sidetone_default.description": "Starting sidetone level (0-128) used when the headset cannot be queried.", + "settings.device.label": "Device (VID:PID)", + "settings.device.description": "Leave empty to auto-detect, or set e.g. 3329:4b19.", + "settings.mock.label": "Mock device", + "settings.mock.description": "Simulate a headset for development without hardware.", + "status.charging": "charging", + "status.full": "full", + "status.normal": "battery", + "status.discharging": "discharging", + "status.unavailable": "offline", + "chatmix.game": "game", + "chatmix.chat": "chat", + "widget.chatmix": "chatmix", + "panel.title": "Headset", + "panel.no_device": "No headset detected", + "panel.battery": "Battery", + "panel.chatmix": "Chat mix", + "panel.sidetone": "Sidetone", + "panel.off": "Off", + "panel.low": "Low", + "panel.high": "High", + "panel.equalizer": "Equalizer preset", + "panel.preset": "Preset", + "panel.inactive_time": "Auto-off", + "panel.never": "Never", + "panel.noise_filter": "Noise filter", + "panel.voice_prompts": "Voice prompts", + "panel.volume_limiter": "Volume limiter", + "panel.no_caps": "No supported capabilities.", + "notify.battery_low.title": "Headset battery low", + "notify.battery_low.body": "Battery at %d%%", + "error.no_binary": "headsetcontrol is not installed", + "error.command_failed": "headsetcontrol command failed", + "shortcut.on": "Sidetone on", + "shortcut.off": "Sidetone off" +}