Show posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Messages - Quentin Sculo

I haven't tried wayland yet, but it's quite possible that it requires changes for some things.
A *very* quick search turned up this: which seems to indicate that wayland doesn't want to let apps position its windows? I guess it will requires some searching to fix, if it's even possible.
Questions / Re: "Open folder" makes GMB quit
March 31, 2022, 02:35:35
It's weird. One possible difference when started on system boot is that some environment variables might be different, but I don't know why it would cause a crash.
If it still happens (sorry for answering so rarely and so late) maybe try to find the error, it may be logged in ~/.xsession-errors or maybe look for an error in /var/log/syslog.
Alternatively, if it is a problem with environment variables, you can look at them in /proc/PID/environ where PID is the pid of the process, add some line breaks and compare when started from boot and when not.
MountainX couldn't post a reply because of a forum error so he posted his answer there :

Let's see if I can post this reply...
Questions / Re: Cache album artwork
February 02, 2022, 00:31:04
(sorry for rarely coming around)
- for gtk3 version, slow loading of embedded pictures was a known bug. I fixed it a bit after the beta release thanks to Glib::Object::Introspection 0.049, but you need to use the git version AND have Glib::Object::Introspection >= 0.049.
- there is currently no caching of pictures on disk, in part because I rarely use a fixed picture size in gmb, even in mosaic there is a number of optional sizes, and I often thought about adding a custom size option in the submenu. So the caching would only be really useful for overly large pictures, or if the original is on a slow disk/network.
Sorry for not replying sooner.

I do plan to enable user-defined tags, it's mostly a gui-problem as most of the needed capabilities are already coded.
Though concerning the rating field, I could easily improve it to support more standards. Though I could use some help to know what standards are being used by other players.

If you're adventurous, you could be interested in the technical details of how the tags are defined in gmb, for the rating field, it's currently (from

id3v2 => 'TXXX;FMPS_Rating_User;%v::%i & TXXX;FMPS_Rating;%v | percent( TXXX;gmbrating;%v ) | five( TXXX;rating;%v )',
vorbis => 'FMPS_RATING_USER::%i & FMPS_RATING | percent( gmbrating ) | five( rating )',
ape => 'FMPS_RATING_USER::%i & FMPS_RATING | percent( gmbrating ) | five( rating )',
ilst => '----FMPS_Rating_User::%i & ----FMPS_Rating | percent( ----gmbrating ) | five( ----rating )',
postread=> \&FMPS_rating_postread,
prewrite=> \&FMPS_rating_prewrite,
'postread:five'=> sub { my $v=shift; length $v && $v=~m/^\d+$/ && $v<=5 ? sprintf('%d',$v*20) : undef }, # for reading foobar2000 rating 0..5 ?
'postread:percent'=> sub { $_[0] }, # for anyone who used gmbrating
for each type, there is a list of tags, separated by either '&' or '|', and I recently added '&?', the first tag and tags after '&' are always written, '|' are deleted when a new value is written, and with '&?' the tag are only written if already in the file.
For reading the first one found is used, except for multi-value fields that use all found tags.

Also there is an optional function to convert the value, so 'five( TXXX;rating;%v )' will use the function defined in 'postread:five' to convert the value it reads. And, if it used "&" or "&?", it could use a function that would be defined in prewrite:five to convert the value before writing.
something like:
'prewrite:five'=> sub { my $v=shift; ($v eq '' || $v>100) ? '' : int($v/20) },
About using POPM, I'll have to look, it might be a bit more complicated because it includes a playcount (in addition to using a stupid 0-255 scale)
Rating tags are a bit of a mess.

Currently, gmb will only write ratings using the FMPS standard, which I'm afraid did not caught on. If that tag is not found, it will try to read a 1-5 "rating" tag, which I thought fb2000 used, but maybe they changed that, I see  ( that for mp3 they use the POPM id3v2 tag, which I highly dislike (because it is coupled with a play count and uses a 0-255 rating which is not easy to translate to sane numbers).

I personally prefer writing the rating as a 0-100 number, which can be presented to the user as 1-5 or 1-10 or whatever.

Currently gmb doesn't let read/write user-defined tags, they are just kept in gmb's db, but I plan on enabling this.

Can you send me (squentin a sample of your files with fb2000 ratings ? One mp3 and one non-mp3 at least.
Questions / Re: How to start customizing a layout?
October 09, 2021, 20:05:37
Yes you can copy the file, but be aware that it contains several layouts, you probably want to keep only the ones you plan to edit.

Also, that layout, like many others, use the "based on" system so that they only modify a few things from another layout. It is a simple and useful system but it can get messy fast, so unless you change just a few lines, you may be better off making a independent layout first. For that you first copy the original layout (the X in "based on X"), and then add the lines from the layout variation at the end (doesn't have to be at the end but safer if you forget to remove the line it replaces) and remove the lines that begin with the same "word =" (if any) from what you copied.

For example:
Type = G
Category = _"Small"
Name = _"test player"
Default = Window(sticky=1)
VBmain = HBButtons _Title
HBButtons = Prev Stop Play Next

[variation] based on original
Name = _"test player variant"
VBmain = HBButtons _Title _Artist _Album

Then you create the independent layout:
Type = G
Category = _"Small"
Default = Window(sticky=1)
HBButtons = Prev Stop Play Next
Name = _"independent test player variant"
VBmain = HBButtons _Title _Artist _Album

So here's the result you wanted, it actually would have been easy to do it as a "based on" layout.
The VolumeSlider is placed before Cover because they are added at the end ("-" before the name), so the order is reversed.
Sadly the color and font only apply to some simple widgets. If you want to change it for everything, you'll have to use the gtk theme method:

[with browser & queue modified]
DefaultFocus = Play
HBIndic = MBmenu Sort 10Filter Queue 10Pos
MBmenu = MainMenuItem LayoutItem PSortItem PFilterItem QueueItem
VBleft = HBIndic HBButtons
HBButtons = VolumeIcon Prev Stop Play Next Time 5_ABtimebar
ABtimebar = (yscale=0) TimeBar
HBTitle = Filler0 _Title -Stars
HBArtist = LockArtist _Artist
HBAlbum = LockAlbum _Album -Year
VBright = 2HBTitle 2HBArtist 2HBAlbum
VBmain = HBupper 5HBstatus 5_HPbig Progress
HBstatus = _SimpleSearch(maxwidth=250) 10MBlist ResetFilter Refresh PlayFilter FilterLock -Total
MBlist = HistItem LSortItem PlayItem
HPfp = FilterPane0(nb=1,hidebb=1,page=artists,page_artists/lmarkup=1) FilterPane1(nb=2,hidebb=1,page=album,page_album/lpicsize=32,page_album/lmarkup=1)
VPlistAA = _SongList HBAA
HBAA = _ArtistBox _AlbumBox
HSize0 = Filler0 LockArtist LockAlbum
VolumeScroll = HBupper

Default = Window(size=1120x820) HPbig(size=400-700) HPfp(size=140-140) VPlistAA(size=575-150) VPBrowserQueue(size=490-210)
HPbig = HPfp _VPBrowserQueue
VPBrowserQueue = _VPlistAA VBQueue
VBQueue = _QueueList(group=1,hidewidget=VBQueue,hideif=empty) HBQueueButtons
HBQueueButtons = EditListButtons(group=1) 4QueueActions

Name = _"with browser & queue (modified)"
HBupper = VBleft _VBright -VolumeSlider  5-Cover
DefaultFontColor= #f0f0f0
DefaultFont = Sans 16
Questions / Re: Filter by 'no rating given'?
October 09, 2021, 16:21:57
You can do a filter with:
Any of:
  rating set to default
  rating > 50%

You can also get this filter by typing "rating= OR rating>50" into the SimpleSearch widget (I'll document the syntax one day).
By the way there is a totally undocumented virtual field "ratingnumber" that always returns a number, using the default rating if the rating is not set.
Questions / Re: Previous song headache
September 19, 2021, 14:00:27
You need to configure your desktop/window manager to use the command "gmusicbrowser -cmd PrevSongInPlaylist" when pressing the key.
Questions / Re: How to fudge the date added
April 23, 2021, 21:52:39
No just send me one of the "playlists indicating what month a song was added". I'm not quite sure what you mean by that, does the file contains a date for each song, of is it the playlist itself that is named after the date? I need to know how to get the date from the playlist.
The problem with that is you need to be able to select the row without activating it.
Are you using the gtk3 version (still in beta) ? It might handle touchscreen better.
Also are you using the SongList or the SongTree, the SongList use the standard TreeView gtk widget so it might work better (though it is a bit slow with lots of songs in the gtk3 version).
Hi, I don't know why anything in the config file could have that effect. Can you post a screenshot of that "black page" ? If you think it comes from the config file, you can send it to me (squentin I'll take a look.

Currently you can only save the play count in the tag (Settings->Fields->Play count->check "Read/Write in file tag"->restart, though it will only write modified play counts, if you want to write all existing play counts, you then have to go in Settings->Tags->Update Tags->select "play count".
About writing "last play", I've been thinking about adding write options recently, maybe this year?
Questions / Re: How to fudge the date added
March 06, 2021, 23:57:54
There is no easy (via gui) way to do it, but you can either edit the gmbrc file with a script, each song is one line, fields are tab separated, dates are in unix time (seconds since epoch). Otherwise I can give you a command-line that sets the date for a song, still needs a script though.
If you don't know how to make the script I can help you, just give me an example of your playlist that contains the dates.
Questions / Re: composer/conductor tag empty
March 06, 2021, 23:47:16
Other software might look at some alternative tags maybe, can you send me some examples (squentin ? I'll take a look.

Sorry for not replying sooner, which player are you using (in the audio tab) and did you try another ?
You could send me the single track file by your preferred method, I will take a look.