MCPcopy Index your code
hub / github.com/Userwithaname/mellow

github.com/Userwithaname/mellow @v0.3.0-1

Chat with this repo
repository ↗ · DeepWiki ↗ · release v0.3.0-1 ↗ · + Follow
842 symbols 2,158 edges 76 files 79 documented · 9%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

Mellow

Listen to music without distraction

About

Mellow is an experimental music player, which strives for maximal immersion with minimal distraction. Elements of the interface are purposefully abstracted away, letting music be the central point of focus.

[!NOTE] This software is in active development; features and design may still be subject to change. If you encounter any problems while using it, please post about them on the issues page. Suggestions and feature requests are welcome as well.

[!WARNING] Forwards compatibility is not guaranteed; if you plan on trying out older versions or commits, it is recommended to backup your configuration beforehand.

Philosophy

Mellow's primary design goal is to minimize distraction and maximize immersion, and with that encourage experiencing the music in-the-moment.

Unlike most players, Mellow puts the currently playing song at the base of the interface. This means that there is no "back" button on the main player, which might be tempting to press. Rather, everything that is unrelated to the currently playing song is done inside an overlay, hidden from view except when needed.

This divides the interface into two parts; the main player (the "now"), and the overlay (the "not now"). The main player features the currently playing song and player controls, and the overlay is used for everything else; browsing the library to find what to play, editing the song queue to choose what plays next, setting the shuffle and repeat modes, and configuring the application. When the overlay is closed, it is time to enjoy the music.

Features

  • Sleek and minimal interface: Less for the eyes, more for the ears
  • Adaptive colors: Interface colors adapt to match the current artwork
  • Gapless playback: Enjoy stutter-free transitions between songs
  • Song queue: View and edit the list of playing songs, or schedule a pause
  • Music library: Browse and play your local music collection
  • File discovery: Detects changed, moved, removed, or added song files
  • Removable drives: Ratings can be accessed once the library is available again
  • Fast and lightweight: Responsive and quick to start, even with large libraries

Roadmap

  • User-assigned custom tags: Allow users to assign custom tags to library songs for easier browsing (for example, songs could be marked as "calm" or "energic", which would make it easier to find the right music for the current mood using library filters)

Installing Mellow

[!NOTE] Only Linux builds are currently supported. If you would like to try Mellow on a different operating system, it may be possible by building it from source.

The recommended way to install Mellow is by downloading it from the releases page. It can be installed by opening the Flatpak file in Gnome Software (or similar), or using the flatpak command from the terminal:

# Note: Check if the path is correct before running
flatpak install --user ~/Downloads/io.github.userwithaname.Mellow.flatpak

Uninstalling

If you've installed Mellow using the Flatpak release asset and wish to remove it, you can either do so through your distribution's software manager, or by using the flatpak command from the terminal:

flatpak uninstall io.github.userwithaname.Mellow

If you've installed Mellow by building it from source, it can be uninstalled by manually removing the files listed at the bottom of this document.

Building from source

[!NOTE] The below instructions are meant for Fedora; steps may be different for other systems

Step 1: Installing dependencies

Rust & Cargo:

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

GStreamer, GTK, Libadwaita, and Meson:

dnf install gstreamer1-devel gtk4-devel libadwaita-devel meson

[!TIP] Mellow may also be built using Cargo directly by adding --feature no-meson. Note that this will require manually installing the GSchema, setting up icons, and creating the application shortcut. Building with Meson is recommended for a simpler build process.

Recommended plugins (not required for building):

dnf install \
  gstreamer1-plugins-bad-free \
  gstreamer1-plugins-bad-free-extras \
  gstreamer1-plugins-good \
  gstreamer1-plugins-good-extras \
  gstreamer1-plugin-libav

Step 2: Building and installing

Build using Meson:

Clone the source code and run the following command to build and install Mellow on your system:

meson setup builddir --prefix=~/.local && meson install -C builddir

The following files and directories will be created:

~
├── .cache
│   └── mellow ⟵╮
│       └── …  ⟵┤
├── .config     ├─ Created when launched
│   └── mellow ⟵┤
│       └── …  ⟵╯
└── .local
    ├── bin
    │   └── mellow ⟵─ Main program executable
    └── share
        ├── applications
        │   └── io.github.userwithaname.Mellow.desktop
        ├── dbus-1
        │   └── services
        │       └── io.github.userwithaname.Mellow.service
        ├── glib-2.0
        │   └── schemas
        │       ├── io.github.userwithaname.Mellow.gschema.xml
        │       └── gschemas.compiled ⟵╮
        │           Note: May also contain schemas for other apps
        ├── icons
        │   └── hicolor
        │       └── scalable
        │           └── apps
        │               └── io.github.userwithaname.Mellow.png
        └── mellow
            └── resources.gresource

[!TIP] Ensure the mellow executable is within your $PATH for the shortcut to work correctly. If you've used a different build command, the executable might be in a different location than shown above.

Extension points exported contracts — how you extend this code

ToQueue (Interface)
(no doc) [7 implementers]
src/library/mod.rs
Shortcuts (Interface)
(no doc) [1 implementers]
src/shortcuts.rs
Actions (Interface)
(no doc) [1 implementers]
src/ui/actions/mod.rs
CmpIsEqOr (Interface)
(no doc) [1 implementers]
src/util/cmp_ext.rs
ToShuffledQueue (Interface)
(no doc) [4 implementers]
src/library/mod.rs
WindowActions (Interface)
(no doc) [1 implementers]
src/ui/actions/mod.rs
ReorderVecExt (Interface)
(no doc) [1 implementers]
src/util/vec_ext.rs
SortedSongs (Interface)
(no doc) [1 implementers]
src/library/mod.rs

Core symbols most depended-on inside this repo

len
called by 81
src/player/song_queue.rs
build
called by 71
src/ui/item_row/mod.rs
ui_tx
called by 70
src/ui/mod.rs
player_tx
called by 45
src/player/mod.rs
replace
called by 43
src/player/song_queue.rs
info
called by 31
src/ui/item_tile/mod.rs
info
called by 24
src/library/song.rs
add
called by 23
src/player/song_queue.rs

Shape

Method 684
Function 79
Class 49
Interface 16
Enum 14

Languages

Rust100%

Modules by API surface

src/library/song.rs61 symbols
src/player/song_queue.rs56 symbols
src/library/mod.rs51 symbols
src/ui/queue_page/imp.rs40 symbols
src/player/mod.rs38 symbols
src/ui/window/imp.rs35 symbols
src/ui/settings_page/imp.rs31 symbols
src/ui/settings_page/mod.rs24 symbols
src/ui/songs_page/imp.rs20 symbols
src/ui/song_object/mod.rs20 symbols
src/ui/albums_page/imp.rs20 symbols
src/ui/album_object/mod.rs20 symbols

For agents

$ claude mcp add mellow \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact