Ubuntu – Custom thumbnailers don’t work on Ubuntu 18.10 and 18.04


Recently I had a bunch of my own scripts for the thumbnails in Nautilus: WebP previews, sound waveforms, office documents and so on.

Seems like either I’m doing something wrong (thumbnail generation behavior changed), or custom thumbnailes don’t work in latest GNOME at all, even my previous scripts, which worked smoothly on previous versions of Ubuntu.

I’ve done some research, tried to run a simple script (see below) and it didn’t work out.

My test thumbnailer in /usr/share/thumbnailers/z.thumbnailer:

[Thumbnailer Entry]
Exec=/home/maximal/thumb.sh %s %i %u %o

Where /home/maximal/thumb.sh is:

echo $0 >> /home/maximal/thumb.log
echo $1 >> /home/maximal/thumb.log
echo $2 >> /home/maximal/thumb.log
echo $3 >> /home/maximal/thumb.log
echo $4 >> /home/maximal/thumb.log

Then, when I remove thumbnail cache rm -rf ~/.cache/thumbnails and restart Nautilus nautilus -q, my log file doesn’t contain anything and ~/.cache/thumbnails/fail/gnome-thumbnail-factory contains all the failed thumbs (looks like corrupted/empty PNGs):

Failed thumbnail file

So, apparently, Nautilus even didn’t try to execute my thumbnailer script.
When I try to run thumb command itself, it works perfectly. For example convert through cwebp|dwebp package:

convert -thumbnail 256x256 file.webp png:file.webp.png

When I wrap this command to a thumbnailer, it looks like it wasn’t even requested to run by Nautilus.

[Thumbnailer Entry]
Exec=convert -thumbnail %sx%s %i png:%o

Exactly the same situation occurs with other my thumbnailers: audio waveforms, office documents, photoshop files and so on.

Could anyone help?

Best Answer

  • I've gone thru the same trouble with some of my external thumbnailers.

    After some researches, I realised that bubblewarp call fails under Ubuntu and Debian based distros because of --symlink option on /bin and /sbin. In fact under these distros, /bin and /usr/bin are not merged. So, both should be declared with --ro-bind instead of --symlink.

    To make bwrap call from Nautilus work under Ubuntu, you need to replace --symlink calls with --ro-bind calls for /bin and /sbin

    To solve speed issue with thumbnailers using imagemagick tools, you also need to add a --ro-bind for /etc/alternatives and /var/cache/fontconfig

    So, simplest solution is to place a wrapper script under /usr/local/bin/bwrap which will do the job and then call original /usr/bin/bwrap. As /usr/local/bin is before /usr/bin in the PATH, it is transparent for Nautilus.

    Wrapper script is available on my Github repo

    I've written a small article to explain all into details and to provide wrapper script installation instruction. It has been tested under 18.04 and 18.10


    Hope it helps