1MELLOWPLAYER(1)                  MellowPlayer                  MELLOWPLAYER(1)
2
3
4

NAME

6       mellowplayer - MellowPlayer Documentation [image]
7

USER DOCUMENTATION

9       Contents:
10
11   About MellowPlayer
12       MellowPlayer  is  born  from  the  need  of  a  Qt-based alternative to
13       NuvolaPlayer for the KaOS linux distribution
14
15       Here are the initial goals:
16
17       · the application should embed a web view of the music  streaming  ser‐
18         vice (the same as you see in a regular browser) and should provide an
19         integration with the desktop (media keys support,  global  shortcuts,
20         notifications,...).
21
22       · the  application should be able to support more than 1 streaming ser‐
23         vice
24
25       · we (the core team) will only support the streaming services  that  we
26         are  actively using. Other services should be added and maintained by
27         contributors. The main reason is that we won't  be  able  to  support
28         non-free  services  (even those who have a trial period). Support for
29         free services (even with limitations) might  be  added  by  the  team
30         after the release 1.0.
31
32       · adding  a  new  service/extension  should  be  easy: you just write a
33         javascript plugin
34
35   Installation
36       This page will guide you throught the installation of  MellowPlayer  on
37       the supported operating systems.
38
39   GNU/Linux
40       We  provide  several  ways to install a pre-compiled version of Mellow‐
41       Player on GNU/Linux:
42
43       1. Native package (only for Ubuntu, Fedora, ArchLinux & openSUSE)
44
45       2. Flatpak
46
47       3. AppImage
48
49       To choose which kind of installer you should use, follow  those  simple
50       rules:
51
52       · Always  prefer  the  native  package  to  any other format if that is
53         available for your distribution. Native package will always integrate
54         better  with your desktop and, in most cases, it will pick up propri‐
55         etary codecs (ffmpeg) from your system if installed.
56
57       · Prefer flatpak over AppImage, especially if the service you  want  to
58         use require proprietary audio codecs.
59
60       · Use  the  AppImage  if  flatpak is not available on your distribution
61         (very unlikely) and you don't need proprietary codecs.
62
63   Fedora
64       Starting from Fedora 27, MellowPlayer is available  from  the  official
65       stable repositories:
66
67          sudo dnf install mellowplayer
68
69   Proprietary codecs
70       Most services require proprietary audio codecs to work. You can install
71       them from the RPMFusion repositories:
72
73          sudo dnf install qt5-qtwebengine-freeworld
74
75   Flash
76       Services such as Deezer and  Tidal  require  flash  to  work.  You  can
77       install it from the adobe repositories:
78
79          sudo rpm -ivh http://linuxdownload.adobe.com/adobe-release/adobe-release-i386-1.0-1.noarch.rpm
80          sudo rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-adobe-linux
81          sudo dnf install flash-player-ppapi
82
83   Widevine
84       Some  services  such  as Spotify and Amazon Music requires the widevine
85       ppapi plugin to work, you can install it by running the below commands:
86
87          wget https://archive.archlinux.org/packages/c/chromium/chromium-61.0.3163.100-1-x86_64.pkg.tar.xz
88          wget https://dl.google.com/widevine-cdm/1.4.8.1008-linux-x64.zip
89          tar -xvf chromium-61.0.3163.100-1-x86_64.pkg.tar.xz
90          unzip 1.4.8.1008-linux-x64.zip
91
92          sudo mkdir /usr/lib/chromium
93          sudo cp libwidevinecdm.so /usr/lib/chromium
94          sudo cp ./usr/lib/chromium/libwidevinecdmadapter.so /usr/lib/chromium
95          sudo chmod 644 /usr/lib/chromium/libwidevinecdm.so
96          sudo chmod 644 /usr/lib/chromium/libwidevinecdmadapter.so
97
98       NOTE:
99          You might need to  adapt  this  script  to  download  a  version  of
100          chromium and widevine that match the version used by your Qt instal‐
101          lation.
102
103   Ubuntu
104   18.04
105       Before installing MellowPlayer, make sure the  universe  repository  is
106       enabled:
107
108          sudo add-apt-repository universe
109
110       Install procedure:
111
112          sudo sh -c "echo 'deb http://download.opensuse.org/repositories/home:/ColinDuquesnoy/xUbuntu_18.04/ /' > /etc/apt/sources.list.d/mellowplayer.list"
113          wget -nv https://download.opensuse.org/repositories/home:ColinDuquesnoy/xUbuntu_18.04/Release.key -O Release.key
114          sudo apt-key add - < Release.key
115          sudo apt update
116          sudo apt install mellowplayer
117
118   19.10
119       Before  installing  MellowPlayer,  make sure the universe repository is
120       enabled:
121
122          sudo add-apt-repository universe
123
124       Install procedure:
125
126          sudo sh -c "echo 'deb http://download.opensuse.org/repositories/home:/ColinDuquesnoy/xUbuntu_19.10/ /' > /etc/apt/sources.list.d/mellowplayer.list"
127          wget -nv https://download.opensuse.org/repositories/home:ColinDuquesnoy/xUbuntu_19.10/Release.key -O Release.key
128          sudo apt-key add - < Release.key
129          sudo apt update
130          sudo apt install mellowplayer
131
132   Debian
133   Stable (Buster)
134          sudo sh -c "echo 'deb https://download.opensuse.org/repositories/home:/ColinDuquesnoy/Debian_10/ /' > /etc/apt/sources.list.d/mellowplayer.list"
135          wget -nv https://download.opensuse.org/repositories/home:/ColinDuquesnoy/Debian_10/Release.key -O Release.key
136          sudo apt-key add - < Release.key
137          sudo apt update
138          sudo apt install mellowplayer
139
140   Testing
141          sudo sh -c "echo 'deb https://download.opensuse.org/repositories/home:/ColinDuquesnoy/Debian_Testing/ /' > /etc/apt/sources.list.d/mellowplayer.list"
142          wget -nv https://download.opensuse.org/repositories/home:/ColinDuquesnoy/Debian_Testing/Release.key -O Release.key
143          sudo apt-key add - < Release.key
144          sudo apt update
145          sudo apt install mellowplayer
146
147   Unstable
148          sudo sh -c "echo 'deb https://download.opensuse.org/repositories/home:/ColinDuquesnoy/Debian_Unstable/ /' > /etc/apt/sources.list.d/mellowplayer.list"
149          wget -nv https://download.opensuse.org/repositories/home:/ColinDuquesnoy/Debian_Unstable/Release.key -O Release.key
150          sudo apt-key add - < Release.key
151          sudo apt update
152          sudo apt install mellowplayer
153
154   ArchLinux
155       MellowPlayer is available from the AUR, install it with  your  favorite
156       AUR tool (e.g. yaourt).
157
158          yaourt -S mellowplayer
159
160   openSUSE Leap 15
161       Use the openSUSE build service web interface or install manually:
162
163          zypper addrepo https://download.opensuse.org/repositories/home:ColinDuquesnoy/openSUSE_Leap_15.1/home:ColinDuquesnoy.repo
164          zypper refresh
165          zypper install MellowPlayer
166
167   openSUSE Tumbleweed
168       Use the openSUSE build service web interface or install manually:
169
170          zypper addrepo http://download.opensuse.org/repositories/home:ColinDuquesnoy/openSUSE_Tumbleweed/home:ColinDuquesnoy.repo
171          zypper refresh
172          zypper install MellowPlayer
173
174   KaOS
175       MellowPlayer is available from KaOSx/apps repository, just run:
176
177          $ sudo pacman -S mellowplayer
178
179   Flatpak
180       MellowPlayer's  flatpak  is  not  yet  available on flathub but you can
181       download and install a single file bundle:
182
183       1. Download the flatpak from our bintray repository
184
185       2. Install the flatpak: flatpak install ./MellowPlayer.flatpak
186
187       3. Run the flatpak from your application menu  or  from  command  line:
188          flatpak run com.gitlab.ColinDuquesnoy.MellowPlayer
189
190   AppImage
191       1. Download the AppImage from our bintray repository
192
193       2. Make it executable: chmod +x ./MellowPlayer.AppImage
194
195       3. Run it: ./MellowPlayer.AppImage
196
197   Compiling from source
198       See the README for build instructions.
199
200   Windows
201       Just grab the windows installer from the official website (click on the
202       Windows folder) and follow the instructions.
203
204       Please note the Windows Installer we provide is built with a version of
205       QtWebEngine  built  without  proprietary  codecs support (for licensing
206       reasons).  If your favorite service require proprietary codecs to work,
207       you'll  need  to build QtWebEngine with the flag use_proprietary_codecs
208       and build MellowPlayer using that QtWebEngine version.
209
210   OS X
211       OSX is not officially supported anymore. You may try to build  and  run
212       MellowPlayer from sources.
213
214   Features
215       · Cross-platform (available on Windows, Mac OSX and GNU/Linux)
216
217       · System tray integration and notifications
218
219       · Mpris2 support (GNU/Linux only)
220
221       · Hotkeys and media player keys support
222
223       · Plugin  based  application  (you  can add support for a new web-based
224         music streaming service by writing a javascript plugin)
225
226       · User scripts support
227
228   Supported Services
229 ┌───────────┬───────────┬──────────┬─────────┬─────┬──────────┬──────────┬─────────┐
230 │Service    │ GNU/Linux │ AppImage │ Windows │ OSx │ Require  │ Require  │ Require │
231 │           │           │          │         │     │ non-free │ Flash    │ DRM     │
232 │           │           │          │         │     │ HTML     │          │         │
233 │           │           │          │         │     │ codecs   │          │         │
234 ├───────────┼───────────┼──────────┼─────────┼─────┼──────────┼──────────┼─────────┤
235Deezer     │ Yes       │ Yes      │ Yes     │ Yes │ Optional │ Optional │ No      │
236 ├───────────┼───────────┼──────────┼─────────┼─────┼──────────┼──────────┼─────────┤
237Mixcloud   │ Yes       │ No       │ No      │ No  │ Yes      │ No       │ No      │
238 ├───────────┼───────────┼──────────┼─────────┼─────┼──────────┼──────────┼─────────┤
239Soundcloud │ Yes       │ No       │ No      │ No  │ Yes      │ No       │ No      │
240 ├───────────┼───────────┼──────────┼─────────┼─────┼──────────┼──────────┼─────────┤
241Spotify    │ Yes       │ No       │ No      │ No  │ Yes      │ No       │ Yes     │
242 ├───────────┼───────────┼──────────┼─────────┼─────┼──────────┼──────────┼─────────┤
243TuneIn     │ Yes       │ Yes      │ Yes     │ Yes │ Depends  │ No       │ No      │
244 │           │           │          │         │     │ on       │          │         │
245 │           │           │          │         │     │ streams  │          │         │
246 ├───────────┼───────────┼──────────┼─────────┼─────┼──────────┼──────────┼─────────┤
2478tracks    │ Yes       │ Yes      │ Yes     │ Yes │ Depends  │ No       │ No      │
248 │           │           │          │         │     │ on       │          │         │
249 │           │           │          │         │     │ streams  │          │         │
250 ├───────────┼───────────┼──────────┼─────────┼─────┼──────────┼──────────┼─────────┤
251Google     │ Yes       │ Yes      │ Yes     │ Yes │ ?        │ ?        │ ?       │
252Play Music │           │          │         │     │          │          │         │
253 ├───────────┼───────────┼──────────┼─────────┼─────┼──────────┼──────────┼─────────┤
254Youtube    │ Yes       │ Yes      │ Yes     │ Yes │ Depends  │ No       │ No      │
255 │           │           │          │         │     │ on       │          │         │
256 │           │           │          │         │     │ streams  │          │         │
257 ├───────────┼───────────┼──────────┼─────────┼─────┼──────────┼──────────┼─────────┤
258Tidal      │ Yes       │ Yes      │ Yes     │ Yes │ No       │ Yes      │ No      │
259 ├───────────┼───────────┼──────────┼─────────┼─────┼──────────┼──────────┼─────────┤
260Anghami    │ Yes       │ No       │ No      │ No  │ Yes      │ No       │ No      │
261 ├───────────┼───────────┼──────────┼─────────┼─────┼──────────┼──────────┼─────────┤
262Pocket     │ Yes       │ No       │ No      │ No  │ Yes      │ No       │ No      │
263Casts      │           │          │         │     │          │          │         │
264 ├───────────┼───────────┼──────────┼─────────┼─────┼──────────┼──────────┼─────────┤
265HearThisAt │ Yes       │ Yes      │ Yes     │ Yes │ Depends  │ No       │ No      │
266 │           │           │          │         │     │ on       │          │         │
267 │           │           │          │         │     │ streams  │          │         │
268 ├───────────┼───────────┼──────────┼─────────┼─────┼──────────┼──────────┼─────────┤
269Jamendo    │ Yes       │ Yes      │ Yes     │ Yes │ No       │ No       │ No      │
270 └───────────┴───────────┴──────────┴─────────┴─────┴──────────┴──────────┴─────────┘
271
272
273
274Radionomy  │ Yes       │ Yes      │ Yes     │ Yes │ Depends  │ No       │ No      │
275 │           │           │          │         │     │ on       │          │         │
276 │           │           │          │         │     │ streams  │          │         │
277 ├───────────┼───────────┼──────────┼─────────┼─────┼──────────┼──────────┼─────────┤
278Wynk       │ Yes       │ No       │ No      │ No  │ Yes      │ No       │ No      │
279 ├───────────┼───────────┼──────────┼─────────┼─────┼──────────┼──────────┼─────────┤
280ympd       │ Yes       │ Yes      │ Yes     │ Yes │ No       │ No       │ No      │
281 └───────────┴───────────┴──────────┴─────────┴─────┴──────────┴──────────┴─────────┘
282
283   User Scripts
284       With MellowPlayer >= 3.1 you have the possibility to use user scripts.
285
286       This means that you can customize the look and feel of a streaming ser‐
287       vice as you like it, or simply to add features you miss.
288
289          · Download and use different themes
290
291          · Download and use different user scripts
292
293   Getting started
294   First startup
295       On  the  first  startup, you'll be presented with the following screen:
296       [image]
297
298       Just click on a service to start running it.  You  can  start  multiple
299       service  at  the  same  time  and  quickly  switch  between  them using
300       Ctrl+Tab/Ctrl+Shift+Tab.  [image]
301
302       You can get back to the service selection page using F8 or  the  select
303       service button: [image]
304
305   Application Settings
306       You  can change application settings by clicking on the menu button and
307       by selecting the Settings entry or by pressing F2: [image]
308
309       This will bring the following page: [image]
310
311       There are a series of settings category:
312
313       · General: general options
314
315       · Appearance: let you change the appearance of the application
316
317       · Notifications: let you change some notification settings
318
319       · Shortcuts: let you change all the application shortcuts
320
321       · Privacy: enable or disable privacy related options
322
323       · Services: list the available services and let  configure  them  (url,
324         user scripts)
325
326       · Cache:  a few buttons that let you clear the application cache (album
327         art covers,...) and clear the web cookies.
328
329   Notifications
330       By default, MellowPlayer will display a notification whenever the  cur‐
331       rent track changed.  [image]
332
333       You  can change the notifications behaviour in the application settings
334       page [image]
335
336       and you can also quickly toggle notifications on/off using  the  button
337       in the toolbar: [image]
338
339   Listening History
340       MellowPlayer  can  keep  track of your listens and display it in a side
341       panel. This feature is OFF by default.
342
343       You can see your listening history by pressing  the  listening  history
344       button: [image]
345
346       Here is what the history look like: [image]
347
348       You  can  search  the  history and filter by service by clicking on the
349       search icon [image]
350
351   MPRIS2 Interface
352       Most GNU/Linux Desktop Environments have a MPRIS client interface  that
353       sits in the system tray and let you control media players easily.
354
355       MellowPlayer implements the DBUS MPRIS 2 interface and should appear in
356       your MPRIS2 client interface:
357
358       · Plasma 5:
359       [image]
360
361       · Gnome:
362       [image]
363
364       · Unity:
365       [image]
366
367   FAQ & Known issues
368   Playback does not start on some services such as Soundcloud or  Mixcloud...
369       What can I do?
370       Services  that  don't use flash often requires proprietary audio codecs
371       to be installed on your system. Those codecs are not  included  in  our
372       official releases (AppImage and Windows Installer).
373
374       To  solve  the  problem,  you  need  to  build MellowPlayer and Qt from
375       sources and make sure you  enable  propertietary  codecs  support,  see
376       https://doc.qt.io/qt-5.11/qtwebengine-features.html#audio-and-video-codecs
377
378       If you're using GNU/Linux, check if a native package of MellowPlayer is
379       available  for your distribution and use it instead of AppImage. Native
380       packages usually use system ffmpeg and it should be enought to  install
381       extra ffmpeg plugins for the missing proprietary codecs.
382
383       NOTE:
384          MP3  is still considered as a proprietary/patented codec prior to Qt
385          5.11.
386
387       NOTE:
388          Services that require proprietary codecs are included in  our  offi‐
389          cial releases but won't appear in the application.
390
391   The  application  crashes  at  startup on GNU/Linux with open source NVIDIA
392       drivers. What can I do?
393       Qt/QML applications don't work well with the open source NVIDIA drivers
394       (nouveau). It is recommended to use the proprietary NVIDIA drivers.
395
396   The  application  crashes  at  startup on GNU/Linux with proprietary NVIDIA
397       drivers. What can I do?
398       Make sure you rebooted after your last NVIDIA driver  update  and  make
399       sure to run sudo nvidia-xconfig before reporting the issue.
400
401   There is no music playback on Spotify. What can I do?
402       Make  sure you have installed both the proprietary audio codecs (ffmpeg
403       with extra codecs) and the widevine DRM plugin. The DRM plugin  can  be
404       extracted from chromium binary archive:
405
406          wget https://archive.archlinux.org/packages/c/chromium/chromium-61.0.3163.100-1-x86_64.pkg.tar.xz
407          wget https://dl.google.com/widevine-cdm/1.4.8.1008-linux-x64.zip
408          tar -xvf chromium-61.0.3163.100-1-x86_64.pkg.tar.xz
409          unzip 1.4.8.1008-linux-x64.zip
410
411          sudo mkdir /usr/lib/chromium
412          sudo cp libwidevinecdm.so /usr/lib/chromium
413          sudo cp ./usr/lib/chromium/libwidevinecdmadapter.so /usr/lib/chromium
414          sudo chmod 644 /usr/lib/chromium/libwidevinecdm.so
415          sudo chmod 644 /usr/lib/chromium/libwidevinecdmadapter.so
416

DEVELOPER DOCUMENTATION

418       Contents:
419
420   Coding guidelines
421       We use the llvm code formating guidelines using clang-format.
422
423       We  made a small script that will format any C++/javascript source file
424       in the project to fit the style guidelines:
425
426          sh scripts/beautify.sh
427
428       To run this tool, you need to install the following packages:
429
430       · clang-format: sudo pacman -S clang
431
432       · jsbeautifier: sudo pip3 install jsbeautifier
433
434       Please, run this script before submitting a pull request!
435
436       See  the  coding   guidelines   wiki   page   for   more   information:
437       https://gitlab.com/ColinDuquesnoy/MellowPlayer/wikis/coding-guidelines
438
439   Project structure
440       See    the    architecture    wiki    page    for   more   information:
441       https://gitlab.com/ColinDuquesnoy/MellowPlayer/wikis/architecture
442
443   Plugins
444   Introduction
445       MellowPlayer can be extended by writing a streaming service integration
446       plugin.
447
448       A streaming service integration plugin is just a directoy that contains
449       some specific files:
450
451       · integration.js: the actual code that integrates the service into Mel‐
452         lowPlayer
453
454       · logo.svg: the logo of the service
455
456       · metadata.ini: plugin's metadata
457
458       · theme.json:  optional  theme  definition.  The colors defined in this
459         file are used through the whole user interface if  theme  is  set  to
460         adaptive.
461
462       The  file  integration.js  contains  a series of function that you must
463       implement. Those functions will get called by the C++  application  for
464       updating  the  player state or when the user triggered an action (play,
465       pause,...).
466
467       MellowPlayer will look for plugins in the following directories:
468
469       · $CURRENT_WORKING_DIR/plugins
470
471       · /usr/share/mellowplayer/plugins
472
473       · /usr/local/share/mellowplayer/plugins
474
475       · ~/.local/share/MellowPlayer/plugins
476
477   Create a new plugin
478       This feature does not exists anymore in v2.95.0, we will  be  back  for
479       v3.0.0
480
481       To  create  a plugin, go to the Control drop down menu or the Developer
482       main menu and click on Create plugin.
483
484       This will bring the following wizard: [image]
485
486       Fill in the details: [image]
487
488       When you're done, select your new plugin service in the services dialog
489       that will automatically pop out: [image]
490
491   Specify the supported platforms
492       When  you  create the plugin, you need to specify the list of supported
493       platforms. Services that require proprietary codecs  to  work  are  not
494       supported on AppImage, Windows and OSX.
495
496       If  you are developing on GNU/Linux and want to know if you plugin will
497       work everywhere, try it from an official AppImage release. If it works,
498       you  can  safely check All platforms, otherwise it might only work as a
499       native package from a GNU/Linux distribution.
500
501   Functions to implement
502       Here is a brief description of the functions you need to  implement  in
503       order to integrate a new web-based streaming service.
504
505   update()
506       This function is called regularly to update the player information.
507
508       You must return a dictionnary with the following keys:
509
510       · playbackStatus (int): Use mellowplayer.PlaybackStatus)*. Mandatory
511
512       · canSeek (bool): True if the player can seek into the current song.
513
514       · canGoNext (bool): True if the player can skip to the next song.
515
516       · canGoPrevious  (bool):  True  if  the  playe can skip to the previous
517         song.
518
519       · canAddToFavorites (bool): True if the user can add or remove the cur‐
520         rent song from a list of favorites
521
522       · volume  (float  [0-1]):  Player  volume. Optional, leave it 1 if your
523         plugin cannot control the volume.
524
525       · songId (str): The unique id of the current  song.  Mandatory.  Either
526         use a GUID or hash the song title if no id is available.
527
528       · songTitle (str): The title of the current song. Mandatory
529
530       · artistName (str): The name of the artist of the current. Optional.
531
532       · albumTitle  (str):  The  name  of  the  album  of  the  current song.
533         Optional.
534
535       · artUrl (str): The current song art url.
536
537       · isFavorite (bool): True if the song is in  the  list  of  the  user's
538         favorite songs. Optional.
539
540       · duration  (int  [seconds]):  The  duration  of  the song, in seconds.
541         Optional (but nice).
542
543       · position (int [seconds]): The position (or elapsed time) of the song,
544         in seconds. Optional (but nice).
545
546   play()
547       Starts playback.
548
549   pause()
550       Pauses playback.
551
552   goNext()
553       Skips to next song.
554
555   goPrevious()
556       Skips to previous song.
557
558   setVolume(volume)
559       Sets the player's volume.
560
561       volume is a float in the range [0-1].
562
563   addToFavorites()
564       Adds song to favorites.
565
566   removeFromFavorites()
567       Removes song from favorites.
568
569   seekToPosition(position)
570       Seeks to the specified position.
571
572       position  is  an  int representing the new position inside the song (in
573       seconds).
574
575   PlaybackStatus
576       MellowPlayer will inject a few constants that you can  use  for  repre‐
577       senting the current PlaybackStatus:
578
579       · mellowplayer.PlaybackStatus.STOPPED:  indicates that the playback has
580         stopped.
581
582       · mellowplayer.PlaybackStatus.PAUSED: indicates that the  playback  has
583         paused.
584
585       · mellowplayer.PlaybackStatus.BUFFERING:  indicates  that the a song is
586         buffering.
587
588       · mellowplayer.PlaybackStatus.PLAYING: indicates that  the  a  song  is
589         currently playing.
590
591   Utility functions
592       · function  getHashCode(string): returns the hash code of the specified
593         string. You can use this to generate the song id if none is available
594         via the web streaming service API.
595
596       · toSeconds(string)  converts  a  time string (HH:mm:ss) to a number of
597         seconds.
598
599   Contributing to MellowPlayer
600   Reporting bugs or Wishes
601       Report any bugs you encountered or any wishes on our issue tracker.
602
603       If you’re reporting a bug, make sure to provide the following  informa‐
604       tion:
605
606       · Information  about  your  Operating system (e.g. Windows 8.1, Mac OSX
607         Yosemite,…). If you’re on Linux, you’ll need to specify the  name  of
608         the distribution and the desktop environment you’re using and whether
609         you’re using a native package or the AppImage.
610
611       · The music streaming service that you were using when you  encountered
612         the bug if related to a specific streaming service.
613
614       · A clear description of the bug with steps to reproduce.
615
616       · You  should  use  English  to  describe  your  issue.  French is also
617         accepted.
618
619       · Paste the application log between triple  backquotes  (About  >  Show
620         Logs).
621
622   Setting up a development environment
623       Read the how to setup page of the wiki
624
625       Some helper scripts to setup your development environment for different
626       GNU/Linux distributions can be found in the scripts/env-setup folder.
627
628       We also recommend you read the architecture and the  coding  guidelines
629       pages before hacking on MellowPlayer.
630
631   Submitting a pull request
632       Here  are the steps you need to follow to start working on MellowPlayer
633       and submit your work  for  evaluation  or  integration  into  the  main
634       project:
635
636       1. Fork the Repo on gitlab.
637
638       2. Create a feature or a bugfix branch before you start coding.
639
640       3. Add your name to AUTHORS.md
641
642       4. Format  the  code  using  scripts/beautify.py  (run it from the root
643          source directory).
644
645       5. Push to your fork and submit a pull request to the develop branch.
646
647   Adding support for a new service
648       Web streaming service integration  plugins  are  now  written  in  pure
649       javascript.
650
651       1. Create     a     new     plugin     using     the     wizard    (see
652          http://mellowplayer.readthedocs.io/en/latest/developers/plugins.html#create-a-new-plugin)
653
654       2. Edit metadata.ini (add correct url, name, version,…)
655
656       3. Edit description.html to describe the streaming service
657
658       4. Customise logo.svg
659
660       5. Implement the needed functions in integration.js
661
662       6. Once your plugin works, submit a pull request to the develop branch.
663
664   Adding/Updating a new translation
665       MellowPlayer translations are hosted on transifex
666
667       · Create an account at transifex
668
669       · Go to the project’s homepage and click on the “Join the team” button
670
671       · If  the  language  you want to work on does not exists yet, send us a
672         language request. Once the request has been accepted, a new  transla‐
673         tion file for the requested language will be created automatically by
674         transifex.
675
676       · To actually start translating, go to the project’s home page on tran‐
677         sifex and click on the tr
678
679       · genindex
680
681       · modindex
682
683       · search
684

AUTHOR

686       Colin Duquesnoy
687
689       2019, Colin Duquesnoy
690
691
692
693
6943.5                              Nov 25, 2019                  MELLOWPLAYER(1)
Impressum