[RFC] modern picture format for GNOME backgrounds
👇
What? This Request For Comments is about using a superior format to distribute the GNOME Backgrounds.
🤔
Why? The current wallpapers in GNOME come in with a huge size of almost 50MiB. This is mostly data in binary format, so even with delta-updates (That isn't supported on many distros) it will be a huge download.
💡
Possible solution? Usage of a better file format
❓
Requirements To distribute them in the same way as before I have 4 requirements
- Availability of a gdk-pixbuf loader so nothing needs to be written
- A compatible OSS-License for the loader
- High-Quality lossy compression (like jpeg (wants to have
😇 )) - Lossless compression possibility (like png)
🎲
Possible candidates Because of the requirements, it came down to
webp | JPEG-XL | |
---|---|---|
GDK-Pixbuff-loader | Yes, made by @aruiz | Yes, as part of reference implementation |
License | LGPL2 | 3-clause BSD license |
Lossless Compression | Yes | Yes |
High Quality Lossy Compression | Yes | Yes |
Does it work for apps and shell | Yes | Shell: yes; Apps depends¹ |
¹ Some apps seems to only load a preview instead of the full file and so you will get a very pixelated preview, while the file itself is OK. (gthumb)
📊
Numbers Please Webp | JPEG-XL | |
---|---|---|
Repo | fabiscafe/gnome-backgrounds-webp | fabiscafe/gnome-backgrounds-jxl |
Convert CMD PNG | cwebp INPUT -lossless -o OUTPUT |
cjxl INPUT -q 100 OUTPUT ² |
Convert CMD JPG | cwebp INPUT -q 100 -o OUTPUT |
cjxl INPUT -q 100 OUTPUT |
adwaita-d.png (772,307 Bytes) | 725,722 Bytes | 585,817 Bytes |
adwaita-l.png (1,324,104 Bytes) | 1,328,818 Bytes | 996,122 Bytes |
brush-strokes-d.jpg (966,740 Bytes) | 1,067,270 Bytes | 745,567 Bytes |
brush-strokes-l.jpg (1,800,447 Bytes) | 2,211,394 Bytes | 1,432,111 Bytes |
disco-d.jpg (6,464,412 Bytes) | 3,424,246 Bytes | 5,591,338 Bytes |
disco-l.jpg (1,935,706 Bytes) | 3,475,210 Bytes | 1,413,063 Bytes |
libadwaita-d.jpg (565,402 Bytes) | 478,294 Bytes | 449,343 Bytes |
libadwaita-l.jpg (1,324,104 Bytes) | 1,163,686 Bytes | 1,058,722 Bytes |
pixels-d.png (1,133,032 Bytes) | 1,072,934 Bytes | 824,324 Bytes |
pixels-l.png (281,134 Bytes) | 196,062 Bytes | 219,118 Bytes |
symbolics-d.png (12,486,507 Bytes) | 562,334 Bytes | 3,922,175 Bytes |
symbolics-l.png (13,876,802 Bytes) | 951,510 Bytes | 4,820,526 Bytes |
truchet-d.jpg (1,347,436 Bytes) | 1,151,022 Bytes | 1,060,273 Bytes |
truchet-l.jpg (684,426 Bytes) | 496,166 Bytes | 493,740 Bytes |
vnc-d.png (4,773 Bytes) | 44 Bytes | 44 Bytes |
vnc-l.png (580 Bytes) | 44 Bytes | 44 Bytes |
wood-d.jpg (557,807 Bytes) | 316,714 Bytes | 241,584 Bytes |
wood-l.jpg (1,094,850 Bytes) | 1,352,464 Bytes | 704,620 Bytes |
ALL (46,517,091 Bytes) | 19,973,934 Bytes | 24,558,531 Bytes |
² This seems to not work for pixels-{l,d}.png and vnc-{l,d}.png, both where broken after convert. I however was able to convert them using imagemagic magick -q 100 INPUT OUTPUT