Subject: bug#52044: Various Program Settings not Saving and Icons not Recognized

From: Jaft <[email-masked]>
Date: Mon, 3 Jan 2022 22:05:09 +0000 (UTC)

Hey, Josselin.

Thanks so much for all the info. and walking through how things work; it was really helpful.

In the end, I think I just missed restarting my computer; after doing so, the change that was made regarding gdk-pixbuf seems to've fixed whatever SVG issues I'd been having in a variety of places as everything, using the native packages – unaltered – in Guix, just worked.

I think it's fair to consider this closed as the change seems to've fixed all the SVG issues I'd been encountering.

Thanks so much for everything!

On Friday, December 17, 2021, 09:01:01 AM UTC, Josselin Poiret <[email-masked]> wrote: 

Jaft via Bug reports for GNU Guix <[email-masked]> writes:

> So my original plan of using gdk-pixbuf+svg somewhat can't work as it's not longer a viable package (at least, my attempts to upgrade runs into an error that says so); per commit feab09f72abc6d6eec16a1b8d27c231c747c0e00, it seems the idea is to use librsvg in place of it but, as I noticed in one of my previous E-mails, librsvg doesn't seem to have SVGs work (leastwise, in the programs I originally was using gdk-pixbuf+svg with as I'm not sure how to test in a way that's agnostic; I tried swapping gdk-pixbuf+svg with librsvg in the packages I'd been testing against and, while that allowed me to reisntall the programs without error, viewnior, thunar, and rofi are all back to not being able to render any icons which are SVGs).

The way gdk-pixbuf works is that it relies on additional loaders
(plugin-like) for different image formats, that it is supposed to find
in ./lib/gdk-pixbuf-2.0/2.10.0/, along with a loaders.cache file pointed
to by the environment variable GDK_PIXBUF_MODULE_FILE.  Since there can
only be one GDK_PIXBUF_MODULE_FILE, it needs to contain all the
different loaders, and so needs to be generated per-profile with a
profile hook.

librsvg provides an svg loader, which thus needs to be present in the
profile of the installed packages.  You would need to propagate librsvg
in addition to having gdk-pixbuf as an input.

The best way to see if gdk-pixbuf should work is to look at `less
$GDK_PIXBUF_MODULE_FILE` and see if there is an entry for svg.

All of this of course relies on the fact that GDK_PIXBUF_MODULE_FILE is
set at some point before starting these programs.  It should be the case
in Guix if you log-in on the tty or graphically through a DM, but there
are some specific edge cases where it might be unset.  If it still
doesn't work for you with the above steps, could you tell us more about
how the programs you list are started, as well as how you log-in?

Best,
Josselin Poiret