Roon Extension: Roon Web Controller v1.2.0

That is roughly what I had in mind with the switch block for the “volume.type” variable. As I play with it the need for the switch block for “command.action” may become apparent.

Out of curiosity, which device are you using that uses an “incremental” type? It would definitely be easier for me if I could test something before I release…

That is the problem, you cant test it because currently it appears to be broken in roon server (I am communicating with Roon about this).

The specific device is harmony remote control (my deep harmony extension) however this would also apply to anything else that uses some kind of up/down remote control mechanic. I think someone did an IR control for something as well via FLIRC.

As it turns out, I have a Harmony Hub that I can probably use for testing this with your extension. Even though it appears to be broken, there may still be value in testing out the API as it is…

I get you. Yes - if you call the transport API then that will work.

Deep Harmony does this when you press the up/down volume buttons.
You could privately test by assuming the type is incremental when empty for a specific zone then I guess remove the test code once tested until it gets fixed.

The incremental type now makes a lot more sense to me since the Harmony has no way of knowing what the current value is…

1 Like

Looking at my readme - not yet pushed to github - I need to do some work on the Volume Overlay of the V2 anyway. The overlay on my alpha v2 does not show with a fixed volume zone, which is not a good user experience…

A quick thought, depending on what response I get from roon in terms of a fix, we could agree on a short term work around involving a suffix on the zone name “Main +” for eg and then assume that any zone name with a missing volume block and a ‘+’ on the end of the name is an incremental output (rather than fixed).

Then just have to get people to rename their zone until a permanent fix).

From my experience with bug reports, the Roon folks have a pretty good turn around. The bugs that I have reported though Github issues on the roon-api and through other channels were generally fixed in the next stable release. Obviously I cannot speak for them on this, but they do have a good track record.

The 1.2.0 branch of this extension is not receiving any more updates. The code is just too unmanageable and I can not do what I want with it anymore. The alpha branch is not likely to be released as final code any time soon. So my gut feeling is that the fix will be in place before I can release any code to implement a work around.

Not a bad suggestion though and the user base for your extension would likely appreciate it! If I have final code that is ready to release before the bug is resolved, I can follow your example.

Indeed - my experience has been good as well and both the source and volume control API got a PR in from me.

However because this will probably low priority relative to other work (in terms of impact not being core product - number of users affected seems low etc), then always a risk it may be a while unless its a 30 second fix. I have to be honest as a past dev manager I would be tempted to triage this as low priority unless the fix is trivial and extremely low risk.

Even so, I’ll update as soon as I know anything from Roon.

As a current dev manager, part of the triage include scope evaluation on what it would take to fix. And I love getting low hanging fruit into releases. But fully agree, we can wait and see. The Roon dev folks do a great job and I would never want to give impression otherwise!

Definitely keep me in the loop!

1 Like

Hi @Mike_Plugge

Love the plugin. Checked out the Alpha 2 as well. Looking good but I still prefer some aspects of 1.2.

I’ve made a companion electron app (called roonweb) to have the web controller run in frameless with hidden titlebar and still be dragable by the album art. I’ve compiled it to an electron exe with all dependencies. I just created a taskbar shortcut to my roonweb exe that launches Roon Web Controller.

Im not really a developer, just played around till I got it to do what I wanted.

I wonder if you could consider something like this later down the track as well as a hotkey for making it semi trannsparent and stay on top.

At the moment I’ve edited your nowplaying.css by adding -webkit-app-region: drag; to line 25 in

.itemImage {
border-radius: 10px;
width: auto;
height: auto;
object-fit: contain;
-webkit-filter: drop-shadow(5px 5px 5px black);
-webkit-app-region: drag;
filter: drop-shadow(5px 5px 5px black);

This allows you to drag the window around and you can still resize the window from top/bottom/sides.
The problem i have is I havent worked out where to put the opposite command -webkit-app-region: no-drag; in the css files to keep the nowplaying/library button clickable. The work around is to make the window bigger to move the button away from the album art. Any advice on this?

I’ve also made a AHK script that allows me to toggle my electron app to semi-transparent and keep ontop.

Standard and semi-transparent modes side by side.
roonweb by Hilton, on Flickr

Full Desktop view
roonweb-desktop by Hilton, on Flickr

Stay on Top
roonweb-ontop by Hilton, on Flickr

Using as game overlay in cloudpunk (stayontop semi-transparent)
All controls still work of course.
roonweb-gameoverlay-ontop by Hilton, on Flickr

I can share the compiled roonweb if anyone else wants it and maybe publish to GIT though I’ve never done that before.

Cheers and thanks again @Mike_Plugge … love your work!

1 Like


roonweb-landscape by Hilton, on Flickr

Fullscreen semi-trans
roonweb-fullscreen by Hilton, on Flickr

1 Like

Yes, I do want to play with it.

Ill upload it somewhere safe and provide a link.

It works with Alpha 2 aswell. (well sort of - havent worked out how to make it draggable.)

Published RoonWeb Electron Web App for Roon Web Controller to GitHub here >>

You’ll need to drop this nowplaying.css file into your user appdata under C:\Users\AppData\Roaming\RoonExtensions\node_modules\roon-web-controller\public\css\nowplaying.css

Hopefully I’ve done it right. Never done this before.

Added the AHK semi-transparent / stayontop script…
Just download it to your downloads or documents folder and run it. (need to download and install AHK first) oh and run it as administrator.

@Hilton_Kelly - This looks great! I will likely look at your code since I had wondered about doing transparency with Electron on a different project!

You may want to create a new thread for this since in the past, there have been quite a few requests for things like this. I am not sure how much advice I can give you on the drag/no-drag, but it is likely that other would be able to help. And a new thread may get some more eye balls on this.

Many thanks for this.

I see however a windows specific folder while I’m on Mac. I have a virtual Win machine but since the update to Win 10, it has become too slow to be useful.

Unfortunately cant help you with that. Hopefully someone else will pickup the code and compile a Mac version for you. You could still run the uncompiled npm javascript code though in the short term.

OK, will try that.