Elisa: Difference between revisions

From KDE Community Wiki
(Replace content with link to https://apps.kde.org/elisa, where everything really lives)
Tag: Replaced
 
(15 intermediate revisions by 9 users not shown)
Line 1: Line 1:
=== Elisa ===
See https://apps.kde.org/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 ==
 
[[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.
 
; [[Get Involved/development#Applications]]
 
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:
 
sudo apt 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
 
; [[Craft#Setting_up_Craft| 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.

Latest revision as of 15:32, 23 July 2023