DIY option to have Steelseries keyboard and/or mouse with OLED screen show your Roon now playing information

After this post: Anyone here able to create something like the elgato plugin for Steelseries devices? - Tinkering / Roon API - Roon Labs Community I went ahead and tried to build something myself.

If you know node, git and have a Mac this could work for you too:

I like the use of the OLED screen:

Feedback is allowed, just not sure I will get around to it :slight_smile:

3 Likes

Got it running on Windows, just need to add these two lines to the imports at the top

import process from "process";
var env = process.env;

and then replace this line:

    let rawdata = fs.readFileSync('/Library/Application Support/SteelSeries Engine 3/coreProps.json');

with this:

    let rawdata = fs.readFileSync(env.ALLUSERSPROFILE+'\\SteelSeries\\SteelSeries Engine 3\\coreProps.json');

I did find that if my Zone has spaces in the name, that I needed to replace the spaces with hyphens in in index.js.

pretty sure one could use the value of process.platform do determine the proper readFileSync line of code to use based on OS, but I haven’t messed with it.

Edit:
I actually just forked the repo and implemented it, just submitted a pull request with Windows support added in.

@SlyBlue curious if this version works for you.

Made an Electron Tray app of it.
Screenshot 2022-01-20 at 13.58.37

1 Like

Oh wow I like that dropdown, as someone who uses multiple Zones at my desk (Speakers and Headphones) that is super handy.
It seems to throw an error when starting up:

> roon-steelseries-tray@1.0.0 start
> electron-forge start

√ Checking your system
√ Locating Application
√ Preparing native dependencies
√ Launching Application

App threw an error during load
TypeError: Cannot read properties of undefined (reading 'hide')
    at Object.<anonymous> (E:\roon-steelseries-nowplaying-tray-main\app.js:3:10)
    at Module._compile (node:internal/modules/cjs/loader:1116:14)
    at Object.Module._extensions..js (node:internal/modules/cjs/loader:1169:10)
    at Module.load (node:internal/modules/cjs/loader:988:32)
    at Module._load (node:internal/modules/cjs/loader:829:12)
    at Function.c._load (node:electron/js2c/asar_bundle:5:13331)
    at loadApplicationPackage (E:\roon-steelseries-nowplaying-tray-main\node_modules\electron\dist\resources\default_app.asar\main.js:110:16)
    at Object.<anonymous> (E:\roon-steelseries-nowplaying-tray-main\node_modules\electron\dist\resources\default_app.asar\main.js:222:9)
    at Module._compile (node:internal/modules/cjs/loader:1116:14)
    at Object.Module._extensions..js (node:internal/modules/cjs/loader:1169:10)

Ah yes, makes sense, I try to hide the app from the taskbar on MacOSX (Dock).

Updated the code to only try this on MacOSX for now.

1 Like

awesome, yeah it is working great now! Thank you for making this