Skip to content

A cross platform music client for crossonic-server.

License

Notifications You must be signed in to change notification settings

juho05/crossonic

Repository files navigation

Crossonic

A cross platform music client for crossonic-server.

Status

This app is still in development. Some features are missing and bugs are to be expected.

See Supported platforms for a status per platform.

Features

  • Desktop and mobile layout
  • Respects light/dark theme and accent color
  • System integration (Android media API, MPRIS, SystemMediaTransportControls, …)
  • Stream original or transcoded media
    • configurable transcoding settings for WiFi and mobile
  • Browse/search songs, albums, artists
  • Favorite songs/albums/artists
  • Playlists
    • download for offline listening (except web)
  • ListenBrainz integration
    • scrobble
    • sync favorite songs
  • Two queue system
    • normal queue
      • automatically populated when listening to an album/artist/playlist
    • priority queue
      • for songs you want to listen now before continuing with the normal queue
    • both can be freely modified
  • Shuffle artists by song or by album
  • Gapless playback
  • Lyrics
    • unsynced
    • synced
  • Replay gain
  • Jukebox
  • Save queues
  • Remote control other devices running the app

Supported platforms

While this app can be built for every platform Flutter supports (although some additional configuration might be necessary), playback can be very buggy on some platforms and might not support all features.

fully supported

  • Linux
  • Android (no AAC support)
  • macOS
  • Windows

some limitations

  • Web (no playlist download, no gapless)
    • Safari playback randomly stops when streaming transcoded media

unsupported

  • iOS

Build/run

Install Flutter with all dependencies for your desired target platform.

Clone the repository

git clone https://github.com/juho05/crossonic
cd crossonic

Generate json bindings:

dart run build_runner build

Linux

Install dependencies

  • Install GStreamer.
  • Install libsecret-1-0 and libjsoncpp1
Debian
sudo apt-get install libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev gstreamer1.0-plugins-good gstreamer1.0-plugins-bad libsecret-1-dev libjsoncpp-dev
ArchLinux
sudo pacman -S gstreamer gst-libav gst-plugins-base gst-plugins-goodgstreamer1.0-plugins-bad libsecret jsoncpp

Build

In the directory of the repository run:

flutter build linux --release

The built executable is at ./build/linux/x64/release/bundle/Crossonic.

Windows

Install dependencies

Install GStreamer for example with chocolatey:

choco install gstreamer gstreamer-devel

Build

In the directory of the repository run:

flutter build windows --release

NOTE: The first time starting playback the program might hang for a few seconds and a command prompt window might pop up. This is a one-time event. Just wait until the playback starts.

macOS

  • Install GStreamer (runtime and development)

In the directory of the repository run:

flutter build macos --release

Android

  • Download GStreamer for Android
  • Extract the file and rename the resulting directory to gst-android
  • Move gst-android into ./native_bindings/gstreamer/gstreamer_ffi/third-party

In the directory of the repository run:

flutter build apk --release

Web

No additional dependencies should be required.

In the directory of the repository run:

flutter build web --release

Now you can serve ./build/web with a web server like Caddy.

Screenshots

Home (mobile) Album (mobile) Now Playing (mobile) Playlist (mobile) Album (desktop)

License

Copyright (c) 2024-2025 Julian Hofmann

This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.

You should have received a copy of the GNU Affero General Public License along with this program. If not, see https://www.gnu.org/licenses/.

About

A cross platform music client for crossonic-server.

Resources

License

Stars

Watchers

Forks

Releases

No releases published