Electroon: Mini Desktop Controller 1.0.1

Electroon _ Mini Desktop Controller Version 1.0.1

Windows x64:
v1.0.0

v1.0.1
creating installer...

Screenshots
Player

Search

Taskbar Meida Buttons
electroon3

:new: Live, NowPlaying Wallpaper
*Saves and reverts back to your current wallpaper upon exit

Speed Dial for Web Apps

Speed Dial - Google Music

To Do
All feedback is welcome.
Just create an issue here: https://github.com/wwwizzarrdry/Electroon/issues.

  1. Add window controls to player UI
  2. Remember more settings beyond screen size/position (always on top, etc)
  3. Redesign the list/browse UI
  4. Integrate LastFM API
  5. Expose Sonos API
  6. Enable Light/Dark theme
  7. Fix auto-position dimensions
  8. Improved settings screen design and add more options.
  9. Add auto-updater to electron app
  10. Live now playing wallpaper :white_check_mark:
  11. Improved speed dial:
    • Add custom links
    • Remember last app
    • Set flag to auto-open last app by default
    • Improved UI and workflow
3 Likes

Thanks for your work Ian. Extension working here.

In my case, with a 4k monitor and most of time working with the screen divided in two same-size-vertical spaces side to side, been able to have the Roon now playing info-image always visible while listening to music -most of time in my case while been with the computer-, is a really nice and useful add on for Roon.

For controlling Roon while using the computer I use the keyb (play-pause) or the mouse wheel of my logitech Master (for volume control), so the song Cover and the background image with the artist image are the keys of the extension for me. Maybe to have the posibility to hide the control icons and the the line with the on going track minutes/seconds counter could be nice.

Anyway, very good work!

I´ll keep using it and looking forwardto install new updates.

Again, thanks a lot!

That’s a good suggestion about being able to toggle different parts of the UI. I’ll add that to the options.

First of all, this looks great! So please take this as helpful notes - that is what it is intended as.

“npm run build” assumes that browserify is installed globally
“npm start” assumes that electron is installed globally
I used “npm install --global browserify electron” before I was able to build and run this. May be worth a mention.

FYI - It appears that “electron-screen” is not supported on Linux. So an “npm install” complains on this platform. But everything appears to be working.
Unsupported platform for electron-screen@1.0.3: wanted {"os":"win32","arch":"any"} (current: "os":"linux","arch":"x64"})

For streams that do not have a “total time” - like “Internet Radio” streams, the UI shows /NaN and the status bar does not move. With the app I wrote (Roon Web Controller), I look at the “is_seek_allowed” parameter in the zone. If it is true, then I show the current/total time. If it is false, I hide those times and hide part of the seek bar.

The background of the “now playing” screen shows artist images. For those tracks that do not have an artist image, thoughts on showing the album art instead?

Why manual IP for the server? Adding roon.start_discovery(); on the line after svc_status.set_status(magicEigthBall(), false); in the Initialize Service section of “roon.js” should auto discover the server for you - if you are in the same subnet as the server.

But this definitely looks great! Really like what you did with the layout and animations.

Thanks for adding your thoughts. And thanks for your contributions with your web controller - I was pretty lost a while back and your extension was invaluable to getting a foothold.

Electroon is definitely in an alpha state, with spaghetti all over the place as I fiddle. I’m still making design choices, as well as learning how electron and Vue play together in a packaged state.

Some community members were expressing a desire for a similar extension, and it’s more or less useable in most cases, so I offered it up.

Once I have al the pieces worked out, there will be a much more robust offering - ideally when I switch to using installers and auto-uodates can kick-in.

No worries! This looks great and I am envious that you are using Electron - you have a pretty consistent baseline you can program interfaces around.

Feed back I received early on definitely helped, so I hope you find the comments helpful. There is a LOT of potential here.

I was fiddling with Vue a while back, and while there was a lot that I liked, there were some things (like scrolling long text) that I couldn’t figure out how to implement for the desired end result. But the reduction in the amount of code that I needed definitely made Vue appealing. I haven’t really messed with Electron yet because I am still somewhat of a dinosaur - I still like the client/server model.

I will definitely be keeping an eye on your progress and cheering you on!

I know what you mean.
I prefer good ol embedded perl and an Apache server, personally. Going from legacy/enterprise by day and modern frameworks by night is goving me schizophrenia.

Hehe!

On the web front at work it is Tomcat and java server pages both for user facing web pages and for developer facing REST and Secure Token APIs. There are some other daemon based APIs like federated LDAP. We only use Apache as a reverse proxy to enable PKI certificate based single sign on. I do have one developer who is doing a pretty nice app with Nodejs, but it is an admin app, not a user facing app.

So yeah - it is interesting to work on something modern at home!

Looks great @wwwizzarrdry, thanks for your work.

So can we safely ignore this on arch linux?

@wwwizzarrdry, do you plan on a linux image at all?

Hi there, after testing 1.0 I´ve notice that, in a Win 10 with I5 procesor (4 cores,Intel 6th gen) and 8 gig ram, the extension uses around 30% of CPU. I know electron is not light in cpu resources, but may be that, 30%, is too much, no?

Thanks!

P.D although I didn´t test it in V1.0 -not available in that version- the wallpaper stuff (record artist-cover as wallpaper) sounds really good!

Hi @mannp,

After posting a very early concept, I didn’t want to keep building on top of the impossible spaghetti code I put together. I did some remodeling over the weekend and have a more robust electron-forge build running now.

In theory, this should make it much easier to package OS specific builds and keep the releases organized, as well as allow me to implement auto-updating.

My main goal now is to wrote a core Electroon that works on any OS, and then enable/disable features relevant to each OS, though my focus will be Windows and then Linux.

Ha, that’s a lot of juice! I’ll double back around on performance shortly.

1 Like

Hi @wwwizzarrdry sounds great, thanks again, will look forward to trying an arch linux build at some stage in the future then :wink:

I simply ignored it and the app ran fine. I did notice issues with Nodejs 6. But with Nodejs 10 it worked fine.

This extension looks interesting even in this alpha form. I’m not quite getting it’s overall purpose but it looks like it might be a way to achieve something I’ve been wanting to do.

I’d love to be able to display the artwork and details of what Roon is playing on a full HD TV display via HDMI. It would seem a Raspberry Pi running this extension could let me do that. if so, what would I need?

Great thanks.

Not quite sure this is one of the use cases for this extension. This one is more for interacting with Roon from a desktop.

However, it is one of the use cases for the web controller that I wrote. In fact, here is a guide on installing Diet Pi on a Raspberry Pi that would meet your goal… https://github.com/pluggemi/roon-web-controller/wiki/Diet-Pi-Installation-Extension-Manager

You can change the url in the client configuration of the document that I just linked to point to any web page that you would like to display on a TV. But as written, the mouse cursor is hidden, so if you want to interact with a mouse, you would just skip the step to modify this line NODM_X_OPTIONS='-nolisten tcp -nocursor'…

EDIT: Looks like with the new release of Roon, there is a “Now Playing” web page display from Roon itself! Running this display on a TV would be quite nice!

This was a byproduct of Browserifying the Vue components and Roon api (which I have subsequently stopped using). But essentially, all the places where Electroon used server_ip, server_port would be saved in roon_bundle.js, a big problem in a multi-core envrionments.

Since I ditched browserifying, as it’s really unnecessary in Electron, I noticed roon.start_discovery() is undefined at every point of the life cycle. I followed the example and tried running it right after registering services, but it always fails as an unknown function. It’s definitely there in the core lib.js, so I’m a bit confused by this at the moment.

The project started simply because Roon’s current desktop controller, although full featured, really only works well in fullscreen mode, and more importantly, totally ignored Linux. Electron will allow me to ultimately make a universal desktop app that runs the same across all operating systems. And it’s responsive design will allow it to fit into people’s workflow as a mini controller.

That is odd behavior indeed. I use it in mine without issues and it is showed in the example on the node-roon-api github page.

Maybe it is a sequencing thing with Electron - but I really don’t know…

Have you mentioned it to @ben?