.. image:: logo/logo.png
:alt: Sublime Music Logo
Sublime Music is a native, GTK3
`Subsonic`_/`Airsonic`_/`Revel`_/`Gonic`_/`Navidrome`_/`Ampache`_/\*sonic client for the
Linux Desktop.
CI
.. image:: https://github.com/sublime-music/sublime-music/actions/workflows/deploy.yaml/badge.svg?branch=master
:target: https://github.com/sublime-music/sublime-music/actions/workflows/deploy.yaml
:alt: Lint and Build
.. image:: https://github.com/sublime-music/sublime-music/actions/workflows/pages.yaml/badge.svg?branch=master
:target: https://github.com/sublime-music/sublime-music/actions/workflows/pages.yaml
:alt: GitHub Pages
Community
.. image:: https://img.shields.io/matrix/sublime-music:matrix.org?logo=matrix
:target: https://matrix.to/#/#sublime-music:nevarro.space?via=matrix.org
:alt: Matrix chat
.. image:: https://img.shields.io/pypi/l/sublime-music?color=0c0
:target: LICENSE
:alt: GPLv3 or later
.. image:: http://img.shields.io/liberapay/receives/sumner.svg?logo=liberapay
:target: https://liberapay.com/sumner/donate
:alt: liberapay donate
Code
.. image:: https://img.shields.io/badge/%20imports-isort-%231674b1?style=flat&labelColor=ef8336
:target: https://pycqa.github.io/isort/
.. image:: https://img.shields.io/badge/code%20style-black-000000.svg
:target: https://github.com/psf/black
Packages
.. image:: https://repology.org/badge/vertical-allrepos/sublime-music.svg?columns=3
:target: https://repology.org/project/sublime-music/versions
:alt: Packaging status
.. _Subsonic: http://www.subsonic.org/pages/index.jsp
.. _Airsonic: https://airsonic.github.io/
.. _Revel: https://gitlab.com/robozman/revel
.. _Gonic: https://github.com/sentriz/gonic
.. _Navidrome: https://www.navidrome.org/
.. _Ampache: http://ampache.org/
-------------------------------------------------------------------------------
.. figure:: docs/_static/screenshots/play-queue.png
:align: center
:target: docs/_static/screenshots/play-queue.png
The Albums tab of Sublime Music with the Play Queue opened. `More
Screenshots <https://docs.sublimemusic.app/screenshots.html>`_
Features
--------
* Switch between multiple Subsonic-API-compliant [1]_ servers.
* Play music through Chromecast devices on the same LAN.
* Offline Mode where Sublime Music will not make any network requests.
* DBus MPRIS interface integration for controlling Sublime Music via clients
such as ``playerctl``, ``i3status-rust``, KDE Connect, and many commonly used
desktop environments.
* Browse songs by the sever-reported filesystem structure, or view them
organized by ID3 tags in the Albums, Artists, and Playlists views.
* Intuitive play queue.
* Create/delete/edit playlists.
* Download songs for offline listening.
.. [1] Requires a server which implements the Subsonic API version 1.8.0+.
Installation
------------
**Via the AUR**:
Install the |AUR Package|_. Example using ``yay``::
yay -S sublime-music
If you want support for storing passwords in the system keychain, also install
``python-keyring``.
If you want support for playing on Chromecast devices, install
``python-pychromecast``. If you want to serve cached files from your computer
over the LAN to Chromecast devices also install ``python-bottle``.
.. |AUR Package| replace:: ``sublime-music`` package
.. _AUR Package: https://aur.archlinux.org/packages/sublime-music/
**Via NixOS**:
Sublime Music is part of the ``nixos-20.09`` channel and newer (including
``nixos-unstable``).
To install Sublime Music on NixOS, either use the declarative or the imperative
way:
- In ``configuration.nix`` (declarative)::
environment.systemPackages = [ pkgs.sublime-music ];
- In command line (imperative)::
nix-env -iA sublime-music
To customize the extra components installed, you need to use the ``override``
function provided by Nix::
(sublime-music.override {
serverSupport = true;
chromecastSupport = true;
})
The following components are supported:
* ``chromecastSupport``: if you want support for playing on Chromecast devices
on the LAN. Defaults to ``false``.
* ``serverSupport``: if you want to be able to serve cached files from your
computer over the LAN to Chromecast devices. Defaults to ``false``.
* ``keyringSupport``: if you want to store your passwords in the system keyring
instead of in plain-text. Defaults to ``true``.
* ``notifySupport``: if you want to enable notifications when a new song begins
to play. Defaults to ``true``.
* ``networkSupport``: if you want to change the address used to access the
server depending on what network you are connected to. Defaults to ``true``.
See `Nix package management`_ for more information.
.. _Nix package management: https://nixos.org/nixos/manual/index.html#sec-package-management
**Via the Debian package**
Sublime Music is not currently in the Debian 'Stable' distribution, but has been
packaged for Debian 'Unstable' and 'Testing'.
If you have these sources in your ``/etc/apt/sources.list``, you can install
the package with::
sudo apt install sublime-music
**Via PyPi**::
pip install sublime-music
There are a few optional dependencies that you can install. Here's an example of
how to do that::
pip install sublime-music[keyring,chromecast,server]
* ``keyring``: if you want to store your passwords in the system keyring instead
of in plain-text
* ``chromecast``: if you want support for playing on Chromecast devices on the
LAN.
* ``server``: if you want to be able to serve cached files from your computer
over the LAN to Chromecast devices
.. note::
Sublime Music requires Python 3.8. Please make sure that you have that
installed. You may also need to use ``pip3`` instead of ``pip`` if you are on
an OS that hasn't deprecated Python 2 yet.
-------------------------------------------------------------------------------
|website|_
.. |website| replace:: **Click HERE for the Sublime Music website.**
.. _website: https://sublimemusic.app
|userdoc|_
.. |userdoc| replace:: **Click HERE for extended user documentation.**
.. _userdoc: https://docs.sublimemusic.app
See the |contributing|_ document for how to contribute to this project.
.. |contributing| replace:: ``CONTRIBUTING.md``
.. _contributing: CONTRIBUTING.md
You can also join the conversation in our Matrix room:
`#sublime-music:matrix.org <https://matrix.to/#/!veTDkgvBExJGKIBYlU:matrix.org?via=matrix.org>`_.
Raw data
{
"_id": null,
"home_page": null,
"name": "sublime_music",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.10,<4",
"maintainer_email": null,
"keywords": "airsonic,music,GTK,chromecast,subsonic",
"author": null,
"author_email": "Sumner Evans <inquiries@sumnerevans.com>",
"download_url": "https://files.pythonhosted.org/packages/cc/01/ff2974ec1c475970180c10b33501a7b485bb23ee55db908d63f20ba34478/sublime_music-0.12.0.tar.gz",
"platform": null,
"description": ".. image:: logo/logo.png\n :alt: Sublime Music Logo\n\nSublime Music is a native, GTK3\n`Subsonic`_/`Airsonic`_/`Revel`_/`Gonic`_/`Navidrome`_/`Ampache`_/\\*sonic client for the\nLinux Desktop.\n\nCI\n .. image:: https://github.com/sublime-music/sublime-music/actions/workflows/deploy.yaml/badge.svg?branch=master\n :target: https://github.com/sublime-music/sublime-music/actions/workflows/deploy.yaml\n :alt: Lint and Build\n .. image:: https://github.com/sublime-music/sublime-music/actions/workflows/pages.yaml/badge.svg?branch=master\n :target: https://github.com/sublime-music/sublime-music/actions/workflows/pages.yaml\n :alt: GitHub Pages\n\nCommunity\n .. image:: https://img.shields.io/matrix/sublime-music:matrix.org?logo=matrix\n :target: https://matrix.to/#/#sublime-music:nevarro.space?via=matrix.org\n :alt: Matrix chat\n .. image:: https://img.shields.io/pypi/l/sublime-music?color=0c0\n :target: LICENSE\n :alt: GPLv3 or later\n .. image:: http://img.shields.io/liberapay/receives/sumner.svg?logo=liberapay\n :target: https://liberapay.com/sumner/donate\n :alt: liberapay donate\n\nCode\n .. image:: https://img.shields.io/badge/%20imports-isort-%231674b1?style=flat&labelColor=ef8336\n :target: https://pycqa.github.io/isort/\n .. image:: https://img.shields.io/badge/code%20style-black-000000.svg\n :target: https://github.com/psf/black\n\nPackages\n .. image:: https://repology.org/badge/vertical-allrepos/sublime-music.svg?columns=3\n :target: https://repology.org/project/sublime-music/versions\n :alt: Packaging status\n\n.. _Subsonic: http://www.subsonic.org/pages/index.jsp\n.. _Airsonic: https://airsonic.github.io/\n.. _Revel: https://gitlab.com/robozman/revel\n.. _Gonic: https://github.com/sentriz/gonic\n.. _Navidrome: https://www.navidrome.org/\n.. _Ampache: http://ampache.org/\n\n-------------------------------------------------------------------------------\n\n.. figure:: docs/_static/screenshots/play-queue.png\n :align: center\n :target: docs/_static/screenshots/play-queue.png\n\n The Albums tab of Sublime Music with the Play Queue opened. `More\n Screenshots <https://docs.sublimemusic.app/screenshots.html>`_\n\nFeatures\n--------\n\n* Switch between multiple Subsonic-API-compliant [1]_ servers.\n* Play music through Chromecast devices on the same LAN.\n* Offline Mode where Sublime Music will not make any network requests.\n* DBus MPRIS interface integration for controlling Sublime Music via clients\n such as ``playerctl``, ``i3status-rust``, KDE Connect, and many commonly used\n desktop environments.\n* Browse songs by the sever-reported filesystem structure, or view them\n organized by ID3 tags in the Albums, Artists, and Playlists views.\n* Intuitive play queue.\n* Create/delete/edit playlists.\n* Download songs for offline listening.\n\n.. [1] Requires a server which implements the Subsonic API version 1.8.0+.\n\nInstallation\n------------\n\n**Via the AUR**:\n\nInstall the |AUR Package|_. Example using ``yay``::\n\n yay -S sublime-music\n\nIf you want support for storing passwords in the system keychain, also install\n``python-keyring``.\n\nIf you want support for playing on Chromecast devices, install\n``python-pychromecast``. If you want to serve cached files from your computer\nover the LAN to Chromecast devices also install ``python-bottle``.\n\n.. |AUR Package| replace:: ``sublime-music`` package\n.. _AUR Package: https://aur.archlinux.org/packages/sublime-music/\n\n**Via NixOS**:\n\nSublime Music is part of the ``nixos-20.09`` channel and newer (including\n``nixos-unstable``).\n\nTo install Sublime Music on NixOS, either use the declarative or the imperative\nway:\n\n- In ``configuration.nix`` (declarative)::\n\n environment.systemPackages = [ pkgs.sublime-music ];\n\n- In command line (imperative)::\n\n nix-env -iA sublime-music\n\nTo customize the extra components installed, you need to use the ``override``\nfunction provided by Nix::\n\n (sublime-music.override {\n serverSupport = true;\n chromecastSupport = true;\n })\n\nThe following components are supported:\n\n* ``chromecastSupport``: if you want support for playing on Chromecast devices\n on the LAN. Defaults to ``false``.\n* ``serverSupport``: if you want to be able to serve cached files from your\n computer over the LAN to Chromecast devices. Defaults to ``false``.\n* ``keyringSupport``: if you want to store your passwords in the system keyring\n instead of in plain-text. Defaults to ``true``.\n* ``notifySupport``: if you want to enable notifications when a new song begins\n to play. Defaults to ``true``.\n* ``networkSupport``: if you want to change the address used to access the\n server depending on what network you are connected to. Defaults to ``true``.\n\nSee `Nix package management`_ for more information.\n\n.. _Nix package management: https://nixos.org/nixos/manual/index.html#sec-package-management\n\n**Via the Debian package**\n\nSublime Music is not currently in the Debian 'Stable' distribution, but has been\npackaged for Debian 'Unstable' and 'Testing'.\n\nIf you have these sources in your ``/etc/apt/sources.list``, you can install\nthe package with::\n\n sudo apt install sublime-music\n\n**Via PyPi**::\n\n pip install sublime-music\n\nThere are a few optional dependencies that you can install. Here's an example of\nhow to do that::\n\n pip install sublime-music[keyring,chromecast,server]\n\n* ``keyring``: if you want to store your passwords in the system keyring instead\n of in plain-text\n* ``chromecast``: if you want support for playing on Chromecast devices on the\n LAN.\n* ``server``: if you want to be able to serve cached files from your computer\n over the LAN to Chromecast devices\n\n.. note::\n\n Sublime Music requires Python 3.8. Please make sure that you have that\n installed. You may also need to use ``pip3`` instead of ``pip`` if you are on\n an OS that hasn't deprecated Python 2 yet.\n\n-------------------------------------------------------------------------------\n\n|website|_\n\n.. |website| replace:: **Click HERE for the Sublime Music website.**\n.. _website: https://sublimemusic.app\n\n|userdoc|_\n\n.. |userdoc| replace:: **Click HERE for extended user documentation.**\n.. _userdoc: https://docs.sublimemusic.app\n\nSee the |contributing|_ document for how to contribute to this project.\n\n.. |contributing| replace:: ``CONTRIBUTING.md``\n.. _contributing: CONTRIBUTING.md\n\nYou can also join the conversation in our Matrix room:\n`#sublime-music:matrix.org <https://matrix.to/#/!veTDkgvBExJGKIBYlU:matrix.org?via=matrix.org>`_.\n",
"bugtrack_url": null,
"license": null,
"summary": "A native GTK *sonic client.",
"version": "0.12.0",
"project_urls": {
"Bug Tracker": "https://github.com/sublime-music/sublime-music/issues",
"Documentation": "https://docs.sublimemusic.app",
"Homepage": "https://sublimemusic.app",
"Source Code": "https://github.com/sublime-music/sublime-music"
},
"split_keywords": [
"airsonic",
"music",
"gtk",
"chromecast",
"subsonic"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "3bfe5be97c525ee6add3023ac61f7ce637faf352515a103480cbf7495a4b9bbe",
"md5": "59a5b56fcf935378d99776df2f67c93b",
"sha256": "008ea7241f79acabf85902615a32b31a68b950d7693c07f513438c55ab897b72"
},
"downloads": -1,
"filename": "sublime_music-0.12.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "59a5b56fcf935378d99776df2f67c93b",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.10,<4",
"size": 235349,
"upload_time": "2023-06-10T19:19:02",
"upload_time_iso_8601": "2023-06-10T19:19:02.771159Z",
"url": "https://files.pythonhosted.org/packages/3b/fe/5be97c525ee6add3023ac61f7ce637faf352515a103480cbf7495a4b9bbe/sublime_music-0.12.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "cc01ff2974ec1c475970180c10b33501a7b485bb23ee55db908d63f20ba34478",
"md5": "f6fba0a15924bb7b8ce37509dbb4cdc4",
"sha256": "458bacab6be5c926852d4a43ce675b5e767210287844c6fce921832e263db3c0"
},
"downloads": -1,
"filename": "sublime_music-0.12.0.tar.gz",
"has_sig": false,
"md5_digest": "f6fba0a15924bb7b8ce37509dbb4cdc4",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.10,<4",
"size": 21037905,
"upload_time": "2023-06-10T19:19:19",
"upload_time_iso_8601": "2023-06-10T19:19:19.675624Z",
"url": "https://files.pythonhosted.org/packages/cc/01/ff2974ec1c475970180c10b33501a7b485bb23ee55db908d63f20ba34478/sublime_music-0.12.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2023-06-10 19:19:19",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "sublime-music",
"github_project": "sublime-music",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"requirements": [
{
"name": "async-timeout",
"specs": [
[
"==",
"4.0.2"
]
]
},
{
"name": "bleach",
"specs": [
[
"==",
"5.0.1"
]
]
},
{
"name": "bottle",
"specs": [
[
"==",
"0.12.25"
]
]
},
{
"name": "casttube",
"specs": [
[
"==",
"0.2.1"
]
]
},
{
"name": "certifi",
"specs": [
[
"==",
"2022.12.7"
]
]
},
{
"name": "charset-normalizer",
"specs": [
[
"==",
"2.1.1"
]
]
},
{
"name": "dataclasses-json",
"specs": [
[
"==",
"0.5.7"
]
]
},
{
"name": "deepdiff",
"specs": [
[
"==",
"6.2.3"
]
]
},
{
"name": "idna",
"specs": [
[
"==",
"3.4"
]
]
},
{
"name": "ifaddr",
"specs": [
[
"==",
"0.2.0"
]
]
},
{
"name": "levenshtein",
"specs": [
[
"==",
"0.20.9"
]
]
},
{
"name": "marshmallow",
"specs": [
[
"==",
"3.19.0"
]
]
},
{
"name": "marshmallow-enum",
"specs": [
[
"==",
"1.5.1"
]
]
},
{
"name": "mypy-extensions",
"specs": [
[
"==",
"0.4.3"
]
]
},
{
"name": "ordered-set",
"specs": [
[
"==",
"4.1.0"
]
]
},
{
"name": "orjson",
"specs": [
[
"==",
"3.9.1"
]
]
},
{
"name": "packaging",
"specs": [
[
"==",
"23.0"
]
]
},
{
"name": "peewee",
"specs": [
[
"==",
"3.15.4"
]
]
},
{
"name": "protobuf",
"specs": [
[
"==",
"4.23.2"
]
]
},
{
"name": "pycairo",
"specs": [
[
"==",
"1.23.0"
]
]
},
{
"name": "pychromecast",
"specs": [
[
"==",
"13.0.7"
]
]
},
{
"name": "pygobject",
"specs": [
[
"==",
"3.42.2"
]
]
},
{
"name": "python-dateutil",
"specs": [
[
"==",
"2.8.2"
]
]
},
{
"name": "python-mpv",
"specs": [
[
"==",
"1.0.1"
]
]
},
{
"name": "rapidfuzz",
"specs": [
[
"==",
"2.13.7"
]
]
},
{
"name": "requests",
"specs": [
[
"==",
"2.28.2"
]
]
},
{
"name": "semver",
"specs": [
[
"==",
"2.13.0"
]
]
},
{
"name": "six",
"specs": [
[
"==",
"1.16.0"
]
]
},
{
"name": "thefuzz",
"specs": [
[
"==",
"0.19.0"
]
]
},
{
"name": "typing-extensions",
"specs": [
[
"==",
"4.4.0"
]
]
},
{
"name": "typing-inspect",
"specs": [
[
"==",
"0.8.0"
]
]
},
{
"name": "urllib3",
"specs": [
[
"==",
"1.26.13"
]
]
},
{
"name": "webencodings",
"specs": [
[
"==",
"0.5.1"
]
]
},
{
"name": "zeroconf",
"specs": [
[
"==",
"0.64.1"
]
]
}
],
"lcname": "sublime_music"
}