Code Monkey home page Code Monkey logo

pragha's Introduction

Pragha is a Lightweight Music Player for GNU/Linux, based on Gtk and sqlite.
It is completely written in C, constructed to be fast, light, and
simultaneously tries to be complete without obstructing the daily work. ;)

A tiny history of the project.?
Consonance, An excellent player emerged in the archlinux forums, was
discontinued. The author, Sacamano said in his blog:
 "Which doesn't mean that it won't be maintained. I would still be fixing bugs,
  but major feature additions are not in the pipeline, because I have completed
  all that I wanted to see in Consonance. It has been a fun project. :)"

Well.. Dissonance is the project to continue developing Consonance, and its
result is Pragha Music Player. A New reproducer of music.. ;)

Main features:
 * Full integration with GTK+3, but always completely independent of
   gnome or xfce.
 * Two panel design inspired by Amarok 1.4. Library and current playlist.
 * Library with multiple views, according to tags or folder structure.
 * Search, filter and queue songs on current playlist.
 * Play and edit tags of mp3, m4a, ogg, flac, asf, wma, and ape files.
   Limited only by codecs installed and taglib version used.
 * Playlist management: Export M3U and read M3U, PLS, XSPF and WAX
   playlists.
 * Playback control with command line.

Extensible by plugins:
 * AcoustID: Get metadata from AcoustID service.
 * CD-ROM: Play audio CDs and identify them on CDDB.
 * DLNA Server: Share your playlist on a DLNA server.
 * DLNA Renderer: Play music from a DLNA server.
 * Gnome-Media-Keys: Control pragha with gnome-media-keys daemon.
 * Global Hotkeys: Control pragha with multimedia keys.
 * Last.fm: Scrobbling, love, unlove song, and append similar song to get
   related playlists.
 * MPRIS2: Control pragha with mpris2 interface.
 * Mtp Devices: Basic Management of MTP devices.
 * Notification: Show a notification when changing songs.
 * Removable media: Detect removable media and scan it.
 * Song-info: Get Artist info, Lyrics and Album art of your songs.
 * Get radios: Search radios on TuneIn service.

Requirements:
 * gtk+-3.0 >= 3.8, glib-2.0 >= 2.36
 * gstreamer-1.0 >= 1.0, gstreamer-base-1.0 >= 1.0
 * taglib >= 1.8
 * sqlite3 >= 3.4

Optional:
 * libpeas-1.0 >= 1.0.0 and libpeas-gtk-1.0 >= 1.0.0: Required for all plugins.
 * libxfce4ui >= 4.11.0: Better session managament support. Save the current
   playlist, last position when saving session, etc.
 * totem-plparser >= 2.26: Support to open many more formats and internet radio
   playlists.
 * gstreamer-plugins-base-devel >= 1.0: Use cubic volume for better volume
   control.

pragha's People

Contributors

bwackninja avatar crazygolem avatar fujimotos avatar mailaender avatar matiasdelellis avatar nick87720z avatar okcprime avatar recursive-rat4 avatar rski avatar ssuominengentoo avatar tingping avatar tomasradej avatar triorr avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

pragha's Issues

Compilation records / Various Artists support in library

Hi!

I would very much appreciate a support for compilation records like e.g. Amarok has. There should be an artist item in library called "Various Artists" under which all compilation records with multiple artists are listed. This would cleanup my library view from artist items which only have one track. Then of course the artist's name must be shown besides each track.


Want to back this issue? Post a bounty on it! We accept bounties via Bountysource.

Can't build Pragha

I can't build actual git version ofPragha without totem-plparser. Totem-plparser is no more optional?

checking for libxfce4ui-1 >= 4.8.0... 4.10.0
checking LIBXFCE4UI_CFLAGS... -pthread -I/usr/include/xfce4/libxfce4ui-1 -I/usr/include/gtk-2.0 -I/usr/lib/gtk-2.0/include -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/libdrm -I/usr/include/libpng15 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng15 -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/freetype2 -I/usr/include/xfce4 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include
checking LIBXFCE4UI_LIBS... -lxfce4ui-1 -lgtk-x11-2.0 -lgdk-x11-2.0 -lpangocairo-1.0 -latk-1.0 -lcairo -lgdk_pixbuf-2.0 -lgio-2.0 -lpangoft2-1.0 -lpango-1.0 -lgobject-2.0 -lfreetype -lfontconfig -lxfce4util -lglib-2.0
checking for optional package totem-plparser >= 2.26... not found
checking that generated files are newer than configure... done
configure: creating ./config.status
config.status: creating Makefile
config.status: creating po/Makefile.in
config.status: creating src/Makefile
config.status: creating config.h
config.status: config.h is unchanged
config.status: executing depfiles commands
config.status: executing libtool commands
config.status: executing default-1 commands
config.status: executing po/stamp-it commands

Build Configuration for pragha version 1.1.2

Gtk version used...: 2.24.17
Prefix.............: /usr
Debug enabled......: true

Cubic volume support.....................(Need gstreamer-plugins-base).: yes
Use multimedia key without gnome-media-keys..(Need keybinder >= 0.2.0).: yes
Better session management support...........(Need libxfce4ui >= 4.8.0).: yes
Lastfm scroble, and add similar songs support (Need libclastfm >= 0.5).: yes
Search lyrics, artists info and albums art.....(Need libglyr >= 1.0.1).: yes
Use totem-pl-parser to open playlists....(Need totem-plparser >= 2.26).: no

make all-recursive
make[1]: Entering directory /home/ARCH/PKGBUILD/pragha/src/pragha-master' Making all in po make[2]: Entering directory/home/ARCH/PKGBUILD/pragha/src/pragha-master/po'
make[2]: Nothing to be done for all'. make[2]: Leaving directory/home/ARCH/PKGBUILD/pragha/src/pragha-master/po'
Making all in src
make[2]: Entering directory /home/ARCH/PKGBUILD/pragha/src/pragha-master/src' CC pragha-init.o CC pragha-info-bar-import-music.o CC pragha-gnome-media-keys.o CC pragha-pragha.o CC pragha-pragha-backend.o CC pragha-pragha-cdda.o CC pragha-pragha-cmdline.o CC pragha-pragha-dbus.o CC pragha-pragha-equalizer.o pragha-cmdline.c: In function ‘init_options’: pragha-cmdline.c:342:2: warning: implicit declaration of function ‘xfce_sm_client_get_option_group’ [-Wimplicit-function-declaration] pragha-cmdline.c:342:2: warning: passing argument 2 of ‘g_option_context_add_group’ makes pointer from integer without a cast [enabled by default] In file included from /usr/include/glib-2.0/glib.h:66:0, from /usr/include/glib-2.0/glib/gi18n-lib.h:23, from pragha-cmdline.c:24: /usr/include/glib-2.0/glib/goption.h:339:17: note: expected ‘struct GOptionGroup *’ but argument is of type ‘int’ CC pragha-pragha-file-utils.o CC pragha-pragha-filter-dialog.o CC pragha-pragha-glyr.o CC pragha-pragha-library-pane.o CC pragha-pragha-menubar.o CC pragha-pragha-mpris.o CC pragha-pragha-musicobject.o CC pragha-pragha-musicobject-mgmt.o CC pragha-pragha-notify.o CC pragha-pragha-playback.o CC pragha-pragha-playlist.o CC pragha-pragha-playlists-mgmt.o CC pragha-pragha-preferences.o pragha-playlists-mgmt.c: In function ‘pragha_pl_parser_parse_xspf’: pragha-playlists-mgmt.c:607:2: error: unknown type name ‘XMLNode’ pragha-playlists-mgmt.c:631:2: warning: implicit declaration of function ‘tinycxml_parse’ [-Wimplicit-function-declaration] pragha-playlists-mgmt.c:631:6: warning: assignment makes pointer from integer without a cast [enabled by default] pragha-playlists-mgmt.c:633:2: warning: implicit declaration of function ‘xmlnode_get’ [-Wimplicit-function-declaration] pragha-playlists-mgmt.c:633:23: error: ‘CCA’ undeclared (first use in this function) pragha-playlists-mgmt.c:633:23: note: each undeclared identifier is reported only once for each function it appears in pragha-playlists-mgmt.c:633:27: error: expected ‘)’ before ‘{’ token pragha-playlists-mgmt.c:634:16: error: request for member ‘next’ in something not a structure or union pragha-playlists-mgmt.c:635:27: error: expected ‘)’ before ‘{’ token pragha-playlists-mgmt.c:637:15: error: request for member ‘content’ in something not a structure or union pragha-playlists-mgmt.c:638:35: error: request for member ‘content’ in something not a structure or union pragha-playlists-mgmt.c:641:5: error: request for member ‘content’ in something not a structure or union pragha-playlists-mgmt.c:658:2: warning: implicit declaration of function ‘xmlnode_free’ [-Wimplicit-function-declaration] pragha-playlists-mgmt.c: In function ‘pragha_pl_parser_parse_m3u’: pragha-playlists-mgmt.c:721:2: warning: implicit declaration of function ‘open’ [-Wimplicit-function-declaration] pragha-playlists-mgmt.c:721:20: error: ‘O_RDONLY’ undeclared (first use in this function) make[2]: *** [pragha-pragha-playlists-mgmt.o] Error 1 make[2]: *** Waiting for unfinished jobs.... make[2]: Leaving directory/home/ARCH/PKGBUILD/pragha/src/pragha-master/src'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/home/ARCH/PKGBUILD/pragha/src/pragha-master'
make: *** [all] Error 2

After install totem-plparser can i build Pragha without problem, but i will use no totem-plparser.

Crash on exit #2 (version 1.2.1)

Pragha version 1.2.1 built against GTK+ 2. openSUSE Factory (13.1+).

A short log:

% gdb pragha                                             
GNU gdb (GDB; openSUSE Factory) 7.7
...
Reading symbols from pragha...Reading symbols from /usr/lib/debug/usr/bin/pragha.debug...done.
done.
(gdb) run
Starting program: /usr/bin/pragha 
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib64/libthread_db.so.1".
[New Thread 0x7fffe5f73700 (LWP 5834)]

(pragha:5830): Gtk-WARNING **: Rescan library: missing action Rescan library

(pragha:5830): Gtk-WARNING **: Update library: missing action Update library
[New Thread 0x7fffca62f700 (LWP 5835)]
[Thread 0x7fffca62f700 (LWP 5835) exited]
[New Thread 0x7fffca62f700 (LWP 5836)]

Program received signal SIGSEGV, Segmentation fault.
pragha_application_get_backend (pragha=0x0) at pragha.c:221
221 pragha.c: Нет такого файла или каталога.
...
(gdb) bt
#0  pragha_application_get_backend (pragha=0x0) at pragha.c:221
#1  0x0000000000429035 in pragha_mpris_close (mpris2=0x751aa0) at pragha-mpris.c:1450
#2  0x0000000000429119 in pragha_mpris_free (mpris2=0x751aa0) at pragha-mpris.c:1478
#3  0x0000000000417dea in pragha_application_dispose (object=0x73f080) at pragha.c:421
#4  0x00007ffff4ade9dc in g_object_unref () from /usr/lib64/libgobject-2.0.so.0
#5  0x0000000000416d33 in main (argc=1, argv=0x7fffffffde68) at pragha.c:762

First, it crashes on exit via menu "File -> Exit".
Second, it crashes after adding or removing collection.

Release tarballs should not set -Werror

Please drop the -Werror from release builds, preferably hide it behind ./configure option like --enable-fatal-warnings or similar.
You don't want end users, like from source based distribution to not be able to compile your software when something in the system changes... like an GCC upgrade

Fetch cover problem

Pragha built against libglyr.
Plaing the "Stones Grow Her Name" album by "Sonata Arctica". Pragha doesn't fetch the album cover.

screen: http://itmages.ru/image/view/538870/fab82e44

Then I run glyrc.

% glyrc cover -a "Sonata Arctica" -b "Stones Grow Her Name"

  • Artist : Sonata Arctica
  • Album : Stones Grow Her Name
  • Language : ru
  • Type : cover

---- Triggering: musictree local lastfm
---- Triggering: jamendo musicbrainz slothradio

[00/01] Checking image-types: [.](-0 item%28s%29 less)


///// ITEM #1 /////
WRITE to './Sonata Arctica_Stones Grow Her Name__cover_1.jpeg'
FROM: http://ecx.images-amazon.com/images/I/61L-BIv6tTL.jpg
PROV: musicbrainz
SIZE: 85980 Bytes
MSUM: 8d3ca4c84a54b448621e53a143426169
TYPE: cover
SAFE: No
RATE: 0
STMP: 0,000000
FRMT: jpeg
DATA:

////////////////////

=> 1 item in total.

% ll Sonata\ Arctica_Stones\ Grow\ Her\ Name__cover_1.jpeg
-rw-r--r-- 1 kent users 85980 июня 2 00:32 Sonata Arctica_Stones Grow Her Name__cover_1.jpeg


Want to back this issue? Post a bounty on it! We accept bounties via Bountysource.

Cannot compile

Using Ubuntu 10.04 LTS (2.6.32-45-generic) on i686, I'm having a hard time compiling the latest source I've downloaded from github.

I couldn't find gio-2.0 even though autogen.sh said the installed version was not new enough. I didn't really care that it didn't match, so I hacked the autogen.sh to pass the check for gio-2.0. Upon implementing this hack, I was able to get the autogen.sh to complete, and I subsequently ran make.

During the make, I encountered this:

make all-recursive
make[1]: Entering directory /usr/local/src/pragha' making all in po make[2]: Entering directory/usr/local/src/pragha/po'
make[2]: nothing to be done for `all'.
.... <<< SNIP >>> ....
make[2]: entering directory /usr/local/src/pragha/src
CC pragha-cdda.o
In file included from cdda.c:19:
pragha.h:563: error: expected specifier-qualifier-list before 'GDBusNodeInfo'
..... <<< SNIP >>> .....

GDBus seems unrelated to gio, as there were other dependencies that GDBus were fulfilled by. I'm hoping someone can shed some light on my predicament. I don't care too much about full audio playing capability than I do getting the complete project to compile.

Thanks in advance for the help!

Cannot compile on Debian sid x86

Hello. I'm a real fan of Pragha and I was using it on my testing x86 for a long time. It was always compiling well. But now i moved to a clean unstable debian and i cannot compile player. Also i tried to compile it on clean x86_64 testing debian but it shows the same error. I have all needed libraries installed and configure goes well. But make doesn't work. Maybe i must install some extra packages? Here is the error
daniel@debian:~/Sources/pragha-1.1.0.1$ make
make all-recursive
make[1]: Entering directory /home/daniel/Sources/pragha-1.1.0.1' Making all in po make[2]: Entering directory/home/daniel/Sources/pragha-1.1.0.1/po'
make[2]: Nothing to be done for all'. make[2]: Leaving directory/home/daniel/Sources/pragha-1.1.0.1/po'
Making all in src
make[2]: Entering directory /home/daniel/Sources/pragha-1.1.0.1/src' CC pragha-cdda.o In file included from cdda.c:19:0: pragha.h:67:19: fatal error: tag_c.h: No such file or directory compilation terminated. make[2]: *** [pragha-cdda.o] Error 1 make[2]: Leaving directory/home/daniel/Sources/pragha-1.1.0.1/src'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/home/daniel/Sources/pragha-1.1.0.1'
make: *** [all] Error 2

1.3.0 compilation error in openSUSE

configure goes well until:

 checking that generated files are newer than configure... done
 configure: error: conditional "HAVE_LIBMTP" was never defined.
 Usually this means the macro was only invoked conditionally.

Help, please.

Crash on exit

Using commit b99cf42

The free @ pragha.c#527 causes a crash. I guess The freeing of the window does not need to be handled manually?

#0  0x00000031b3ec13c0 in gtk_application_impl_window_removed ()
   from /lib64/libgtk-3.so.0
#1  0x00000031b3ebedb0 in gtk_application_window_removed () from /lib64/libgtk-3.so.0
#2  0x00000031a32132db in g_cclosure_marshal_VOID__OBJECTv ()
   from /lib64/libgobject-2.0.so.0
#3  0x00000031a3210207 in _g_closure_invoke_va () from /lib64/libgobject-2.0.so.0
#4  0x00000031a3229487 in g_signal_emit_valist () from /lib64/libgobject-2.0.so.0
#5  0x00000031a322a0ef in g_signal_emit () from /lib64/libgobject-2.0.so.0
#6  0x00000031b4101ed1 in gtk_window_release_application () from /lib64/libgtk-3.so.0
#7  0x00000031b410db22 in gtk_window_destroy () from /lib64/libgtk-3.so.0
#8  0x00000031a320ffd8 in g_closure_invoke () from /lib64/libgobject-2.0.so.0
#9  0x00000031a3222454 in signal_emit_unlocked_R () from /lib64/libgobject-2.0.so.0
#10 0x00000031a3229e32 in g_signal_emit_valist () from /lib64/libgobject-2.0.so.0
#11 0x00000031a322a0ef in g_signal_emit () from /lib64/libgobject-2.0.so.0
#12 0x00000031b40f8728 in gtk_widget_dispose () from /lib64/libgtk-3.so.0
#13 0x00000031b4105bdb in gtk_window_dispose () from /lib64/libgtk-3.so.0
#14 0x00000031b3ec1b55 in gtk_application_window_dispose () from /lib64/libgtk-3.so.0
#15 0x00000031a3216b31 in g_object_run_dispose () from /lib64/libgobject-2.0.so.0
#16 0x000000000041bfe1 in pragha_application_dispose ()
#17 0x00000031a3216b31 in g_object_run_dispose () from /lib64/libgobject-2.0.so.0
#18 0x000000000041cd32 in main ()

Does not respect backdrop state in gtk3

This can be fixed by changing the return of window_state_event in src/init.c from TRUE to FALSE. I don't know if that has any unintended consequences, but I don't think that it would.

read after free

reported by valgrind
==12693== Invalid read of size 4 ==12693== at 0x8056170: delete_queue_track_refs (current-playlist.c:220) ==12693== by 0x8057DE0: dequeue_current_playlist (current-playlist.c:1157) ==12693== by 0x4CC235E: g_cclosure_marshal_VOID__VOID (in /usr/lib/libgobject-2.0.so.0.3200.0) ==12693== by 0x4CC05F5: g_closure_invoke (in /usr/lib/libgobject-2.0.so.0.3200.0) ==12693== by 0x4CD2154: ??? (in /usr/lib/libgobject-2.0.so.0.3200.0) ==12693== by 0x4CDA345: g_signal_emit_valist (in /usr/lib/libgobject-2.0.so.0.3200.0) ==12693== by 0x4CDA4C6: g_signal_emit (in /usr/lib/libgobject-2.0.so.0.3200.0) ==12693== by 0x40DA5D4: gtk_action_activate (in /usr/lib/libgtk-3.so.0.400.0) ==12693== by 0x421FBC5: ??? (in /usr/lib/libgtk-3.so.0.400.0) ==12693== by 0x4CC235E: g_cclosure_marshal_VOID__VOID (in /usr/lib/libgobject-2.0.so.0.3200.0) ==12693== by 0x4CBF47C: ??? (in /usr/lib/libgobject-2.0.so.0.3200.0) ==12693== by 0x4CC05F5: g_closure_invoke (in /usr/lib/libgobject-2.0.so.0.3200.0) ==12693== by 0x4CD1B0A: ??? (in /usr/lib/libgobject-2.0.so.0.3200.0) ==12693== by 0x4CDA345: g_signal_emit_valist (in /usr/lib/libgobject-2.0.so.0.3200.0) ==12693== by 0x4CDA4C6: g_signal_emit (in /usr/lib/libgobject-2.0.so.0.3200.0) ==12693== by 0x422420D: gtk_menu_shell_activate_item (in /usr/lib/libgtk-3.so.0.400.0) ==12693== by 0x4222F53: ??? (in /usr/lib/libgtk-3.so.0.400.0) ==12693== by 0x4215B83: ??? (in /usr/lib/libgtk-3.so.0.400.0) ==12693== by 0x4204F82: ??? (in /usr/lib/libgtk-3.so.0.400.0) ==12693== by 0x4CBEF56: ??? (in /usr/lib/libgobject-2.0.so.0.3200.0) ==12693== by 0x4CC08A0: ??? (in /usr/lib/libgobject-2.0.so.0.3200.0) ==12693== by 0x4CD9A68: g_signal_emit_valist (in /usr/lib/libgobject-2.0.so.0.3200.0) ==12693== by 0x4CDA4C6: g_signal_emit (in /usr/lib/libgobject-2.0.so.0.3200.0) ==12693== by 0x438A1D0: gtk_widget_event (in /usr/lib/libgtk-3.so.0.400.0) ==12693== by 0x420498E: ??? (in /usr/lib/libgtk-3.so.0.400.0) ==12693== Address 0xebbe53c is 4 bytes inside a block of size 8 free'd ==12693== at 0x402A21C: free (in /usr/lib/valgrind/vgpreload_memcheck-x86-linux.so) ==12693== by 0x4EAC89A: ??? (in /usr/lib/libglib-2.0.so.0.3200.0) ==12693== by 0x4EACA0F: g_free (in /usr/lib/libglib-2.0.so.0.3200.0) ==12693== by 0x4EC20EA: g_slice_free1 (in /usr/lib/libglib-2.0.so.0.3200.0) ==12693== by 0x4EC2902: g_slist_free_1 (in /usr/lib/libglib-2.0.so.0.3200.0) ==12693== by 0x4EC2AB6: g_slist_remove_all (in /usr/lib/libglib-2.0.so.0.3200.0) ==12693== by 0x80560CB: delete_queue_track_refs (current-playlist.c:213) ==12693== by 0x8057DE0: dequeue_current_playlist (current-playlist.c:1157) ==12693== by 0x4CC235E: g_cclosure_marshal_VOID__VOID (in /usr/lib/libgobject-2.0.so.0.3200.0) ==12693== by 0x4CC05F5: g_closure_invoke (in /usr/lib/libgobject-2.0.so.0.3200.0) ==12693== by 0x4CD2154: ??? (in /usr/lib/libgobject-2.0.so.0.3200.0) ==12693== by 0x4CDA345: g_signal_emit_valist (in /usr/lib/libgobject-2.0.so.0.3200.0) ==12693== by 0x4CDA4C6: g_signal_emit (in /usr/lib/libgobject-2.0.so.0.3200.0) ==12693== by 0x40DA5D4: gtk_action_activate (in /usr/lib/libgtk-3.so.0.400.0) ==12693== by 0x421FBC5: ??? (in /usr/lib/libgtk-3.so.0.400.0) ==12693== by 0x4CC235E: g_cclosure_marshal_VOID__VOID (in /usr/lib/libgobject-2.0.so.0.3200.0) ==12693== by 0x4CBF47C: ??? (in /usr/lib/libgobject-2.0.so.0.3200.0) ==12693== by 0x4CC05F5: g_closure_invoke (in /usr/lib/libgobject-2.0.so.0.3200.0) ==12693== by 0x4CD1B0A: ??? (in /usr/lib/libgobject-2.0.so.0.3200.0) ==12693== by 0x4CDA345: g_signal_emit_valist (in /usr/lib/libgobject-2.0.so.0.3200.0) ==12693== by 0x4CDA4C6: g_signal_emit (in /usr/lib/libgobject-2.0.so.0.3200.0) ==12693== by 0x422420D: gtk_menu_shell_activate_item (in /usr/lib/libgtk-3.so.0.400.0) ==12693== by 0x4222F53: ??? (in /usr/lib/libgtk-3.so.0.400.0) ==12693== by 0x4215B83: ??? (in /usr/lib/libgtk-3.so.0.400.0) ==12693== by 0x4204F82: ??? (in /usr/lib/libgtk-3.so.0.400.0)

src/Makefile.am is passing libraries in wrong order to the linker

Every instance of "pragha_LDFLAGS" should be "pragha_LDADD" in src/Makefile.am
or otherwise libraries end up at the wrong place in the linker line,
Various issues may occur from this, usually unresolved symbols during build time, but also at runtime with the GNU gold linker, or using the old linker and flags like -Wl,--no-add-needed or -Wl,--as-needed.

To clarify:

All "-l" flags like -lglyr goes in _LDADD (or _LIBADD if using libtool and building library) in a project using automake (Makefile.am)

Compilation error for i586 (Pragha 1.1.0)

Compilation failed for i586:

Making all in src
make[2]: Entering directory `/home/abuild/rpmbuild/BUILD/pragha-1.1.0/src'
CC pragha-cdda.o
CC pragha-cmdline.o
CC pragha-current-playlist.o
CC pragha-db.o
CC pragha-dbus.o
CC pragha-filetree.o
CC pragha-gui.o
CC pragha-glyr-related.o
CC pragha-init.o
CC pragha-info-bar-import-music.o
init.c: In function 'init_config':
init.c:1002:12: error: cannot convert to a pointer type
make[2]: *** [pragha-init.o] Error 1

For x86_64 it's OK.

libkeybinder.so.0 names conflict

keybinder plugin for Pragha provides the libkeybinder.so.0 library.
This causes a conflict in names with the libkeybinder.so.0 provided by the libkeybinder0 package (at least in openSUSE).

% zypper se --provides libkeybinder.so.0
S | Name           | Summary                       | Type   
--+----------------+-------------------------------+--------
i | libkeybinder0  | Library Package for Keybinder | package
i | pragha-plugins | Plugins for Pragha            | package

No matter if they are installed in different directories.

Severe errors in Portuguese translation

Hi Matias,

I´m translating Pragha music player to Portuguese in transifex but when using 1.3 release I notice some severe errors in translation file. I´ve already upload a correction in there. Can you please merge it with code?

Regards

"segmentation fault " when I try to play a song

It seems like that I found another bug(I'm a bug finder...):

I installed the latest git version of Pragha today, and In my Nautilus(version 3.2.1), when I right click a MP3 or wma file and choose "Open with pragha", nother happened.

Then I launched the terminal and run "pragha file_name.mp3" or "pragha file_name.wma", the output is "segmentation fault ".

The songs can be played very well when I add them to the playlist and double-click it.

[Discussion] Support multiple audio engines, and relive the code of consonace

First of all.. This idea comes in that buyed a Raspberry pi and gstreamer is impossible to use due a 100% of CPU usage. Then, I tried with dissonance (Pragha 0.8.11rc, based on the consonance audio engine) and only use an 8% of cpu!.

Well, I promised to continue maintaining Prague 0.8*, but the changes are giants.. Sorry.

The idea would be:

  • First separate the code of /scr/pragha-backend.c on /engines/gstreamer0-10/engine.c and /engines/gstreamer1/engine.c.
    NOTE: Here can be used to merge "rewrite cdda support with gstreamer" branch in /engines/gstreamer1. Of course other changes are needed.. but I think it is not impossible.
  • Then, write a new PraghaBackend compatible with the present, but based on the code of consonance and move them to /engines/consonance. Maybe this demands a little more work.

Finally, must be changed the configure script to select the engine.

Ahh.. Of course, the equalizer, cdda, and perhaps other things also have to move to engines.

Pragha - GUI mockup

Hi Matias - i see, you works on Pragha 1.1. I play a little with gimp and prepare a mockup of Pragha. What you see, that i use from Pragha 1.0.2, ony position is another different. I hope, that picture will you like. If you use any idea of my, i will very happy . Thanks for all!

Picture : http://i46.tinypic.com/28b8e4g.jpg

Idea about middle window's part: The both popup windows (BIO/Lyrics) are integrated and open do middle part.

P.S. The graphics and icons is ugly, because default setting from xfce 4.10.

Compile error

I can not compile actual git version of Pragha player with enabled GTK3.

Build Configuration for pragha version 1.1.2

Gtk version used...: 3.8.2
Prefix.............: /usr
Debug enabled......: true

Cubic volume support.....................(Need gstreamer-plugins-base).: yes
Use multimedia key without gnome-media-keys.......(Need keybinder-3.0).: yes
Better session management support..........(Need libxfce4ui >= 4.11.0).: no
Lastfm scroble, and add similar songs support (Need libclastfm >= 0.5).: no
Search lyrics, artists info and albums art.....(Need libglyr >= 1.0.1).: no
Use totem-pl-parser to open playlists....(Need totem-plparser >= 2.26).: no

make all-recursive
make[1]: Entering directory /tmp/makepkg/pragha/src/pragha-master' Making all in po make[2]: Entering directory/tmp/makepkg/pragha/src/pragha-master/po'
make[2]: Nothing to be done for all'. make[2]: Leaving directory/tmp/makepkg/pragha/src/pragha-master/po'
Making all in src
make[2]: Entering directory /tmp/makepkg/pragha/src/pragha-master/src' CC pragha-info-bar-import-music.o CC pragha-init.o CC pragha-gnome-media-keys.o CC pragha-pragha.o CC pragha-pragha-backend.o CC pragha-pragha-cdda.o CC pragha-pragha-cmdline.o CC pragha-pragha-dbus.o CC pragha-pragha-equalizer.o CC pragha-pragha-file-utils.o CC pragha-pragha-filter-dialog.o CC pragha-pragha-glyr.o CC pragha-pragha-library-pane.o CC pragha-pragha-menubar.o CC pragha-pragha-mpris.o CC pragha-pragha-musicobject.o CC pragha-pragha-musicobject-mgmt.o CC pragha-pragha-notify.o CC pragha-pragha-playback.o CC pragha-pragha-playlist.o CC pragha-pragha-playlists-mgmt.o CC pragha-pragha-preferences.o CC pragha-pragha-preferences-dialog.o CC pragha-pragha-scanner.o CC pragha-pragha-statusicon.o CC pragha-pragha-tags-dialog.o CC pragha-pragha-tags-mgmt.o CC pragha-pragha-toolbar.o pragha-tags-dialog.c: In function ‘pragha_tags_dialog_finalize’: pragha-tags-dialog.c:557:20: warning: unused variable ‘dialog’ [-Wunused-variable] PraghaTagsDialog *dialog = PRAGHA_TAGS_DIALOG (object); ^ CC pragha-pragha-utils.o CC pragha-pragha-window.o CC pragha-pragha-lastfm.o CC pragha-pragha-keybinder.o CCLD pragha pragha-gtkcellrendererbubble.o: In functionrender':
/tmp/makepkg/pragha/src/pragha-master/src/gtkcellrendererbubble.c:163: undefined reference to gdk_drawable_get_type' collect2: error: ld returned 1 exit status make[2]: *** [pragha] Error 1 make[2]: Leaving directory/tmp/makepkg/pragha/src/pragha-master/src'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/tmp/makepkg/pragha/src/pragha-master'

Segmentation fault with changed path in playlist

I have a playlist with a track
/mnt/media/MyMusic/MP3/D/Dalida/(1997)_40_succès_en_or/17-Le_temps_des_fleurs.ogg

Then the album directory was renamed to "(1997)_40_Succès_en_or" (capital S in succès). The album tag is also changed in all the tracks.

I did rescan my music library.
When I drug 'n' drop the playlist to Pragha's queue, it crashes.

Running in terminal:

% pragha
TagLib: Could not open file /mnt/media/MyMusic/MP3/D/Dalida/(1997)_40_succès_en_or/17-Le_temps_des_fleurs.ogg
[1]    25719 segmentation fault  pragha

Probably a taglib issue. But want to have Pragha more intellectual.

Stop setting docdir= $(pkgdatadir)/doc in Makefile.am since it breaks --docdir switch

Setting docdir this way in Makefile.am breaks the autoconf ./configure --docdir option which is used by packagers to determine distribution specific documentation directory.

For example, in Gentoo we would do:

--docdir=/usr/share/doc/pragha-1.0.1-gentoo-revision-here

But now it only works as an make argument since it's hardcoded in the Makefile

emake DESTDIR="example" docdir="/usr/share/doc/example" install

Which isn't how it's supposed to work.

Thanks!

lyrics problem

Russian locale.
Ubuntu 14.04
Pragha 1.3.2.1
English lyrics info not correct show (only lyricswiki)
2015-04-03 01 26 28
Russian lyrics show correct, but long search - more 1 min.

Searching with spaces does not work

When searching the playlist for some string containing space, it doesn't find any match. I've tested this on both GTK2 and GTK3 versions.

My idea for searching in the following playlist:

  1. Abc Xyz
  2. Jkl xyz Mno
  3. Pqr Stuvw Xyz

yields:
if the search term is "abc", it matches only the first item
if the search term is "abc xyz", it matches only the first item
if the search term is "abc xyz" (notice the double-space in between), it matches only the first item
if the search term is " abc xyz " (notice the redundant spaces at the beginning and at the end), it matches only the first item
if the search term is " abc xyz " (many spaces on many places :-)), it also matches te first item
if the search term is " Xyz ", it matches the first and last item, but not the second one (but " xyz " would match all 3 items)

Simply said, handle any number of consecutive white characters in between of words/tokens as regexp [:space:]+ and in case of consecutive white characters at the beginning or at the end of search term, use the regexp [:space:]* for finding matches in the playlist. This is really usefull when the tag contains e.g. tabulator instead of space; or two spaces instead of one etc.
And be case insensitive when the search term doesn't contain any upper case characters and be case sensitive if the search term contains at least one upper case character.


Want to back this issue? Post a bounty on it! We accept bounties via Bountysource.

The header moved location in libcdio-paranoia-0.90 (and correction patch from upstream!)

include <cdio/cdda.h> is now <:cdio/paranoia/cdda.h>

In the paranoia subdirectory. Same for paranoia.h. The move was intentional.

This patch has been adopted by Arch, Fedora, Gentoo, and so forth because the
default installation out of libcdio-paranoia-0.90 was already supposed to do it
but the tarball is missing this patch unfortunately:

rocky/libcdio-paranoia@b2807f3

So you have to change the path using AC_CHECK_HEADER and #ifdef.

Please read this bug and look at the patch and you know howto fix it:

https://bugzilla.gnome.org/show_bug.cgi?id=691841

Direct link to example patch:

https://bugzilla.gnome.org/attachment.cgi?id=233609

need a way to deal with bad lyrics

It happens. Manually deleting the whole cache is not nice.

Maybe something like:
-Try other providers (how hard would be to implement?)
-Try again (after updating glyr)
-Delete from cache (so next play it gets re-downloaded)

Also, any ideas how to expose this in GUI?


Want to back this issue? Post a bounty on it! We accept bounties via Bountysource.

Configure script fails if certain optional libs are not present

Try to run autoconf && ./configure e.g. on a system without libnotify installed and you'll get error:

...
checking for optional package totem-plparser >= 2.26... not found
checking that generated files are newer than configure... done
configure: error: conditional "HAVE_LIBNOTIFY" was never defined.
Usually this means the macro was only invoked conditionally.
master 1$ 

I've investigated that the problem lies in a badly written configure.ac where there the following snippet

dnl Check notify support
LIBNOTIFY_FOUND="no"
if test x"$LIBPEAS_FOUND" = x"yes"; then
XDT_CHECK_OPTIONAL_PACKAGE([LIBNOTIFY],
                           [libnotify], [0.4.4],
                           [libnotify],
                           [libnotify library], [yes])
fi

generates

LIBNOTIFY_FOUND="no"
if test x"$LIBPEAS_FOUND" = x"yes"; then
  ...
  if test x"$LIBNOTIFY_FOUND" = x"yes"; then
    HAVE_LIBNOTIFY_TRUE=
    HAVE_LIBNOTIFY_FALSE='#'
  else
    HAVE_LIBNOTIFY_TRUE='#'
    HAVE_LIBNOTIFY_FALSE=
  fi
fi

whereas variables HAVE_LIBNOTIFY_TRUE and HAVE_LIBNOTIFY_FALSE are then always checked later in the ./configure script and produce the above-mentioned error.

The solution would be to add the check for "$LIBNOTIFY_FOUND" value and setting appropriately HAVE_LIBNOTIFY_TRUE and HAVE_LIBNOTIFY_FALSE after the if test x"$LIBPEAS_FOUND" = x"yes"; then ...; fi block in ./configure.ac (maybe there is some macro provided by autoconf for it). But I'd rather solve it differently and in a more robust way. Any ideas?

This problem could of course occur with other modules as well.

[Discussion] All about Windows Port

i´m using release 1.3 on windows and notice a faulty behaviour

How to reproduce:

1 - Preferences -> Workspace -> Minimize on window close
2 - Close -> Right click on tray icon to show popup menu

Observed behaviour:

Menu is shown but if we don´t select any option and click anywhere outside popup, the popup remains visible.

Expected behaviour:

The popup menu should hide himself if we don´t select any option


Want to back this issue? Post a bounty on it! We accept bounties via Bountysource.

Global Hotkey Support

Pragha is a wonderful, fast player but it seems to have no support for media keys or any kind of hotkeys. This is a dealbreaker for me and I'd love to see support added.

Compile on Ubuntu 14.04

Hi

Anyone with a simple step by step instruction on how to compile Pragha on Ubuntu 14.04 or is there an updated PPA. I tried this but getting "The required package sqlite3 was not found on your system" even after installing it:

sudo add-apt-repository ppa:gstreamer-developers/ppa
sudo apt-get update
sudo apt-get install gstreamer1.0
sudo apt-get install intltool sqlite3
wget https://github.com/matiasdelellis/pragha/releases/download/v1.3.1/pragha-1.3.1.tar.bz2
tar -xvf pragha-1.3.1.tar.bz2
cd pragha-1.3.1/
./configure

Thanks

Stop forcing -O3 optimization

Please hide the compiler optimizations behind a ./configure flag like --enable-optimizations or similar. Or drop them altogether. It's up to the user (or distribution packagers) to prepare the build environment and set these flags. Packages should not do this.

Pragha not detect libkeybinder 0.3.0

You wrote:
libkeybinder >= 0.2.2 (Or keybinder-3.0 with gtk+-3.0) Use multimedia keys to control pragha without gnome media keys. But configure not detect libkeybinder-0.3.0 (released Jun 2012 and compiled with gtk2 - this verson is yet in archlinux).

something maybe wrong about the MPRIS2 support

I found these is something wrong about pragha's mpris2 support under these two conditions below:

I use osd-lyrics(in arch's aur, a plugin add chinese lyrics support for the mpris-supported players) to show lyrics, but it seems that osd-lyrics can not get the right time point of current song when it's playing, so all I can see is always the end of the lyrics.

In my gnome 3.2, these a extensions named "Media player indicator(https://extensions.gnome.org/extension/55/media-player-indicator/)", it is a pretty mpris controller and works very well with clementine, audacious, amork, etc. But when I use pragha, the extension also can not get the right time progress information from pragha when a song is playing.

So I think, these is may something wrong with the time progress related part of Pragha's Mpris2 support.
Hope you can take a look at it.
Thanks!

Not a bug: Russian translation

I thought I have translated to Russian.
Really it was done before. I wonder if it isn't.
Again: now in transifex

Index: po/ru.po

--- po/ru.po.orig
+++ po/ru.po
@@ -105,11 +107,11 @@ msgstr "Эквалайзер"

#: ../src/gui.c:212
msgid "_Playback"
-msgstr "_Воспроизведение"
+msgstr "В_оспроизведение"

#: ../src/gui.c:213
msgid "Play_list"
-msgstr "Список_воспроизведения"
+msgstr "_Плейлист"

#: ../src/gui.c:214
msgid "_View"

Matias, do you think, I need to translate equalizer presets? I keep them untranslated to Russian locale now.

GTK 2?

@matiasdelellis How long you want to support gtk2?

gtk3 introduced GtkApplication. It has following benefits:

  • Pass command line options via dbus. So we can drop our implementation that depends on dbus-glib
  • Control unique instance. So we can drop our implementation that depends on dbus-glib

After two previous points we can drop dbus-glib :-)

  • Session managment. So we can drop dependency on libxfce4ui
  • Application menu. At this moment seems useful only for gnome-shell users

Compile error on lastest git clone

Build Configuration for pragha version 1.1.2

  Gtk version used...: 2.24.20
  Prefix.............: /usr
  Debug enabled......: false

  Cubic volume support.....................(Need gstreamer-plugins-base).: yes
  Use multimedia key without gnome-media-keys..(Need keybinder >= 0.2.0).: yes
  Better session management support...........(Need libxfce4ui >= 4.8.0).: yes
  Lastfm scroble, and add similar songs support (Need libclastfm >= 0.5).: yes
  Search lyrics, artists info and albums art.....(Need libglyr >= 1.0.1).: no
  Use totem-pl-parser to open playlists....(Need totem-plparser >= 2.26).: yes

make  all-recursive
make[1]: Entering directory `/home/diego/pragha-git/src/pragha'
Making all in po
make[2]: Entering directory `/home/diego/pragha-git/src/pragha/po'
  MSGFMT cs.gmo
  MSGFMT es.gmo
  MSGFMT de.gmo
  MSGFMT el.gmo
  MSGFMT fr.gmo
  MSGFMT hu.gmo
  MSGFMT it.gmo
  MSGFMT nl.gmo
  MSGFMT ja.gmo
  MSGFMT no.gmo
  MSGFMT pl.gmo
  MSGFMT pt.gmo
  MSGFMT pt_BR.gmo
  MSGFMT ru.gmo
  MSGFMT sv.gmo
  MSGFMT tr.gmo
  MSGFMT uk.gmo
  MSGFMT zh_CN.gmo
make[2]: Leaving directory `/home/diego/pragha-git/src/pragha/po'
Making all in src
make[2]: Entering directory `/home/diego/pragha-git/src/pragha/src'
  CC       pragha-init.o
  CC       pragha-info-bar-import-music.o
  CC       pragha-gnome-media-keys.o
In file included from pragha.h:23:0,
                 from gnome-media-keys.c:23:
pragha-cdda.h:27:26: fatal error: cdio/cdda.h: File o directory non esistente
    #include <cdio/cdda.h>
                          ^
compilation terminated.
make[2]: *** [pragha-gnome-media-keys.o] Errore 1
make[2]: *** Attesa dei processi non terminati....
make[2]: Leaving directory `/home/diego/pragha-git/src/pragha/src'
make[1]: *** [all-recursive] Errore 1
make[1]: Leaving directory `/home/diego/pragha-git/src/pragha'
make: *** [all] Errore 2

Multiple issues in the pragha.desktop file

$ desktop-file-validate data/pragha.desktop
data/pragha.desktop: error: value "GTK;AudioVideo;Player" for string list key "Categories" in group "Desktop Entry" does not have a semicolon (';') as trailing character
data/pragha.desktop: error: file contains group "Play Shortcut Group", but groups extending the format should start with "X-"
data/pragha.desktop: error: file contains group "Pause Shortcut Group", but groups extending the format should start with "X-"
data/pragha.desktop: error: file contains group "Stop Shortcut Group", but groups extending the format should start with "X-"
data/pragha.desktop: error: file contains group "Previous Shortcut Group", but groups extending the format should start with "X-"
data/pragha.desktop: error: file contains group "Next Shortcut Group", but groups extending the format should start with "X-"

The first one is easy to solve:

Categories=GTK;AudioVideo;Player

Should be with ending ; char so:

Categories=GTK;AudioVideo;Player;

Not sure about the others, I guess just prepend the X- to them

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.