Page MenuHomePhabricator

Music Player: File Selector and Queue Mode
Updated 2,766 Days AgoPublic

General description

Enjoy is a music player written entirely in EFL.

It has some nice features, like being able to scan a library collection really quickly, MPRIS support, search for covers using Last.FM internet service.

However, it started as a proof of concept, and never had some basic features added to it, like a file selector, and a "current playing" playlist mode. These are basic features which must be added before it starts to really be used by the EFL community.

Additionally, the player itself got a little abandoned, since people did not adopt it due the lack of these features. Now it must get into a good working state again, having its MPRIS and Cover Search features updated.

Default Path and File Selector

Currently the first time that a user starts Enjoy, it's not "enjoyable". The user is presented with an empty list of artists, albums and tracks, and have to manually ask Enjoy on the command line to scan for a music collection before starting it.

The first task would be to make Enjoy automatically scan some default paths (for example, ~/Music) if its database is empty, and just update it again later on.

The code for scan and update of the database is already there, so a default path (possibly more than one) just need to be added to Enjoy.

Once Enjoy starts, it should be possible to click on a button to add more paths to be scanned and added to the music library. This task requires adding a button to the UI, and a File Selector widget, which would then return a path to be scanned.

The process of scanning additional paths while Enjoy is already playing more music should be handled with care.

"Current Playing" Queue

A basic use-case of music players is to go through a music database, adding tracks and albums to the "current playing" queue playlist.

This task consists of adding support for this "Current Playing" playlist to Enjoy.

When the task is done, the user should be able to:

  • add tracks to "current playing";
  • add entire albums to "current playing";
  • add all the tracks of a given artist to "current playing";
  • go to the list "current queue" and remove tracks from it.


For the mid-term evaluation, we expect Enjoy to:

  1. automatically scan default paths;
  2. be able to select additional paths to be scanned, using a file manager widget for that.

For the final evaluation, we expect Enjoy to:

  1. have a "current playing" queue, where tracks, albums and artists can be added;
  2. let the user manage this "current playing" queue, removing musics from it if needed.

Stretch Goals

The biggest challenge of this project will be understanding the Enjoy codebase, how to program with EFL and how to use the lightmediascanner library. Once that's done, adding the requested features shouldn't be so hard.

If the task is completed and delivered ahead of time, the student can opt to check and fix the current MPRIS support and the Cover Fetching code.

Another feature that can be added to Enjoy is the ability to save and load playlists in the database, and later import/export them using known formats.

Students are encouraged to suggest other ideas on the application process.

Enlightenment project benefit

A music player is a basic application used everyday by many users and most developers. Having an EFL music player working, that makes good use of the EFL technologies, will definitely encourage more users to install the libraries, attract more developers, and increase the usage of EFL applications.

Project technical details

  • Mentors:
    • Rafael Antognolli
  • Skills required:
    • C background


The difficulty of this project is assumed to be medium.

Last Author
Last Edited
Mar 31 2013, 8:27 PM