From 087c28e40cfc30c3fc5c8467e1d2c9b8a3d1a989 Mon Sep 17 00:00:00 2001 From: loki Date: Mon, 31 Aug 2026 14:43:18 +0200 Subject: [PATCH] docs: README, license, and store thumbnail --- LICENSE | 21 +++++++++++++++++ README.md | 43 ++++++++++++++++++++++++++++++++++ headsetcontrol/thumbnail.webp | Bin 0 -> 3694 bytes 3 files changed, 64 insertions(+) create mode 100644 LICENSE create mode 100644 README.md create mode 100644 headsetcontrol/thumbnail.webp diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..9ae4aed --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2026 loki + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/README.md b/README.md new file mode 100644 index 0000000..d8de592 --- /dev/null +++ b/README.md @@ -0,0 +1,43 @@ +# Headset Control + +Monitor and control [HeadsetControl](https://github.com/Sapd/HeadsetControl)-compatible gaming headsets +from the Noctalia shell: battery in the bar, a sidetone toggle in the control center, and a full +control panel for sidetone, equalizer presets, auto-off, noise filter, voice prompts and the volume limiter. + +Requires `headsetcontrol` (install via your package manager, e.g. `pacman -S headsetcontrol`). + +## Install + +``` +mkdir -p ~/.local/share/noctalia/plugins +ln -s /path/to/this/repo/headsetcontrol ~/.local/share/noctalia/plugins/headsetcontrol +noctalia msg plugins enable loki/headsetcontrol +``` + +## Usage + +- **Bar widget:** shows battery level. Scroll to adjust sidetone, click to open the control panel. +- **Control center tile:** toggles sidetone on/off. +- **Control panel:** full device controls. Controls appear only for capabilities the headset reports. + +## Settings + +| Setting | Default | Meaning | +|---|---|---| +| Poll interval | 60 s | How often status is refreshed | +| Low battery threshold | 20 % | Warn below this level | +| Default sidetone | 64 | Level used before any manual adjustment | +| Device (VID:PID) | *(auto)* | Force a device, e.g. `3329:4b19` | +| Mock device | off | Simulate a headset for development without hardware | + +## Development + +Edits to `.luau` files hot-reload. Trigger a manual refresh with: + +``` +noctalia msg plugin loki/headsetcontrol:headset all refresh +``` + +## License + +MIT diff --git a/headsetcontrol/thumbnail.webp b/headsetcontrol/thumbnail.webp new file mode 100644 index 0000000000000000000000000000000000000000..9f8fd6826cd80177726dd1927d399740cd8baa07 GIT binary patch literal 3694 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