Package Details: deckmaster-git r168.3e87251-1

Git Clone URL: https://aur.archlinux.org/deckmaster-git.git (read-only, click to copy)
Package Base: deckmaster-git
Description: An application to control your Elgato Stream Deck
Upstream URL: https://github.com/muesli/deckmaster
Licenses: MIT
Conflicts: deckmaster
Provides: deckmaster
Submitter: muesli
Maintainer: muesli
Last Packager: muesli
Votes: 1
Popularity: 0.000003
First Submitted: 2020-11-10 16:23 (UTC)
Last Updated: 2022-01-11 19:31 (UTC)

Dependencies (3)

Required by (0)

Sources (1)

Latest Comments

jcf commented on 2021-03-05 19:45 (UTC) (edited on 2021-03-05 19:45 (UTC) by jcf)

Thanks for sharing this package, muesli! I wanted to automate some of the setup described in the README over on GitHub so added a few bells and whistles, which I've converted into a patch below.

From d81a17b7f9d572858d8f12b7ce81e5c796ecf9e7 Mon Sep 17 00:00:00 2001
From: James Conroy-Finn <git@invetica.co.uk>
Date: Fri, 5 Mar 2021 19:38:37 +0000
Subject: [PATCH] Automate setup of udev rules and systemd units

---
 60-elgato-stream-deck.rules |  3 +++
 PKGBUILD                    | 19 ++++++++++++++++---
 deckmaster@.path            |  9 +++++++++
 deckmaster@.service         | 10 ++++++++++
 4 files changed, 38 insertions(+), 3 deletions(-)
 create mode 100644 60-elgato-stream-deck.rules
 create mode 100644 deckmaster@.path
 create mode 100644 deckmaster@.service

diff --git a/60-elgato-stream-deck.rules b/60-elgato-stream-deck.rules
new file mode 100644
index 0000000..4258dd1
--- /dev/null
+++ b/60-elgato-stream-deck.rules
@@ -0,0 +1,3 @@
+SUBSYSTEM=="usb", ATTRS{idVendor}=="0fd9", ATTRS{idProduct}=="006d", MODE:="666", GROUP="plugdev", SYMLINK+="streamdeck"
+SUBSYSTEM=="usb", ATTRS{idVendor}=="0fd9", ATTRS{idProduct}=="0063", MODE:="666", GROUP="plugdev", SYMLINK+="streamdeck-mini"
+SUBSYSTEM=="usb", ATTRS{idVendor}=="0fd9", ATTRS{idProduct}=="006c", MODE:="666", GROUP="plugdev", SYMLINK+="streamdeck-xl"
diff --git a/PKGBUILD b/PKGBUILD
index 2a66d3b..8e85c10 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -1,17 +1,24 @@
 # Maintainer: Christian Muehlhaeuser <muesli at gmail dot com>

 pkgname=deckmaster-git
-pkgver=r51.61d81d1
+pkgver=r59.d1adea2
 pkgrel=1
 pkgdesc="An application to control your Elgato Stream Deck"
 arch=('x86_64' 'i686' 'armv6h' 'armv7h' 'aarch64')
 url="https://github.com/muesli/deckmaster"
 license=('MIT')
+depends=('ttf-roboto')
 makedepends=('go' 'git')
 provides=("${pkgname%-git}")
 conflicts=("${pkgname%-git}")
-source=($pkgname::git://github.com/muesli/deckmaster.git)
-sha256sums=('SKIP')
+source=($pkgname::git://github.com/muesli/deckmaster.git
+        'deckmaster@.path'
+        'deckmaster@.service'
+        '60-elgato-stream-deck.rules')
+sha256sums=('SKIP'
+            'f6bbd3ace28aabd7fb9af80d7d99483c3ab3c193c298520a873d3945e882a62c'
+            '6f0e6637ccdf34f7cf3cb9d165a181abbda8012a25fc50949f12853dd553bfca'
+            '0344805537572dec2ae217e17fcc284a4544d1281d5d5edaf2b81b684ad836f3')

 prepare() {
     export GOPATH="$srcdir/gopath"
@@ -49,4 +56,10 @@ package() {

     install -Dm755 "${pkgname%-git}" "$pkgdir/usr/bin/${pkgname%-git}"
     install -Dm644 "LICENSE" "$pkgdir/usr/share/licenses/${pkgname%-git}/LICENSE"
+
+    install -Dm644 -t "${pkgdir}"/usr/lib/systemd/user/ \
+      "${srcdir}"/deckmaster@.path "${srcdir}"/deckmaster@.service
+
+    install -Dm644 -t "${pkgdir}"/usr/lib/udev/rules.d/ \
+      "${srcdir}"/60-elgato-stream-deck.rules
 }
diff --git a/deckmaster@.path b/deckmaster@.path
new file mode 100644
index 0000000..6b82185
--- /dev/null
+++ b/deckmaster@.path
@@ -0,0 +1,9 @@
+[Unit]
+Description="Stream Deck Device Path"
+
+[Path]
+PathExists=/dev/%i
+Unit=deckmaster@.service
+
+[Install]
+WantedBy=multi-user.target
diff --git a/deckmaster@.service b/deckmaster@.service
new file mode 100644
index 0000000..6087791
--- /dev/null
+++ b/deckmaster@.service
@@ -0,0 +1,10 @@
+[Unit]
+Description=Deckmaster Service
+
+[Service]
+ExecStart=/usr/bin/deckmaster --deck %E/deckmaster/%i.deck
+WorkingDirectory=%E/deckmaster/
+Restart=on-failure
+
+[Install]
+WantedBy=default.target
-- 
2.30.1

With this you get udev rules (that I've tested with my Stream Deck at least), and systemd units you can start instantiated like so:

systemctl enable --user deckmaster@streamdeck.path

You can pass in the name of the symlink between the @ and .path. I'm keeping my deckmaster configuration in ~/.config/deckmaster, and the systemd units will look for a file that matches the symlink. In my case that means loading ~/.config/deckmaster/streamdeck.deck.

I noticed an error when I initially started things as I was missing ttf-roboto, so I've added that to the package dependencies too.

Thanks again for your awesome work. I'm looking at fancy icons on my desk right now thanks to you!