Giter Club home page Giter Club logo

sonixd's Introduction

NOTICE: Maintenance Mode

The application is undergoing a full rewrite under the name Feishin. Check it out here!

Sonixd has entered maintenance mode as of 0.15.4. Only breaking bugs will be fixed. The application will continue to be available for download and use, but no new features will be added. The application will be maintained until the rewrite is complete.

Thank you to all the contributors and users who have helped make this project possible!

sonixd logo

Sonixd

Release License Downloads Discord Matrix

Sonixd is a cross-platform desktop client built for Subsonic-API (and Jellyfin in 0.8.0+) compatible music servers. This project was inspired by the many existing clients, but aimed to address a few key issues including scalability, library management, and user experience.

Sonixd has been tested on the following: Navidrome, Airsonic, Airsonic-Advanced, Gonic, Astiga, Jellyfin

Features

  • HTML5 audio with crossfading and gapless* playback
  • Drag and drop rows with multi-select
  • Modify and save playlists intuitively
  • Handles large playlists and queues
  • Global mediakeys (and partial MPRIS) support
  • Multi-theme support
  • Supports all Subsonic/Jellyfin API compatible servers
  • Built with Electron, React with the rsuite v4 component library
* Gapless playback is artifically created using the crossfading players so it may not be perfect, YMMV.

Screenshots

Install

You can install sonixd by downloading the latest release for your specified operating system.


Windows

If you prefer not to download the release binary, you can install using winget. Using your favorite terminal (cmd/pwsh):

winget install sonixd

Or you can install using scoop.

scoop install sonixd

MacOS

If you prefer not to download the release binary, you can install using homebrew. Using your favorite terminal:

brew install --cask sonixd

Arch Linux

Check for available packages here.


Once installed, run the application and sign in to your music server with the following details. If you are using airsonic-advanced, you will need to make sure that you create a decodable credential for your login user within the admin control panel.

  • Server - e.g. http://localhost:4040/
  • User name - e.g. admin
  • Password - e.g. supersecret!

If you have any questions, feel free to check out the Usage Documentation & FAQ.

Development / Contributing

This project is built off of electron-react-boilerplate v2.3.0. If you want to contribute to this project, please first create an issue or discussion so that we can both discuss the idea and its feasability for integration.

First, clone the repo via git and install dependencies (Windows development now requires additional setup, see #232):

git clone https://github.com/jeffvli/sonixd.git
yarn install

Start the app in the dev environment:

yarn start

To package apps for the local platform:

yarn package

If you receive errors while packaging the application, try upgrading/downgrading your Node version (tested on v14.18.0).

If you are unable to run via debug in VS Code, check troubleshooting steps here.

If your devtools extensions are failing to run/install, check troubleshooting steps here.

License

GNU General Public License v3.0 ยฉ

sonixd's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

sonixd's Issues

Album art doesn't show in taskbar thumbnail when sonixd is minimized

Steps to Re-create (windows OS)

  1. Launch sonixd
  2. Start playing a song
  3. Hover over the taskbar thumbnail, and you should see the album art being displayed above the playback controls (as expected)
  4. Minimize sonixd
  5. Hover over the taskbar thumbnail again, and you'll now see the album art is not displaying:

image

NOTE: I think this started happening in version 0.5.0

Removing the currently playing song should reset to previous song

Is your feature request related to a problem? Please describe.
When removing the currently playing song, it resets to the first track in the queue. This can be annoying especially if you don't remember the queue index of the removed song.

Describe the solution you'd like
When removing the currently playing song, it should reset to the previous song so you don't lose your current place.

Add album list pagination option

Is your feature request related to a problem? Please describe.
For larger libraries, loading albums or artists may take an extended amount of time (e.g. 50k+ albums may take upwards of 1-2 minutes to load).

Describe the solution you'd like
Add an option to allow swapping the view on the album page between all and paginated, with a selection of how many albums to display per page (25, 50, 100, etc).

Add scroll zones to top/bottom of list when dragging

Currently, the list stays static when the user is performing any drag operation, so using the mouse wheel is a requirement if you want to select anything outside of the current view.

Select dragging and drag-and-drop should have scroll zones on the top and bottom of the list so that the user does not need to use the scroll wheel to either scroll up or down.

Add advanced list column selector

Is your feature request related to a problem? Please describe.
Currently the column selector requires you to clear out or remove columns if you want them in a selected order. You are also unable to individually select resizable columns.

Describe the solution you'd like
Create a new drag-n-drop component to add, select, and re-order desired columns.

Resuming a song past 4 minutes sends another scrobble request

Describe the bug
Multiple scrobble requests will be sent for the same song if the song is paused and resumed in its to-scrobble condition (e.g. past 4 minutes, or 90%).

To Reproduce
Steps to reproduce the behavior:

  1. Pause a song past 4 minutes
  2. Resume the song

Expected behavior
The song should not be scrobbled again.

Desktop (please complete the following information):

  • OS: Windows 11
  • Version: 0.2.1

Add Media Controls to Gnome Notification Panel

Is your feature request related to a problem? Please describe.
This isn't related to an issue, only a feature request.

Describe the solution you'd like
Add media controls to the Gnome Notification Panel for Sonixd.

Describe alternatives you've considered
Initially I thought it was because media hotkeys were not enabled, however, they are functioning as intended

Additional context
This is a screenshot of intended behavior. This is while Spotify is playing music:
Gnome Notification Menu

Note that even with Sonixd playing music, Spotify is the only media controls being displayed:
Screenshot from 2021-10-22 13-00-56

Thank you so much for all of your hard work. Definitely the best Subsonic client I've used for desktop!

Javascript error when resizing window

Describe the bug
A Javascript exception occurs when I resize the window.

To Reproduce
Grab a corner of the sonixd window and drag it.

Expected behavior
No Javascript exception should appear.

Screenshots

Screen Shot 2021-11-15 at 9 13 33 am

Desktop (please complete the following information):

  • OS: macOS
  • Version 10.14.5

Add macOS style titlebar

Is your feature request related to a problem? Please describe.
As a cross-platform application, sonixd should have multiple titlebar styles to conform to OS-specific views.

Describe the solution you'd like
Create a configurable setting to allow the switching between a Windows and macOS style titlebar.

Additional context
image

Genre column doesn't work for song list

Describe the bug
Unable to set genre column in Songs list-view

To Reproduce
Steps to reproduce the behavior:

  1. Go to Look & Feel config
  2. Add Genre column

Expected behavior
Genre column should be saved and displayed on list-view for views that display a song list.

Desktop (please complete the following information):

  • OS: Windows 10
  • Version: 0.2.1

Minimize to Tray Option

Is your feature request related to a problem? Please describe.
This request is mainly for windows but could also apply to some linux distros. I'm used to spotify, being able to click exit but not really exit and continue playback with the window minimized to the tray.

Describe the solution you'd like

  • Toggle options that allow you to "close to tray on exit" or "close to tray on minimize"
  • Tray menu can be right clicked to open a menu on the tray icon
  • Tray menu can be single or double clicked to restore full window

Describe alternatives you've considered
None

Additional context
I can attempt to implement this eventually if you don't get around to it. By the way, I cloned and liked what I saw on your dev branch ๐Ÿ™‚

Add advanced filtering for albums

Is your feature request related to a problem? Please describe.
Subsonic-API supports multiple filters for albums which includes:

  • Genre
  • From and To year

Describe the solution you'd like
Additional filters separate which can be used in conjunction with the existing:

  • A-Z
  • Most Played
  • Newly Added
  • Random
  • Recently played

UI should most likely act similarly to the Add random on the Now Playing page.
image

Edit: Only additional functionality that can be added is a byYear filter.

Add page forward/back buttons in main layout

It is currently impossible to navigate forward or back a page without using a hotkeys such as page forward/back buttons on your mouse. Add persistent buttons to allow the user to page forward or back on the main layout.

Add an action dropdown button grid-view cards

Viewing albums or artists using grid-view should display an actions dropdown button on each card to perform actions similar to the context menu such as:

  • Play
  • Add to queue
  • Add to playlist
  • etc.

Add default column sorting behaviour.

Is your feature request related to a problem? Please describe.
When opening the album list, the albums are sorted alphabetically by title, a possibility of choosing the default sorting parameter (eg. release year) would be handy.

Describe the solution you'd like
Choosing the default sorting column in Look & Feel.

Add "about" page

Is your feature request related to a problem? Please describe.
Sonixd needs an About page to give version info, links, etc.

Describe the solution you'd like
A page in the config, or an icon with a hover tooltip

Track/Song right-click menu not working in modal view

Describe the bug.
If album is displayed in modal view, right clicking on track displays menu with actions under the modal, making it impossible to perform an action on a song like adding it to the queue.

To Reproduce
Steps to reproduce the behavior:

  1. On Album, click "View in modal"
  2. Right click on any track

Expected behavior
Menu with options to be displayed on top.

Platform

  • OS: Windows
  • Version 0.3.0

Screenshots

app

Add server selection

Automatically save valid server configurations to the settings file, so that the user does not need to re-enter credentials when on the login page of the app, and be able to select from multiple saved servers.

Add export playlist functionality

Is your feature request related to a problem? Please describe.
Add a button to export the playlist to the local system.

Describe the solution you'd like

  • Add a config to specify the root playlist path (e.g. /home/user/Documents/music/)
  • Add a button to export playlist using the the root playlist path

Describe alternatives you've considered
N/a

Additional context
N/a

Image/Song caching not working

Describe the bug
Songs / images aren't being cached even when the setting is enabled.

To Reproduce
Steps to reproduce the behavior:

  1. Go to Other config
  2. Enable song and image cache
  3. Play songs or view images

Expected behavior
Songs and images should be cached to the specified cache location

Screenshots
Stays at 0
image

Desktop (please complete the following information):

  • OS: Windows 11
  • Version: 0.1.0

Add extensible theming

Is your feature request related to a problem? Please describe.
Currently there are only two themes with no easy way of adding additional themes.

Describe the solution you'd like
Add a configurable theming solution using the JSON config file.

Starring from dashboard and search view cards doesn't work

Describe the bug
Pressing the star button on grid card hover does not work on the Search and Dashboard scrolling menu cards.

To Reproduce
Steps to reproduce the behavior:

  1. Go to the dashboard page
  2. Click on the star button on any album

Expected behavior
The album/artist should be starred.

Screenshots
If applicable, add screenshots to help explain your problem.

Desktop (please complete the following information):

  • OS: Windows 11
  • Version: 0.2.0

Remember window size

It would be great if when you resized (or maximized) the sonixd window, if it would remember that windows size (or maximize state if you had maximized it) the next time that you close/re-launch the program.

currently, the program seems to always open with the same small window size (using Windows 10/11)

btw, thx for this great application!

Adding and removing songs to and from playlist is not reliable

Sonixd 0.4.1 appimage, ubuntu Bionic

Adding songs to a playlist:

I have a genre of songs called "Blues". In the genre view in sonixd, I see "Blues" in the list of genres, it shows about 360 tracks. I expand the "Blues" genre category, and then select all entries, then right click and choose "Add to playlist", and I select the existing (empty) playlist of "Blues". Sonixd then responds with a message that it added 876 tracks. When I look in the "Blues" playlist, I see all those songs in the blues genre; and, I see what looks to be a random selection of roughly 500 additional tracks.

Removing songs from a playlist:

Continuing the above scenario: I sort the playlist by genre. Then, I select all tracks that are NOT of the blues genre. Then I right click and choose "Remove selected". But, sadly nothing happens, they remain.

Why did my attempted method of adding songs to a playlist not work?

Why did my attempted method of removing songs from a playlist do nothing?

Add configurable left/center alignment for grid view

Is your feature request related to a problem? Please describe.
Currently the alignment is statically set as center for all grid views. This is a personal preference thing, but having an option for both left and center alignment would be nice.

Describe the solution you'd like
Add a selector in the Look & Feel grid-view config to select between center and left alignment.

Describe alternatives you've considered
N/a

Additional context
Left-align (flex-start):
image

Center-align (center):
image

Config header styling is broken small window width

Describe the bug
Styling breaks when decreasing window width.

To Reproduce
Steps to reproduce the behavior:

  1. Go to Config page
  2. Decrease window width until styling breaks

Expected behavior
Styling should stay consistent (or be responsive)

Screenshots
image

Desktop (please complete the following information):

  • OS: Windows
  • Version: 0.5.0

Additional context
N/a

Cannot play any audio from Navidrome server

Describe the bug
Cannot start playing any audio. Playhead is stuck at 0:00.

To Reproduce
Steps to reproduce the behavior:

  1. Launch application
  2. Click Play button on any item from library

Expected behavior
Music starts after hitting play on album/track.

Screenshots
image

Desktop (please complete the following information):

  • OS: tested on Windows 11 / macOS 12.0.1
  • Version 0.6.0

Additional context
Connecting to Navidrome server version 0.46.0.
All music on server is in ALAC format.

folder view is blank

sonixd 0.4.1 appimage on Ubuntu Bionic.

In the folder view, no information is given, see the attached screenshot.
Screenshot from 2021-11-05 00-22-48

Filter out songs based on title (regex) when adding to queue

Is your feature request related to a problem? Please describe.
When adding songs via albums, there are sometimes some songs you may want to filter out (e.g. off vocal/instrumental). This will require you to manually remove them from the play queue whenever you add them.

Describe the solution you'd like
Add a configurable list of regex filters to allow you to automatically remove the songs when they're added to the queue.

Support Jellyfin API

Is your feature request related to a problem? Please describe.
Add support for Jellyfin's music server API

Describe the solution you'd like

  1. Add a selector between Subsonic & Jellyfin when logging into Sonixd
  2. Normalize API endpoints and add a controller to plug in both Subsonic and Jellyfin APIs

Describe alternatives you've considered
N/a

Additional context
Jellyfin API reference: https://api.jellyfin.org/

Existing projects that implement Jellyfin audio API:

Tasks

  • Add generic type schema for overall application
  • Add api controller to route commands for specified server type (jellyfin/subsonic)
    • Player
      • Auto playlist (random songs)
    • Browse playlists
      • Add playlists
      • Remove playlists
      • Edit playlists
    • Browse albums
    • Browse favorites
      • Add favorites
      • Remove favorites
    • Browse genres
    • Browse artists
    • Browse folders
    • Download artist/albums
    • Search
    • Set music folder
    • Scrobble (played/progress)
    • Scan library (No way to get scan status?)
    • Set ratings (Not applicable in Jellyfin)

macOS title bar visual bug

Describe the bug
macOS titlebar is not visually correct. (#23)

To Reproduce
Change titlebar to macOS

Screenshots
See below. Window in front is Finder, window behind is sonixd.

Screen Shot 2021-11-15 at 9 10 32 am

Desktop (please complete the following information):

  • OS: macOS
  • Version 10.14.5

Optimize large drag operations

The drag and drop function works fairly well for small operations (less than 500 rows), but tends to lock up on larger operations (500-2000+). The function either needs to be heavily optimized or possibly be changed to be asynchronous while setting a loading state on the table to lock any changes while processing.

Add external "column" filters for both grid and list-view (Advanced Filters)

Is your feature request related to a problem? Please describe.
All grid-views currently show the ordering that is returned by the API. Having any semblance of filtering is gone unless you switch to list-view. List-view is also limited by the columns that you decide to display.

Describe the solution you'd like
Add a dropdown of filters for every data property in both list-view and grid-view.

  • Add alphabet selector (#, A-Z) to filter

Describe alternatives you've considered
N/a

Additional context
N/a

Feature Request: Media Keys Control

I'm loving using this, the interface feels so snappy.

Just a minor feature request, if you ever feel bored. Not super important.

Add support to control playback through keyboard media keys (such as play, next, previous, volume control, etc)

Add a way to statically shuffle the now playing queue

Is your feature request related to a problem? Please describe.
The shuffle functionality currently physically moves all playing songs into a shuffled state, which causes all albums to go out of order when viewing. Having the queue in its default order makes for a more orderly viewing experience especially when browsing for songs you want to play.

Describe the solution you'd like
Add a configurable option to keep all songs in place, but just shuffle in a way that the player jumps to a random index instead of physically shuffling the songs (similar to foobar2000).

Describe alternatives you've considered
N/a

Additional context
This shuffle method would likely not work with Add to queue (next) and Add to queue (later) because of the new randomness of the shuffle queue.

Add option to fetch full song list

version 0.4.1 of the appimage on Ubuntu Bionic.

My music library consists of over 12,000 songs, in several hundred nested directories.

In Sonixd, how do I show a list of all the songs in the library? I can't figure out how to do that.

I did create a playlist in which I added all songs - well, not really all, more on that in the postscript below - but a playlist is static. Every time I add a new song to the library, I assume I would also have to add it to this playlist in Sonixd as well. Correct?

What I'm looking for is a list of songs in Sonixd that shows all songs in the music library at that moment. How do I do that in Sonixd?

Thanks.

(P.S.: As I wrote, I have over 12,000 songs. The way I added them to the playlist is I selected all folders, and then added them to the playlist. It took about two minutes for Sonixd to do that, but - it only added about 11,300 songs. Is there some upper limit to the number of songs Sonixd can add to a playlist?)

Allow offline playback

Add support for offline playback.

This will include support for marking playlists as "available offline", which will automatically sync the playlist and all songs to the disk.

Some UI suggestions

Hey,
first of all great job this project looks great!
I've just noticed a view UI/UX things which I think could make it even better :)

  1. When you hover over an album preview, there are two "plus" symbols, I assume one for adding the album to the queue and one to a playlist. This is to me pretty ambigious and I think having more distinct symbols, a tooltip showing up or so would be beneficial.
    album

  2. The opening animation of the mini-view of the current queue is really long.

  3. In the album view, when you hover over a song, the UI doesn't reflect clearly that you can click to play the song. Maybe changing highlighting the row (thats what spotify is doing) could be nice? Edit: I just saw that when you click on a song, you're selecting it and it reflects in a colour change. Spotify is using for hover and select two different highlight colours.

  4. I think Media Sessions - at least on Windows 11 - are not registered properly. When pressing pause/forward/back on my keyboard it's only working when sonixd is in focus.

  5. When in album view, filtering by genre and the sorting order are exclusiv to one another, even though the subsonic allows both query parameters simultaneously. Moved to #39

Add media folder selector

Is your feature request related to a problem? Please describe.
Currently there is no way to select between media folders that are described in the server (Airsonic).

Describe the solution you'd like
Add a global selector for the desired media folder to use (or omit it to view all folders).

Additional context
image

Add ability to download songs to local disk

Is your feature request related to a problem? Please describe.
The user should be able to download songs to the local disk from the server.

Describe the solution you'd like
Context menu option and page buttons to select albums and tracks to dowload.

Add scrobble to last.fm functionality

Is your feature request related to a problem? Please describe.
Add scrobble to last.fm when playing tracks on sonixd.

Describe the solution you'd like

For scrobble, ideally you send a /rest/scrobble?submission=false at the beginning of the track, to signal a NowPlaying state, and at the end you send a /rest/scrobble?submission=true to mark as played. This documentation may help: https://www.last.fm/api/scrobbling#when-is-a-scrobble-a-scrobble
In Navidrome UI, I send the submission=true after 50% or 4 minutes into the song, and I send it for all tracks, disregarding their length

  • From deluan

Shuffle through whole Music Server

Hello my friend,
first of all thank you for your nice client!
I wish to hear all of my music in my library, but there is not an option to do this. So I think that you can do in the left a "Radio" button or something like that. That would be wonderful.

Have a nice day

Greetings
Mammutor

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.