diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..cd83989 --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2024-2026 Wakatron + +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 index f48750d..922ca04 100644 --- a/README.md +++ b/README.md @@ -398,6 +398,16 @@ Dependencies: --- +## Credits + +This project builds on the work of the following open-source libraries: + +- **[dh1tw/streamdeck](https://github.com/dh1tw/streamdeck)** (MIT) — Go protocol driver for Elgato Stream Deck devices +- **[bearsh/hid](https://github.com/bearsh/hid)** (MIT) — Go USB HID bindings via CGO / libusb +- **[disintegration/gift](https://github.com/disintegration/gift)** (MIT) — Go Image Filtering Toolkit + +--- + ## License MIT diff --git a/dist/arch/.SRCINFO b/dist/arch/.SRCINFO new file mode 100644 index 0000000..648624a --- /dev/null +++ b/dist/arch/.SRCINFO @@ -0,0 +1,23 @@ +pkgbase = streamdeck-lets-go-git + pkgdesc = Lightweight daemon for controlling Elgato Stream Deck devices with a built-in web UI + pkgver = r0.unknown + pkgrel = 1 + url = https://github.com/Wakatron/streamdeck-lets-go + arch = x86_64 + arch = aarch64 + license = MIT + makedepends = go>=1.26 + makedepends = git + depends = libusb-1.0 + optdepends = librsvg: SVG icon rendering + optdepends = fontconfig: system font detection + provides = streamdeck-lets-go + conflicts = streamdeck-lets-go + source = streamdeck-lets-go-git::git+https://github.com/Wakatron/streamdeck-lets-go.git + source = streamdeck-lets-go.service + source = 90-streamdeck.rules + b2sums = SKIP + b2sums = SKIP + b2sums = SKIP + +pkgname = streamdeck-lets-go-git diff --git a/dist/arch/90-streamdeck.rules b/dist/arch/90-streamdeck.rules new file mode 100644 index 0000000..46e48f3 --- /dev/null +++ b/dist/arch/90-streamdeck.rules @@ -0,0 +1,7 @@ +# Elgato Stream Deck — allow access for locally logged-in users +# Vendor 0fd9 +SUBSYSTEM=="usb", ATTRS{idVendor}=="0fd9", ATTRS{idProduct}=="0060", TAG+="uaccess" +SUBSYSTEM=="usb", ATTRS{idVendor}=="0fd9", ATTRS{idProduct}=="0063", TAG+="uaccess" +SUBSYSTEM=="usb", ATTRS{idVendor}=="0fd9", ATTRS{idProduct}=="006c", TAG+="uaccess" +SUBSYSTEM=="usb", ATTRS{idVendor}=="0fd9", ATTRS{idProduct}=="006d", TAG+="uaccess" +SUBSYSTEM=="usb", ATTRS{idVendor}=="0fd9", ATTRS{idProduct}=="0080", TAG+="uaccess" diff --git a/dist/arch/PKGBUILD b/dist/arch/PKGBUILD new file mode 100644 index 0000000..1d1257b --- /dev/null +++ b/dist/arch/PKGBUILD @@ -0,0 +1,48 @@ +# Maintainer: Wakatron + +pkgname=streamdeck-lets-go-git +_giturl=https://github.com/Wakatron/streamdeck-lets-go.git +pkgver=r0.unknown +pkgrel=1 +pkgdesc="Lightweight daemon for controlling Elgato Stream Deck devices with a built-in web UI" +arch=('x86_64' 'aarch64') +url="https://github.com/Wakatron/streamdeck-lets-go" +license=('MIT') +depends=('libusb-1.0') +optdepends=('librsvg: SVG icon rendering' + 'fontconfig: system font detection') +makedepends=('go>=1.26' 'git') +provides=('streamdeck-lets-go') +conflicts=('streamdeck-lets-go') + +source=("${pkgname}::git+${_giturl}" + "streamdeck-lets-go.service" + "90-streamdeck.rules") +b2sums=('SKIP' + 'SKIP' + 'SKIP') + +pkgver() { + cd "${srcdir}/${pkgname}" + git describe --always --tags 2>/dev/null || echo "r0.$(git rev-parse --short HEAD)" +} + +build() { + cd "${srcdir}/${pkgname}" + export CGO_ENABLED=1 + go build \ + -ldflags "-s -w" \ + -o streamdeck-lets-go . +} + +package() { + cd "${srcdir}/${pkgname}" + + install -Dm755 streamdeck-lets-go "${pkgdir}/usr/bin/streamdeck-lets-go" + + install -Dm644 "${srcdir}/streamdeck-lets-go.service" \ + "${pkgdir}/usr/lib/systemd/user/streamdeck-lets-go.service" + + install -Dm644 "${srcdir}/90-streamdeck.rules" \ + "${pkgdir}/usr/lib/udev/rules.d/90-streamdeck.rules" +} diff --git a/dist/arch/streamdeck-lets-go.service b/dist/arch/streamdeck-lets-go.service new file mode 100644 index 0000000..78b0f21 --- /dev/null +++ b/dist/arch/streamdeck-lets-go.service @@ -0,0 +1,14 @@ +[Unit] +Description=Stream Deck Lets Go daemon +Documentation=https://github.com/Wakatron/streamdeck-lets-go +After=graphical-session.target +Wants=graphical-session.target + +[Service] +Type=simple +ExecStart=/usr/bin/streamdeck-lets-go daemon +Restart=on-failure +RestartSec=3 + +[Install] +WantedBy=default.target