20 ms·
Psst: Fast Spotify client with native GUI, without Electron, built in Rust
- dt2m 5y agolooks very cool, might switch back to spotify just for this. the speed and feeling of pre-bloated iTunes is still the benchmark to which i hold any music app, and this might be the next best thing. appreciate the work here.
- jakecopp 5y agoI love the look and idea of this - are alternative clients against the Spotify ToS though? Would be such a shame to put in all this work only for Spotify to kill it.
- Vespasian 5y agoIt uses private APIs to retrieve the decryption keys from the server and circumvent the DRM. It's certainly against the ToS and probably illegal in some jurisdictions
- conradev 5y agoUsually the way it works is that _using_ the software is illegal, but distributing its source code is not. Code is covered by the first amendment in the US.
- dannyobrien 5y agoUnfortunately, the DMCA 1201 court decision that establishes once and for all has yet to occur. EFF continues to pursue it though: https://www.eff.org/cases/green-v-us-department-justice https://www.eff.org/cases/green-v-us-department-justice
- Vespasian 5y agoI'm going to give it less than a year now that it has been featured on HN. This is too user facing and too easy to modify for DRM circumvention (if it isn't already doing that) Whether it dies through a DMCA takedown or harder DRM measures remains to be seen. I'm always sad to see people investing lots of time into creating great software that exists in a legal dark grey zone and will inevitably be nuked. And yes I'm also not happy with the standard Spotify client
- bob1029 5y agoDRM for audio is so laughable. Any bit of patience allows for even the most rookie of users to rip a track from spotify. If it weren't for all the legal agreements with copyright holders, I feel like spotify would already have an open playback API.
- 56h4h4h 5y agoThe name of the game is risk mitigation. In this case, there are lots of ways to rip a singular track. They are usually slow because you record the audio stream from Spotify. But if you could get the original file from Spotify's servers and decrypt it yourself, you could automate downloading your entire library, offline forever at source quality DRM free. Unfortunately, that is illegal and Spotify is going to dick them with lawyers. Pretty sure that's what happened to this project: https://news.ycombinator.com/item?id=25017167 https://news.ycombinator.com/item?id=25017167 History: after the developer decided to pivot from only being a tool to scrape the encryption keys needed to decrypt an individual song, the developer decided it would be a good idea to build in automating the downloading and also decryption of those files, instead of letting people develop that as a separate tool. Developer and project has disappeared shortly after that decision.
- 1vuio0pswjnm7 5y agoArchive.org still has copies.
- fabianhjr 5y ago> source quality Spotify does at most MP3 320kbps, source quality would imply something like lossless FLAC/AAC
- tim-- 5y agoI thought that the audio from Spotify was all ogg?
- vladvasiliu 5y ago
- codetrotter 5y agoLooks really nice! I switched to Apple Music like a year ago but if this is good then I might switch back to Spotify. I remember seeing some demos of the UI library Druid in the past but I didn’t realize it was at the stage where complete applications like this could be built. Is there any plans for iOS support?
- jreese 5y agoAt this point, I'd be willing to pay for a Spotify client that works exactly the same, but just ignores the existence of podcasts entirely. I use a dedicated podcast client when I want to listen to podcasts, and they keep shoving them in my face and taking up precious UI real estate everywhere. But any client without support for Spotify Connect might as well be dead to me. Controlling my wifi speakers from my phone, or playing music on my desktop Mac from my laptop or gaming PC is critical functionality at this point.
- matthewfcarlson 5y agoI'm with you 100%. If they had a decent podcast experience, I'd be happy to switch but it's terrible. Why can't I mark something as already played?
- josephg 5y agoYep; I'm a paying customer of spotify and I like some of the podcasts they have. But they don't have the gap removal + speed controls of Overcast (my fav podcast program on my phone). So I'm in this weird situation of never wanting to listen to any podcasts through the spotify app, which I'm paying for. And then when I want to listen to music (eg while coding) I have to wade through podcasts which are intentionally designed to blend in with music recommendations in spotify's apps. I hate it. If any spotify PMs are listening: - If spotify wants me to listen to podcasts, let me do it from my existing podcast app. I'm sure the developer of Overcast (and other apps) would happily add a spotify login button for a song if you ask nicely and offered to pay. - Let users disable podcasts entirely in the spotify app. - In the spotify app, give podcasts a consistent visual differentiator so I can easily visually separate them from music. Nobody wants to be tricked into listening to a podcast instead of music. Maybe make the "album cover" for podcasts a rectangle instead of a square. Or change the background color for all podcast related content to blue so I can find podcasts visually (or filter them out visually) while scrolling.
- fossuser 5y agoI don’t think Spotify wants you to be able to use your favorite app. Their strategy is to take the open protocol of podcasts and pay the hosts to turn that into centralized tracks on Spotify to force you as the user to use Spotify to listen to it. It’s about control intentionally - that’s the strategy.
- riskable 5y agoJust downloaded this to try it out... This is now my new Spotify client! It's so damned efficient it barely registers in my CPU monitor. Check out the memory utilization too! https://i.imgur.com/Fa3Dnnb.png https://i.imgur.com/Fa3Dnnb.png Now compare it with the semi-official Spotify client: https://i.imgur.com/nNWFIj1.png https://i.imgur.com/nNWFIj1.png
- lostmsu 5y agoAccording to this: https://forums.overclockers.com.au/threads/winamp-memory-usage.74302/ https://forums.overclockers.com.au/threads/winamp-memory-usa... Winamp 2.72 only used about 8 megs of RAM.
- dotancohen 5y agoEight Megs And Counting. Wow, eight megs was once so much memory that we would laugh about applications that even approached it.
- TchoBeer 5y agoIt's really crazy how quickly things have gotten bigger. I remember not too long ago my mid-high power computer had 1Gb of RAM, nowadays that would be laughably small.
- rvz 5y agoSo Electron is the problem. It gets worse if you have lots of tabs open in Chrome + running other electron apps as well. A visible and obvious improvement when compared with a native app. Also, Electron apps do not scale and it wastes CPU time, eats RAM up and fills up HDD space. On laptops, it drains the battery faster. A quadruple negative to the user.
- userbinator 5y agoThe second one should be sorted by name to show that there are actually multiple spotify processes. (There's another one near the bottom of the list.)
- andrewmcwatters 5y agoI love seeing software like this, even if it's not legal. Who cares? I remember being a teenager and trying out all sorts of cool underground, fundamentally illegal software, or stuff that worked around Terms of Service. Where would the world be today without Napster? Maybe the same place, but provocative software is the definition of cool.
- gjs278 5y agopeople on here care about laws too much. it's a api/webscraping tool redisplayed a gtk window. nobody is going to go to jail. even if they dmca it someone should just host the sources on anything other than github and let it ride. people cheat at videogames all the time, they can cheat on a music client.
- jazzyjackson 5y agoNothing illegal about it, Spotify has a well documented API and supports third party clients
- sunshineforever 5y agoSo does this version not have advertisements or something?
- laserbeam 5y agoYou still need to log into spotify to use any 3rd party app and none of the playback apis will work without a premium account. Apps like this one are for people with premium accounts.
- laserbeam 5y agoEh. Ish. They only support playback within a browser and have deprecated native playback support years ago. Also their ToS technically doesn't let you do a looot of things you may want. Like caching. Srsly, you're not allowed to cache things. Many 3rd parties stopped supporting spotify because the dev ToS kept getting worse. Regardless, I'm excited about this little project even if it goes against the ToS.
- IceHegel 5y agoTried to build on M1/Apple Silicon, but hit some errors. Looks like one of the dependencies isn't playing nice with arm but would love to give this a try. Any rust devs have second? I think its the miniaudio dependency that's broken.
- noiv 5y agoCheck the workflow for artefacts, the macos build runs on m1.
- VirenM 5y agoIIRC the workflow targets macOS-latest, which is macOS Catalina 10.15 and the default host is `x86_64-apple-darwin`. Does Github Workflow currently support M1 (arm 64 based). Am I missing something?
- artursapek 5y agoNot yet, it's bottlenecking a lot of progress waiting to be made. https://github.com/actions/virtual-environments/issues/2187 https://github.com/actions/virtual-environments/issues/2187
- VirenM 5y agoThis link should help[0]! [0] https://github.com/jpochyla/psst/issues/87#issuecomment-900305653 https://github.com/jpochyla/psst/issues/87#issuecomment-9003...
- tiew9Vii 5y agoThis is good to see. It shows you can write native cross-platform apps that are fast and have low system resource usage instead of the now default, packaging your app in a standalone resource-intensive web browser, aka Electron. It's a shame we have a handful of people who can do this as a hobby project yet multi billion dollar companies with the money and manpower to do this don't, they chose Electron.
- ramesh31 5y ago>It's a shame we have a handful of people who can do this as a hobby project yet multi billion dollar companies with the money and manpower to do this don't, they chose Electron This is a purposeful decision though. How else could they track a thousand different metrics about you without 20mb of Javascript?
- tomc1985 5y agoOh, don't forget the legions of cheap javascript newbs fresh out of boot camp that they can hire!
- zingplex 5y agoIf it's just for tracking, why not ship a JS runtime and run the tracking in a separate thread. No electron needed.
- stjohnswarts 5y agobut electron does have a JS runtime included?
- pritambaral 5y agoToo much work. With Electron, one can just `npm i electron-analytics` and done. Without Electron, libraries like that will have to be patched (at least) to be usable with the custom runtime.
- brundolf 5y agoWhy would an Electron frame allow them to track you more easily than a native desktop app that has access to your whole (userspace) system?
- jeroenhd 5y agoI've never given Spotify a try because of the crummy web/Electron player I saw everyone using. Wanted to try this out, but it only works with a premium account. That could've been mentioned more clearly, would've saved me the effort of compiling this thing. I can't judge the main application but just the settings screen makes me feel like the UI library powering this isn't quite ready for prime time yet. I consider shortcuts and basic text handling like ctrl+a to select all text in a textbox to be basic features for any UI toolkit; the lack of such ease of use features really makes the GUI toolkit feel less native than the Electron cruft that's overtaking our desktops. As for the legality, the DMCA sucks but this client is definitely in violation of it. Breaking the TOS isn't necessarily illegal so the tool is fine to use (at the risk of getting your account banned) but development can be quite risky. Hopefully, Spotify takes an interest and uses (a fork of) this project to write a faster player for their desktop clients instead of cease-and-desisting it to hell.
- fabianhjr 5y ago> As for the legality, the DMCA sucks but this client is definitely in violation of it. How is it definitely in violation of the DMCA? (Not a lawyer and not a USA resident, would appreciate legal clarification)
- kxrm 5y agoNot who you replied to, but if anything decrypts a DRM stream in an unauthorized way, it technically is breaching DMCA. I assume that is what they meant.
- jeroenhd 5y agoAny circumvention of DRM, even simple DRM as long as it's not too trivial, is considered illegal under the DMCA. The decryption routines Spotify uses should definitely be considered non-trivial DRM.
- mimimi31 5y ago>it only works with a premium account. That could've been mentioned more clearly I agree, although it looks like you only have to change a single line of code to make it work without a premium account. Might as well go all the way if you're already breaking the TOS anyway I guess.
- rob-olmos 5y agoRelated to the Spotify desktop client, I still don't understand why I have to restart the app when my internet connection is interrupted.
- skavi 5y agopeople who are interested in this will also be interested in ripcord [0], a native client for discord and slack. [0]: https://cancel.fm/ripcord/ https://cancel.fm/ripcord/
- asdff 5y agoRipcord is excellent but you need to generate a new login token every few weeks. Sucks that these companies like slack and spotify et al. don't just offer the tooling themselves that a subset of their customers clearly want.
- skavi 5y agoI have not had to do that.
- asdff 5y agoYour organization probably does not use secure sign on then.
- anonymousab 5y ago> Sucks that these companies like slack and spotify et al. don't just offer the tooling themselves that a subset of their customers clearly want It would give up control and it's an admission of failure; a slap in the face to some project lead, some designer, some exec, showing that their brilliant ideas were not in fact the superior option for everyone forevermore. Either of those are unacceptable enough to lock the system down. But both? Never in a million years.
- 1vuio0pswjnm7 5y agoFrom the Ripcord page: "Shareware is coming back, baby." This is quite amusing. Further down: "How do I prevent Ripcord from checking for updates before I'm able to open the preferences window to disable it? As I recall, shareware never did that. It violates the spirit of leaving the user alone, user automonomy. Shareware sometimes used to provide a way to check for updates, and sometimes allowed for this to be done automatically. But it generally did not try to make network connections without any permission from the user. Shareware often used to provide contact information for the author so that users could show their appreciation. Authors invited voluntary feedback. Today authors instead try to perform telemetry and control the use of the software after download through "automatic updates". They seek to gain from users' laziness to change defaults. They want to collect information about users and their usage habits. "Involuntary feedback." Anyway, his answer is: "Set the environment variable RIPCORD_ALLOW_UPDATES=0" How about starting the program while offline, i.e., network interface down.
- maybe_pablo 5y agoThis is awesome. I wish something like this existed for Slack! edit: it does[0]! [0]: https://news.ycombinator.com/item?id=28205333 https://news.ycombinator.com/item?id=28205333
- dehrmann 5y agoNit: Spotify isn't electron-based. https://www.quora.com/How-is-JavaScript-used-within-the-Spotify-desktop-application-Is-it-packaged-up-and-run-locally-only-retrieving-the-assets-as-and-when-needed-What-JavaScript-VM-is-used https://www.quora.com/How-is-JavaScript-used-within-the-Spot...
- laserbeam 5y ago"Chromium Embeded Framework". When people say Electron based they don't really care if it's using Electron or any other browser. It's still a browser. And it's therefore at least 100x slower than it could be.
- varajelle 5y agoAnd when people say "iPhone" they don't really care if it's an actual iPhone or just any smart phone?
- mythz 5y agoWhat's funny about having to rely on unauthorized clones to provide a fast native UX was that Spotify's original client back in 2008 started out as beautifully light, custom rendered native client. Few Apps ever had that wow factor the first time I used it, it was so much lighter and more responsive than anything else of the day. I remember being perplexed at how I could search and skip to any part of a song quicker than iTunes could looking at a local library. Everything was latency-free and instantaneous. We were building a Music Startup at the time, so we investigated how it worked. We we’re very surprised we couldn’t find any evidence of an established UI toolkit. It looked as though they had built their own custom UI renderer and optimized TCP protocol which sent back its metadata in XML. Their traffic looked like it was initially seeded from their own (or CDN) servers (for best latency) and then overtime we would see some P2P traffic on the wire. Our QT/C++ client had decent performance but was noticeably heavier than Spotify's. I was disappointed to see their native client eventually be abandoned and succumb to become yet another Chromium wrapper. I expect it fell to the pressures of a growing startup adding 100s of developers (without the skill of their original CTO/devs) where a native UI couldn't be updated and re-iterated as fast as a Web App. I wish they maintained 2 desktop clients, and left their native client alone to just be an audio player and push all their new social features to their new flagship CEF app. It's unfortunate the skill and desire of building fast native UIs are being lost to Electron and CEF wrappers. Seems the larger the organization the more likely they are to build new Web rendered Desktop Apps and we have to rely on unauthorized Indie efforts like this for fast, responsive native UIs.
- judge2020 5y agoThe problem (or rather value proposition) is that the only thing that matters is the end-user's perceived value, and that's almost always in the form of features and stability. Most people don't care that it takes an extra 10-100 milliseconds for the UI to react compared to a native app, especially given they just want to listen to music, which the app does just fine. If people specifically don't like the social features, they'll be mad at the decision to implement those social features instead of 'what they used for the tech stack' since ultimately Spotify could have developed the same features in a native app with just a few extra weeks of sprint, if that.
- jhatemyjob 5y agoWhat a rookie mistake, making this open source. Hopefully the author wises up.
- modshatereality 5y agoA vote for open source is a vote for minified javascript.
- soheilpro 5y agoThis is great, but the sad truth is that unofficial clients like this can never grow big and support more than a few thousand users, given how ridiculously low Spotify API's rate limits are. My project https://volt.fm https://volt.fm has 100k+ users now and I'm really struggling with the Spotify API.
- CamperBob2 5y agoHow does the nature of the API determine the number of users?
- soheilpro 5y agoI meant rate limits. Edited my original comment.
- tim-- 5y agoThe trick would be to have each user register their own API key.
- ShroudedNight 5y agoThis seems like such an obvious answer, why isn't it significantly more common?
- kzrdude 5y agoBecause that will also self-select the audience to be really small.
- tim-- 5y agoNo, not at all. There are ways to implement this without making it a requirement to use the app. For example, you implement a counter for each user of the app, so they can only use a subset of the API requests allowed for your application. Then if they go over their allocated amount of calls, or they have been a user for X days/weeks/months, you give them a guided walkthrough on how to register their own API key.
- quaintdev 5y agoI hope this becomes popular enough that Spotify buys this and makes it default. I have not used this but anything is better than current Spotify memory hog. I miss those WinAmp days.
- q-rews 5y agoAnyone thinking this is delusional. Spotify works in a browser and there’s no non-CSS-based framework that can do that. The reason Electron is popular is because you can have a single codebase for ALL the targets.
- S0und 5y ago> a single codebase for ALL the targets Spotify even has a pretty detailed post on this: https://engineering.atspotify.com/2021/04/07/building-the-future-of-our-desktop-apps/ https://engineering.atspotify.com/2021/04/07/building-the-fu...
- jbverschoor 5y agoActually, you could just use use react (or vue or angular with nativescript) and have one codebase with a __native__ ui on desktop + css on the browser, but keep the app-logic and UI code the same.
- avh02 5y ago> Spotify works in a browser Anecdata: I have used this functionality literally once in ~5 years. Safe to retire it and build a real client. I suspect most people don't use the browser.
- robertwt7 5y agoReally great job. I wish there is one for apple music.. Since switching to apply music it has been a pain to open iTunes in my PC.
- pkphilip 5y agoSpotify should pay this guy to make their official native client or at least license the software from him.
- pleb_nz 5y agoI would love to see something like this adapted for YT music?
- mastax 5y agoJust cloned and built this - was running within 3 minutes with no effort. On Windows. That's unusual for native GUI apps to say the least. Didn't know Druid was even at this stage yet so that's nice to see. It's definitely living up to the goal of 60fps smooth resizing.
- miki725 5y agoThis is amazing! Anybody knows anything similar for other music services like YouTube Music?
- stjohnswarts 5y agoIt's working just fine so far on Linux even it sounds like they're mostly using MacOS. I could see using this a lot if playlist support was added. It seems snappy. I'm kind of surprised that htop reports 165M and Cpu reporting 38-45% which seems a tad bit high for playing a sound file O_O . I know it's early days though, so I'll keep an eye on it for sure. Very clean interface.
- jpochyla 5y agoHi, thanks for being interested! There've been some regressions lately, sorry :| Performance is #1 priority for me, and a big focus now, after last round of refactorings.
- MonoidWitness 5y agoWow! Could Rust return the desire to build fast native UIs? I sure hope it does. And also is there Apple Music native app? Because the standard client is such a mess of an app.
- deleted 5y ago[deleted]
- toothbrush 5y agoRunning the risk of being a dirty reposter and.. reposting. My little Spotify client is for macOS only, mostly only built for my own use, and a lot more minimal, visually. It's also native Swift though, so it's got that nice macOS feel. It's also pretty much 100% keyboard-driven (Vim keys, if that's something you like) and supports regex filters. It's just an open-source thing: https://github.com/toothbrush/Spotiqueue https://github.com/toothbrush/Spotiqueue
- dorian-graph 5y agoI like this! Thanks for (re)posting it.
- PascLeRasc 5y agoI love this! Thanks for making it.
- raymondgh 5y agoAdd private listening by default and I’ll forget many other features
- exciteabletom 5y agoI've been using Spot[0], which is another Rust Spotify client using GTK. [0]: https://github.com/xou816/spot https://github.com/xou816/spot
- boudin 5y agoAnd for those wanting a ncurse client, there is ncspot [0] which is quite stable and complete. [0] https://github.com/hrkfdn/ncspot https://github.com/hrkfdn/ncspot
- nicolaslem 5y agoI never really got into Spotify because I found the UI so confusing, clearly designed for "engagement" instead of usability. But this is perfect: - search for the name of an album, press enter and voilà it plays the album in order like I expect - Playback takes 1% CPU and 0.1% of RAM - vim-ish bindings - It even works with physical play/pause/next... keys on my keyboard Thank you!
- petepete 5y agoInstantly installed and wow - this is outstanding. Thanks for the recommendation, had never heard of it.
- graynk 5y agoI actually liked this a bit more than Psst, thank you for the comment
- ivolimmen 5y agoI am definitely going to check this out. I use the Spotify snap under Ubuntu as I never got Spotify client working when I upgraded to the lastest Ubuntu and they keep working on the main stable. I do not hate the UI of Spotify but having alternatives is really nice. I also have Spot installed. It is also a simple and native application to listen to your music. I am a very heavy Spotify user. We have a family subscription so my kids have their own premium. Last year I listened to 60K songs; I really like the yearly review BTW. Yesterday I was talking to my wife and we just swallowed the pill completely and we will be throwing out our CD collection to make room for a new cabinet (I currently own around 1000 CD's).
- qudat 5y agoAnd like moths to a flame, any mention of electron on HN spurs complaints only this community cares about.
- forrestthewoods 5y agoEveryone hates slow, laggy, shitty software. The average consumer just has no insight as to why their software experience is bad. But don’t be fooled. A snappy, smooth experience does matter to consumers. Even when they can’t even quantify why one app “feels good” and another “feels bad”.
- qudat 5y agofast enough is good enough. All the words you used to describe a good experience are subjective and relative.
- forrestthewoods 5y agoAnd your point is? Is 20fps fast enough for a video game? 30? 60? 90? 120? 240? It’s subjective and relative. That doesn’t mean it isn’t important or meaningful.
- tim-- 5y agoOne thing that has devastated me about recent Spotify updates is that now, when viewing an Artist, you do not get to see all of the albums (or at least the first 10 newest albums) for that artist straight away with all of the tracks listed. It's now much harder to find a song that you don't know the title of, but you know an artist has sung. It's also small changes that are extremely annoying. Pressing "New Playlist" used to come up with a dialog box asking what the playlist should be named. Now it just gets called "New Playlist". Clicking the playlist name to rename it does not automatically select the textbox to give it a name, meaning that to create a new named playlist - an action that used to take one click, is at least three clicks and two keyboard presses... I mean, come on Spotify! The search bar used to always be visible. Now I need to click search first, then click the search bar. To me, Spotify was the epitome of software completion five years ago. The client worked. It was perfect. It seems like every single update since they released the "Daily Mixes" has both downgraded the performance of the app, and made discoverability harder. I want Spotify how it was 18 months ago. Spotify on my machine sometimes chews up 2GB of RAM. Reached out to support, and the best that they can give is "try restarting the app". That helps, until 12 hours later you need to do it again. A music player should not have 10% CPU usage on a modern MacBook. Finding Psst has been a life changer.
- milofeynman 5y agoI have also noticed this. There isn't even a way to see songs, you always have to go to each album. I don't remember the album! Or the name of the song!
- norov 5y agoUnder the artist's page, select their Discography. Songs not released under albums should show up under 'Singles'
- tim-- 5y agoAgain with the multiple clicks though. You need to select 'Singles & EPs' after clicking the drop down with the label 'Albums'. To see all the tracks, you first need to change the view from grid view to list.
- numlock86 5y ago> Psst: Fast Spotify client with native GUI, without Electron, built in Rust I wonder what's faster: The new GUI, linked user accounts getting suspended or the project getting legal issues with the result of being taken down. ¯\_(ツ)_/¯ No, seriously. I support projects like this. But they pretty much always end the same. It's always sad to see so much effort go into waste. I get the motivation but I think there are a lot of other things to spend this kind of work on other than somethings that breaks a service's TOS from just reading the title.
- bluepizza 5y agoSpotify API is open. He is not breaking any ToS.
- ubercow13 5y agoThis uses the same API as libspotify, a library for accessing Spotify for playback that Spotify released themselves. It’s not been supported for a while so future support for this API is unclear, but it’s not clearly going to be shut down like you suggest. Apple Music also has an official and maintained API for building third party clients.
- jcq3 5y agoNo ad blocking feature?
- looperhacks 5y agoSince this client (like all third party clients) requires a spotify premium account, ad blocking shouldn't be necessary.
- TheRealNGenius 5y agoThe play button in the image looks off-center. Probably a case of centering horizontally as opposed to the centroid.
- reacharavindh 5y agoThis feels like such a breath of fresh air. I wish there comes a wave of such native implementations of popular electron resource hogs - Slack, Teams, WhatsApp etc.
- mrweasel 5y agoWhat I don't understand is: How many developers do you really need to create a native Spotify client? My pet complaint is Google Chat, which is now a web app or a PWA. Seriously, I don't believe that Google can't afford to have three Mac developers assigned to Chat and create an awesome native application, rather than shipping that piece of junk PWA. Similarly I don't buy that Slack, Facebook and Microsoft can't hire or train the most bad-ass Mac or Windows developers to work on native versions of their products.
- tomduncalf 5y agoSlightly off topic, but it’s a shame Spotify’s web API doesn’t support (and they’ve said never will support [1]) playlist folders. I get that it’s a bit of a power user feature but it’s an essential one for me in any media player. Makes me worry they’ll remove the feature from their app one day (they allude to it being a bit of a mess in the database) which would be the push I’d need to move away to either another service or a local collection only… [1] https://github.com/spotify/web-api/issues/38 https://github.com/spotify/web-api/issues/38
- golondon 5y agoGreat work! The part I don't understand is how do you find the motivation to write such time taking things? Outside work? At work? I guess you don't know whether this would be profitable or not, how do you stay motivated?
- jpochyla 5y agoThank you! I took some time off after finishing my last full-time commitment, and wanted to cut my teeth on Rust a little bit -- exploring how feasible building cross-platform native apps is right now. So I've started building something that I'm missing and would like to use. Combine this with the pandemic, and here we are.
- golondon 5y agoThanks for the answer!
- sdfjkl 5y agoI expect it will soon run into the troubles that NewPipe/SkyTube or even Barinsta suffer from.
- glogla 5y agoNice! I also suspect that this one doesn't destroy ssds by running OPTIMIZE or whatnot on its internal sqlite, unlike the official client?
- EastSmith 5y agoFor the last couple of months I am using open.spotify.com (i.e. I uninstalled the native Windows app). Works great, not sure if I am not losing some audio quality, but if I do - I have not noticed.
- mcjiggerlog 5y agoFor linux there is a snap of the app available, which is a lot easier than building it from source: https://snapcraft.io/psst-gui https://snapcraft.io/psst-gui
- pacifika 5y agoDidn't build on macos 11.5 ``` Compiling sized-chunks v0.6.5 error[E0658]: `if` is not allowed in a `const fn` --> ~/.cargo/registry/src/github.com-1ecc6299db9ec823/sized-chunks-0.6.5/src/inline_array/mod.rs:119:5 | 119 | / if element_size == 0 { 120 | | usize::MAX 121 | | } else if element_align <= container_align && host_size > header_size { 122 | | (host_size - header_size) / element_size 123 | | } else { 124 | | 0 // larger alignment can't be guaranteed, so it'd be unsafe to store any elements 125 | | } | |_____^ | = note: for more information, see https://github.com/rust-lang/rust/issues/49146 https://github.com/rust-lang/rust/issues/49146 error[E0658]: `if` is not allowed in a `const fn` --> ~/.cargo/registry/src/github.com-1ecc6299db9ec823/sized-chunks-0.6.5/src/inline_array/mod.rs:121:12 | 121 | } else if element_align <= container_align && host_size > header_size { | ____________^ 122 | | (host_size - header_size) / element_size 123 | | } else { 124 | | 0 // larger alignment can't be guaranteed, so it'd be unsafe to store any elements 125 | | } | |_____^ | = note: for more information, see https://github.com/rust-lang/rust/issues/49146 https://github.com/rust-lang/rust/issues/49146 error[E0599]: no associated item named `MAX` found for type `usize` in the current scope --> ~/.cargo/registry/src/github.com-1ecc6299db9ec823/sized-chunks-0.6.5/src/inline_array/mod.rs:120:16 | 120 | usize::MAX | ^^^ associated item not found in `usize` | help: you are looking for the module in `std`, not the primitive type | 120 | std::usize::MAX | error: aborting due to 3 previous errors Some errors have detailed explanations: E0599, E0658. For more information about an error, try `rustc --explain E0599`. error: could not compile `sized-chunks`. warning: build failed, waiting for other jobs to finish... error: build failed ```
- varajelle 5y agoIf I had to guess, I'd say you're using a too old versions of rust. In the future, one will be able to give a nice error when this happen (https://github.com/rust-lang/rust/issues/65262 https://github.com/rust-lang/rust/issues/65262) But now it's true that it can be hard to know what the problem is.
- dmit 5y agoYep, the two missing features are `usize::MAX` (stabilized in Rust 1.43, April 2020), and control flow in const fns (stabilized in Rust 1.46, August 2020).
- merrvk 5y agoThis is excellent, just what I use spotify for, music.
- madeofpalk 5y ago> Spotify client with native GUI, without Electron, built in Rust Does this use system UI control bindings? What makes a UI "native"?
- yawaworht1978 5y agoSo how do I download and run this on mobile phones? Would like both on Android and apple, is this possible?
- cik 5y agoI've been running this for the last 5 hours, since I saw the posting. Thankfully, in arch it's just part of the aur. Frankly, it's awesome. It's literally every single thing I dislike about Spotify fixed. There are no podcasts, I can search, there's no social senselessness anymore.. I'm thrilled. The only problem I have is that eventually it just gobbles CPU. Having it open and doing nothing seems to take ~4% of my CPU, and while playing a constant 7.2%. Frankly, I assume this is decoding, but I haven't traced yet. Eventually it spun out of control and pegged one CPU at ~90%, which a quick restart fixed. All of this is to say it's an incredible project - I'm not going back to the old client.
- sirsinsalot 5y agoA project like this cant come fast enough. Spotify desktop on Linux is a bloated mess that regularly crashes and takes down the display server with it.
- ho_schi 5y agoGood news. We need more native apps, which work autonomous and locally and optionally sync with servers. Examples are Git (yeah! --everything-is-local) or any decent Mail-Client. Especially what the industry usually does is not the best, but just the cheapest. https://josephg.com/blog/electron-is-flash-for-the-desktop/ https://josephg.com/blog/electron-is-flash-for-the-desktop/
- pcf 5y agoYouTube Music – what do you guys think is the best client for this? Because YTM doesn't have its own app. Thanks!
- jjice 5y agoSpotify regularly upsets me with change. Don't change a UI that looks good and works well just to hide something I need. It feels like it's just justification to have an entire team of client designers employed. I remember when Spotify had Lyrics, which is an obvious choice of feature for a music service. It was off my a line or two, but it worked pretty well and I used it all the time. It was the best way to hear the music and see the lyrics that I knew of. Then, one day, I open the client and see that clicking the lyrics button showed a message that the lyrics feature was being enhanced and it'd be back soon. Then one day the button disappeared. The only reason I use spottily over local music at this point is discovery, because they really do a great job at that.
- fleddr 5y agoI think the idea of desktop apps being web apps repackaged is now so ingrained that some people have never experienced true desktop app performance. As in, zero latency, or no observable latency. Instant performance. Honestly, it sickens me how spectacular advances in hardware translate into performance being worse than before. Even the Office client apps are now web (React). And you can tell. Sluggish and glitchy. As for the Spotify app, I have little love for it. Overengineered garbage where the simplest actions leave you searching. Internally, they have created this massively complex structure of squads and tribes each taking care of just one tiny part of the experience. This may explain why Spotify is so disconnected and makes no sense. All of this engineering effort, I imagine there to be at least a few hundred working on it, ultimately add up to an experience less usable than bloody Windows Media Player from the 90s.
- shp0ngle 5y agoMS Office is React now? Wow. Does not surprise me though.
- gruez 5y agoThat statement's horribly misleading. The desktop versions (eg. windows or mac) aren't, but the web versions are.
- fleddr 5y agoNo, it's not misleading. The Office 365 desktop apps are written in React. As is Teams. As is Visual Studio Code. Specifically, React Native for Windows. https://github.com/Microsoft/react-native-windows https://github.com/Microsoft/react-native-windows For things like background services, they still use C/C++.
- gruez 5y ago> No, it's not misleading. The Office 365 desktop apps are written in React. As is Teams. As is Visual Studio Code. Is there a source for this? I searched around and can only find rumors from 2018, and announcements that the mobile apps are using react.
- SkyMarshal 5y agoI hope the team considers abstracting this codebase into a general framework after its reached a sufficient level of maturity. Would be nice to have a growing ecosystem of high-performance, rock solid, cross-platform native app frameworks.
- literallyaduck 5y agoCan you decouple the UI from Spotify and make a generic interface to plug in N streaming services? Then people could make a Spotify provider, a file provider, a Pandora provider, an Amazon music provider, etc.
- dreamofkoholint 5y agoI believe this is the goal of mopidy
- literallyaduck 5y agoClose, but that looks like a server, I guess a client front end for it could be written in a native GUI.
- arendtio 5y agoOn the desktop, I simply use a separate Firefox profile for Spotify with the web client. The only 'special' thing is that I had to disable ServiceWorkers because they somehow caused some trouble every few weeks (dom.serviceWorkers.enabled = false). In addition, I use KDocker for a system tray icon. However, on mobile it is a completely different story. The Spotify app requires so many resources that it takes forever to start (like a minute) and sometimes even causes my phone to reboot. For something like a MP3 player that is hilarious... Does someone know if there is a good alternative mobile app?
- tabtab 5y agoWhy the hell is there not a stateful GUI markup standard? Mice and desktops did not go away with the advent of mobile. They are still the bread and butter of business, for example. Thus, rather than reinvent the GUI adapter wheel for each and every programming language, let's form a dynamic GUI markup standard based on existing open-source kits to avoid starting from scratch (Typically Tk, Qt, or WinForms. WinForm's base is OSS, believe it or not.) Then languages can read and write markup (XML or JSON text) to have GUI's instead of glue on some screwy binary addon.
- account42 5y agoIs it just me or does the play buttons triange in the screenshot look horribly uncentered. Seems like the like positioned based on minimum/maximum horizontal extend whereas aligning the "center of gravity" with the circle center might make more sense.