Make the SDK system-agnostic
Using Linux the SDK steamdeck create crashes after putting in the Plugin UUID with:
node:fs:1583
const result = binding.readdir(
^
Error: ENOENT: no such file or directory, scandir '/home/tolik/AppData/Roaming/Elgato/StreamDeck/Plugins'
at readdirSync (node:fs:1583:26)
at $P (file:///home/tolik/.nvm/versions/node/v22.17.0/lib/node_modules/@elgato/cli/bin/streamdeck.mjs:5:632467)
at validate (file:///home/tolik/.nvm/versions/node/v22.17.0/lib/node_modules/@elgato/cli/bin/streamdeck.mjs:5:637044)
at Object.<anonymous> (file:///home/tolik/.nvm/versions/node/v22.17.0/lib/node_modules/@elgato/cli/bin/streamdeck.mjs:5:438128)
at file:///home/tolik/.nvm/versions/node/v22.17.0/lib/node_modules/@elgato/cli/bin/streamdeck.mjs:5:215867
at ReadStream.<anonymous> (file:///home/tolik/.nvm/versions/node/v22.17.0/lib/node_modules/@elgato/cli/bin/streamdeck.mjs:5:206730)
at AsyncResource.runInAsyncScope (node:async_hooks:214:14)
at ReadStream.bound (node:async_hooks:245:16)
at ReadStream.emit (node:events:530:35)
at emitKeys (node:internal/readline/utils:370:14) {
errno: -2,
code: 'ENOENT',
syscall: 'scandir',
path: '/home/tolik/AppData/Roaming/Elgato/StreamDeck/Plugins'
}
the path is not system-agnostic and expects the user to use Windows. If I create the given path by hand, I can put in all the asked information and it still crashes in the end with
node:internal/child_process:285
const err = new ErrnoException(exitCode, syscall);
^
Error: spawn reg.exe ENOENT
at ChildProcess._handle.onexit (node:internal/child_process:285:19)
at onErrorNT (node:internal/child_process:483:16)
at process.processTicksAndRejections (node:internal/process/task_queues:90:21) {
errno: -2,
code: 'ENOENT',
syscall: 'spawn reg.exe',
path: 'reg.exe',
spawnargs: [ 'QUERY', 'HKLM\\NONEXISTENT' ]
}
Hey @tolik518, thank you for the feedback. We’re open to the idea of supporting Linux within the CLI. With a lot of the functionality designed to work with Stream Deck app (and therefore requiring macOS or Windows), it’s important to note that some functionality may be more limited on Linux.
Based on your post, would I be correct in saying you’re running WSL? If so, we could certainly scaffold a plugin, however other features such as hot-reload may require further investigation to see if they are achievable.
Hey @GeekyEggo, I would like to use the official SDK to create elgato plugins on Linux. While I can't use the official Streamdeck app to run those plugins on Linux, I can use an alternative like Opendeck.
So what I'd need is basically just the skeleton-creation :)
(the culprit seems to be setDeveloperMode btw, or rather the else branch over here, I'd make a PR, but I have no idea about node.js)
Edit: os.platform() returns linux for me, so this might be used in the mentioned place
I just saw your edit: I'm running Pop!Os 22.04 and I don't use Windows, but like I mentioned above, I use open source tools to run my streamdeck plugins :) Not having all features is expected of course
That’s perfect, thank you. We can definitely look to provide a slimmed down version of the create command to facilitate basic scaffolding on Linux. I’ll add this to our backlog.
I'm glad to hear that! If you have any questions or need any support, feel free to reach out to me