Elisa: Difference between revisions

From KDE Community Wiki
(Filter by rating)
(27 intermediate revisions by 3 users not shown)
Line 1: Line 1:
== Elisa ==
=== Elisa ===


Elisa is a simple music player aiming to provide a nice experience for its users.
Elisa is a music player developed by the KDE community that strives to be
simple and nice to use. We also recognize that we need a flexible product to
account for the different workflows and use-cases of our users.
We focus on a very good integration with the Plasma desktop of the KDE
community without compromising the support for other platforms (other Linux
desktop environments, Windows and Android).
We are creating a reliable product that is a joy to use and respects our users
privacy. As such, we will prefer to support online services where users are in
control of their data.


== Goals ==
== Goals ==
 
Elisa is still in heavy development and aims to implement the following goals:
* being very easy to setup (ideally, the user would not setup anything before being able to use it) ;
* being easy to setup (ideally, one would not setup anything before being able to use it) ;
* being fully usable offline (or in privacy mode) ;
* being fully usable offline (or in privacy mode) ;
* being open to leverage online services but not a development priority (the experience should not be degraded when you are offline) ;
* being open to leverage online services but not a development priority (the experience should not be degraded when you are offline) ;
* being usable in Plasma Workspace (MPRIS2, Baloo, ...) but also on other environments (Windows, Android, ...) ;
* being focused on satisfying users' goals ;
* being intuitive to use ;
* being focused on music player (managing your music collection is not a development priority). This means that it is not a direct fulfilment for people needing that. This seems that a dedicated application would be more appropriate ;
* being focused on music player (managing your music collection is not a development priority). This means that it is not a direct fulfillment for people needing that ;
* being as much as possible bug free (meaning stability has higher priority than feature development) ;
* being as much as possible bug free (meaning stability has higher priority than feature development) ;
* targets Linux Plasma Workspace, other Linux desktop environments, Android and Windows ;
* targets Linux Plasma Workspace, other Linux desktop environments, Android and Windows ;
* being able to leverage UPnP ContentDirectory and MediaRenderer in an easy and intuitive way.
* being able to leverage UPnP DLNA.
 
== Release Plans ==
 
[[Elisa/ElisaReleaseSchedule|Release Schedules of Elisa]]
 
== Change Log of Stable Versions ==
 
[[Elisa/ChangeLog.0.2.0|Change Log of version 0.2.0]]
 
== Current Interface ==
 
The following snapshots show the current interface. They are only indicative and everything is open for improvements.
 
[[File:Screenshot_20180128_093724.png|400px|thumb|left|Elisa Albums View]]
 
[[File:Screenshot_20180128_093738.png|400px|thumb|right|Elisa Artists View]]
 
[[File:Screenshot_20180128_094158.png|400px|thumb|left|Elisa Albums from an Artist View]]
 
[[File:Screenshot_20180128_093746.png|400px|thumb|right|Elisa Tracks View]]
 
[[File:Screenshot_20180128_094136.png|400px|thumb|left|Elisa Playlist]]
 
[[File:Screenshot_20180128_095041.png|400px|thumb|right|Search "trip" in Elisa Albums View]]
 
[[File:Screenshot_20180128_094315.png|400px|thumb|left|Elisa One Album View]]
 
[[File:Screenshot_20180128_095730.png|400px|thumb|right|Elisa All Albums View filtered by rating]]
 
Elisa is loosely following design mockups made by the Visual Design Group of KDE. The mockups can be found [https://community.kde.org/KDE_Visual_Design_Group/Music_Player here].
 
== Try It ==
 
Some packages already exist. [https://community.kde.org/Guidelines_and_HOWTOs/Flatpak Flatpaks] for Elisa are available. There is an AUR and it is packaged for KDE neon Developer Unstable. The releases are  usually packaged for [https://copr.fedorainfracloud.org/coprs/eclipseo/elisa/ Fedora]
 
You can obtain Windows builds from https://binary-factory.kde.org/job/elisa-master-win32/
 
== Get Involved ==
 
The Elisa team is open to any contributions and feedback.
 
Bugs can be reported to [https://bugs.kde.org/ bugs.kde.org].
 
Development can be followed on [https://phabricator.kde.org/project/view/193/ Phabricator].
Code contributions may also be submitted via Phabricator. Please follow the instructions of the [https://community.kde.org/Infrastructure/Phabricator Phabricator User Guide].
 
There is also a [https://mail.kde.org/mailman/listinfo/elisa Elisa mailing list] available for coordination.
 
== Compilation from source ==
=== on Linux ===
The way Elisa application is built is completely standard for an application based on Qt5, KDE Frameworks 5 and cmake:
 
; [[Guidelines and HOWTOs/Build_from_source| Build from source]]
 
Elisa has a few dependencies mainly from Qt5 and KF5 with the minimum required versions being Qt 5.10 and KDE Frameworks 5.45. Currently the list is:
 
-- REQUIRED:
 
* Qt5Network
* Qt5Qml
* Qt5Quick
* Qt5Test
* Qt5Sql
* Qt5Multimedia
* Qt5Svg
* Qt5Gui
* Qt5Widgets
* Qt5QuickTest
* Qt5
* ECM
* Qt5Core
* Gettext
* PythonInterp
* KF5I18n, KF5 text internationalization library.
* KF5CoreAddons, Qt addon library with a collection of non-GUI utilities.
* KF5FileMetaData, Provides a simple library for extracting metadata.
* KF5Config, Persistent platform-independent application settings.
 
-- RECOMMENDED:
 
* KF5Declarative, Integration of QML and KDE work spaces.
* KF5Baloo, Baloo provides file searching and indexing.
* KF5XmlGui, Framework for managing menu and toolbar actions.
* KF5ConfigWidgets, Widgets for configuration dialogs.
* KF5KCMUtils, KF5 Utilities for KDE System Settings modules library.
* KF5Package, KF5 package management library needed to get the configuration dialogs.
 
-- OPTIONAL:
 
* Qt5DBus, Qt5 DBus is needed to provide MPris2 interface to allow remote control by the desktop workspace.
* KF5DocTools, Create documentation from DocBook library.
* KF5Crash, Graceful handling of application crashes.
* KF5DBusAddons, Convenience classes for D-Bus.
* UPNPQT, UPNP layer build with Qt 5., <https://gitlab.com/homeautomationqt/upnp-player-qt>
 
-- RUNTIME:


== Design Open Questions ==
* Qt5QuickWidgets, Qt5 Quick Widgets is needed at runtime to provide the interface.
* Qt5QuickControls2, Qt5 Quick Controls version 2 is needed at runtime to provide the interface.
* Qt.labs.platform, Qt.labs module with some qml components wrapping platform APIs
* qml-module-qtqml-models2, qml Qt module
* qml-module-org-kde-kcm, qml module from KF5 KDeclarative framework
* qml-module-qtquick-controls, qml Qt module
* qml-module-qtquick-dialogs, qml Qt module
* qml-module-qtquick-layouts, qml Qt module
* qml-module-qtquick2, qml Qt module
 
For example on Debian and derivatives you may use:
 
apt-get install qtbase5-dev qtmultimedia5-dev qtdeclarative5-dev libqt5svg5-dev libkf5i18n-dev libkf5filemetadata-dev baloo-kf5-dev libkf5config-dev libkf5kcmutils-dev libkf5declarative-dev libkf5coreaddons-dev libkf5doctools-dev libkf5xmlgui-dev libkf5crash-dev libkf5dbusaddons-dev extra-cmake-modules gettext qml-module-qt-labs-platform qml-module-qtqml-models2 qml-module-org-kde-kcm qml-module-qtquick-controls qml-module-qtquick-dialogs qml-module-qtquick-layouts qml-module-qtquick2
 
The next state is to get Elisa sources and build them:
git clone https://anongit.kde.org/elisa.git
cd elisa
mkdir build
cd build
cmake ..
make
 
You can execute it with the following command:
 
./elisa/build/src/elisa
 
You may also now install Elisa system-wide, but beware that the following cannot always be undone (read the build instructions for more information). If you wish to do anyway, run
 
sudo make install
 
=== on Android ===


The design of Elisa currently leaves open questions about the direction. At least the following points need an identified solution that could be implemented:
It is now possible to build a very simple application based on Elisa on Android.


* Implement User Centered Design to help guide the development (definition of persona, ...) ;
cmake .. -G Ninja -DCMAKE_SYSTEM_VERSION=19 -DCMAKE_INSTALL_PREFIX=<workspace>/androidRoot -DCMAKE_ANDROID_NDK=<workspace>/Android/Sdk/ndk-bundle -DCMAKE_TOOLCHAIN_FILE=<workspace>/androidRoot/share/ECM/toolchain/Android.cmake -DECM_ADDITIONAL_FIND_ROOT_PATH="<workspace>/Qt/5.11.1/android_armv7;<workspace>/androidRoot;<workspace>/Android/Sdk/ndk-bundle/platforms/android-19/arch-arm/usr/lib" -DKF5_HOST_TOOLING=/usr/lib/x86_64-linux-gnu/cmake -DQTANDROID_EXPORTED_TARGET=elisa -DANDROID_APK_DIR=../data
* trying to combine an interface to be used with the mouse and with the touchscreen commonly found on laptops ;
* how to decide what is done by single click, double click or single long click.


== Description of the Application Architecture ==
=== on Windows ===


Currently music is retrieved from Baloo and put in an SQLite memory database. Live refresh from Baloo is not working.
Windows is built using the Craft build system. Please follow instruction


The user interface is done in qml with Qt quick controls 1.
; [[Craft#Setting_up_Craft| Setting up of Craft]]


The UPnP support is probably broken right now.
and enter


== Current Interface ==
craft elisa


The following snapshots show the current interface. They are only indicative and everything is open for improvements.
in the Windows PowerShell to download and compile all required dependencies and Elisa itself.


[[File:Filter_rating_allalbums_Screenshot_20170326_230514.png|400px|thumb|left|Filter All Albums View by Rating]]
== Design Open Questions ==


[[File:elisa_header_20170221_225733.png|400px|thumb|left|Elisa New Header]]
The design of Elisa currently leaves open questions about the direction. At least the following points need an identified solution that could be implemented:


[[File:ElisaPlayListScreenshot_20161209_172455.png|400px|thumb|left|Elisa Playlist]]
* Implement User Centered Design to help guide the development (definition of persona, ...) ;
* trying to combine an interface to be used with the mouse and with the touchscreen commonly found on laptops ;
* how to decide what is done with a single click, double click or single long click.


[[File:ElisaAlbumViewScreenshot_20161209_172517.png|400px|thumb|left|Elisa Albums View Filtered]]
== Description of the Application Architecture ==


[[File:ElisaOneAlbumScreenshot_20161209_172542.png|400px|thumb|left|Elisa One Album View]]
Currently, music is retrieved from Baloo and put in an SQLite memory database. A local file indexer can be used in addition or when Baloo is not available.


[[File:ElisaAllArtistsScreenshot_20161209_172623.png|400px|thumb|left|Elisa Artists View]]
The user interface is done in Qml with Qt Quick Controls 1 and 2. A port to Qt Quick Controls 2 only is slated for the future.


[[File:ElisaAlbumsFromArtistScreenshot_20161209_172641.png|400px|thumb|left|Elisa All Albums from an Artist View]]
The UPnP support is probably broken right now.

Revision as of 06:21, 23 August 2018

Elisa

Elisa is a music player developed by the KDE community that strives to be simple and nice to use. We also recognize that we need a flexible product to account for the different workflows and use-cases of our users. We focus on a very good integration with the Plasma desktop of the KDE community without compromising the support for other platforms (other Linux desktop environments, Windows and Android). We are creating a reliable product that is a joy to use and respects our users privacy. As such, we will prefer to support online services where users are in control of their data.

Goals

Elisa is still in heavy development and aims to implement the following goals:

  • being easy to setup (ideally, one would not setup anything before being able to use it) ;
  • being fully usable offline (or in privacy mode) ;
  • being open to leverage online services but not a development priority (the experience should not be degraded when you are offline) ;
  • being focused on satisfying users' goals ;
  • being focused on music player (managing your music collection is not a development priority). This means that it is not a direct fulfilment for people needing that. This seems that a dedicated application would be more appropriate ;
  • being as much as possible bug free (meaning stability has higher priority than feature development) ;
  • targets Linux Plasma Workspace, other Linux desktop environments, Android and Windows ;
  • being able to leverage UPnP DLNA.

Release Plans

Release Schedules of Elisa

Change Log of Stable Versions

Change Log of version 0.2.0

Current Interface

The following snapshots show the current interface. They are only indicative and everything is open for improvements.

Elisa Albums View
Elisa Artists View
Elisa Albums from an Artist View
Elisa Tracks View
Elisa Playlist
Search "trip" in Elisa Albums View
Elisa One Album View
Elisa All Albums View filtered by rating

Elisa is loosely following design mockups made by the Visual Design Group of KDE. The mockups can be found here.

Try It

Some packages already exist. Flatpaks for Elisa are available. There is an AUR and it is packaged for KDE neon Developer Unstable. The releases are usually packaged for Fedora

You can obtain Windows builds from https://binary-factory.kde.org/job/elisa-master-win32/

Get Involved

The Elisa team is open to any contributions and feedback.

Bugs can be reported to bugs.kde.org.

Development can be followed on Phabricator. Code contributions may also be submitted via Phabricator. Please follow the instructions of the Phabricator User Guide.

There is also a Elisa mailing list available for coordination.

Compilation from source

on Linux

The way Elisa application is built is completely standard for an application based on Qt5, KDE Frameworks 5 and cmake:

Build from source

Elisa has a few dependencies mainly from Qt5 and KF5 with the minimum required versions being Qt 5.10 and KDE Frameworks 5.45. Currently the list is:

-- REQUIRED:

* Qt5Network
* Qt5Qml
* Qt5Quick
* Qt5Test
* Qt5Sql
* Qt5Multimedia
* Qt5Svg
* Qt5Gui
* Qt5Widgets
* Qt5QuickTest
* Qt5
* ECM 
* Qt5Core
* Gettext
* PythonInterp
* KF5I18n, KF5 text internationalization library.
* KF5CoreAddons, Qt addon library with a collection of non-GUI utilities.
* KF5FileMetaData, Provides a simple library for extracting metadata.
* KF5Config, Persistent platform-independent application settings.

-- RECOMMENDED:

* KF5Declarative, Integration of QML and KDE work spaces.
* KF5Baloo, Baloo provides file searching and indexing.
* KF5XmlGui, Framework for managing menu and toolbar actions.
* KF5ConfigWidgets, Widgets for configuration dialogs.
* KF5KCMUtils, KF5 Utilities for KDE System Settings modules library.
* KF5Package, KF5 package management library needed to get the configuration dialogs.

-- OPTIONAL:

* Qt5DBus, Qt5 DBus is needed to provide MPris2 interface to allow remote control by the desktop workspace.
* KF5DocTools, Create documentation from DocBook library.
* KF5Crash, Graceful handling of application crashes.
* KF5DBusAddons, Convenience classes for D-Bus.
* UPNPQT, UPNP layer build with Qt 5., <https://gitlab.com/homeautomationqt/upnp-player-qt>

-- RUNTIME:

* Qt5QuickWidgets, Qt5 Quick Widgets is needed at runtime to provide the interface.
* Qt5QuickControls2, Qt5 Quick Controls version 2 is needed at runtime to provide the interface.
* Qt.labs.platform, Qt.labs module with some qml components wrapping platform APIs
* qml-module-qtqml-models2, qml Qt module
* qml-module-org-kde-kcm, qml module from KF5 KDeclarative framework
* qml-module-qtquick-controls, qml Qt module
* qml-module-qtquick-dialogs, qml Qt module
* qml-module-qtquick-layouts, qml Qt module
* qml-module-qtquick2, qml Qt module

For example on Debian and derivatives you may use:

apt-get install qtbase5-dev qtmultimedia5-dev qtdeclarative5-dev libqt5svg5-dev libkf5i18n-dev libkf5filemetadata-dev baloo-kf5-dev libkf5config-dev libkf5kcmutils-dev libkf5declarative-dev libkf5coreaddons-dev libkf5doctools-dev libkf5xmlgui-dev libkf5crash-dev libkf5dbusaddons-dev extra-cmake-modules gettext qml-module-qt-labs-platform qml-module-qtqml-models2 qml-module-org-kde-kcm qml-module-qtquick-controls qml-module-qtquick-dialogs qml-module-qtquick-layouts qml-module-qtquick2 

The next state is to get Elisa sources and build them:

git clone https://anongit.kde.org/elisa.git
cd elisa
mkdir build
cd build
cmake ..
make

You can execute it with the following command:

./elisa/build/src/elisa

You may also now install Elisa system-wide, but beware that the following cannot always be undone (read the build instructions for more information). If you wish to do anyway, run

sudo make install

on Android

It is now possible to build a very simple application based on Elisa on Android.

cmake .. -G Ninja -DCMAKE_SYSTEM_VERSION=19 -DCMAKE_INSTALL_PREFIX=<workspace>/androidRoot -DCMAKE_ANDROID_NDK=<workspace>/Android/Sdk/ndk-bundle -DCMAKE_TOOLCHAIN_FILE=<workspace>/androidRoot/share/ECM/toolchain/Android.cmake -DECM_ADDITIONAL_FIND_ROOT_PATH="<workspace>/Qt/5.11.1/android_armv7;<workspace>/androidRoot;<workspace>/Android/Sdk/ndk-bundle/platforms/android-19/arch-arm/usr/lib" -DKF5_HOST_TOOLING=/usr/lib/x86_64-linux-gnu/cmake -DQTANDROID_EXPORTED_TARGET=elisa -DANDROID_APK_DIR=../data

on Windows

Windows is built using the Craft build system. Please follow instruction

Setting up of Craft

and enter

craft elisa

in the Windows PowerShell to download and compile all required dependencies and Elisa itself.

Design Open Questions

The design of Elisa currently leaves open questions about the direction. At least the following points need an identified solution that could be implemented:

  • Implement User Centered Design to help guide the development (definition of persona, ...) ;
  • trying to combine an interface to be used with the mouse and with the touchscreen commonly found on laptops ;
  • how to decide what is done with a single click, double click or single long click.

Description of the Application Architecture

Currently, music is retrieved from Baloo and put in an SQLite memory database. A local file indexer can be used in addition or when Baloo is not available.

The user interface is done in Qml with Qt Quick Controls 1 and 2. A port to Qt Quick Controls 2 only is slated for the future.

The UPnP support is probably broken right now.