For some unknown reason all thumbnails are lost in my Shotwell, instead all icons are grey. The images themselves are all okay and I can open them all in Shotwell.
There are only empty folders in .shotwell/thumbs/
so it looks like the thumbnails don't doesn't get generated at all.
I have also tried to re-install Shotwell (by purge it first) without any change.
How do I make Shotwell regenerate all the thumbnails?
This shell script will regenerate your thumbnails of sizes 128px and 360px so you'll see at least something in viewer.
An easy way for Shotwell to regenerate thumbnails (this is a workaround):
This will force Shotwell to regenerate all photos and honor any transformations it has stored for them.
As phq mentioned, there is an outstanding bug to fix this so you won't need this workaround. Until then, this is the recommended way to solve this problem. The script posted above will not honor transformations, meaning it's possible for your thumbnails to not look like your photos in Shotwell.
Update With shotwell 0.18 thumbnails are now generated when manually viewed.
Don't remove .shotwell/thumbs!
According to this bug in launchpad, thumbnails are only generated on import.
Thumbnails are only generated at import. If the thumbnails are removed from disk they are not regenerated.
I just used the shell script given in this answer, but I have about 22000 thumbnails to generate.
So here is a bash version of this script, using
~/.shotwell
instead of~/.local/shotwell
(which is what I have) and using as many cores as my processor have (8 times faster in my case!):Shotwell version 0.13.11 on Ubuntu 12.10 Thumbnails seem no longuer to be located in .shotwell/thumbs but now in .cache/shotwell You may check user has full rigths to read thumbs. Having access to pictures but not to thumbs may cause grey thumbs.
For version 0.26.3 (up-to-date as of Nov. 2017), with Shotwell closed, just delete the thumbnails in
and fire up Shotwell, again.
Shotwell 0.28.4 (Braunschweig) will sometimes not create video thumbnails. The following script derived from the accepted answer fixes this: