サムネイル画像の削除・探し方(gnome)

2022年5月26日

表示できるサムネイル画像の削除

Nautilus で表示されるサムネイル画像 (png) は
~/.thumbnails/normal
に保存されています。不要になったり再作成する必要があるときは、この中の画像ファイルを削除します。

表示できないサムネイル画像の再作成

たまにサムネイル画像の作成に失敗しますが、それは
~/.thumbnails/fail/gnome-thumbnail-factory
に入ってます。この中の該当画像(分からなければ全て)を削除しない限り、再作成はされないようです。

サムネイル画像のファイル名

いずれのフォルダの中も「サムネイル画像のファイル名」からは、「元データのファイル名」を直接知ることはできません。ですが逆に「元データのファイル名」から「サムネイル画像のファイル名」を知ることはできます。 例えば元データが
~/Desktop/abc.jpg
の場合、サムネイル画像のファイル名は
$ echo -n "file:///home/username/Desktop/abc.jpg" | md5sum
1233f5db0e8416d30861275ad3a703c6  -
というように、パスを展開し、先頭に file:// を付けた文字列の md5 値、となっています。(echo-n は、文字列の最後に改行を付けないためのオプションです。) 文字列中に日本語が入る場合は適当にエンコード(後述)する必要があり、file:// の部分は接続の仕方によっては smb:// などになることもあるようです。 また、各サムネイル画像ファイルの中には、tEXtThumb::URI タグの中に md5 をとる前の文字列が記載されています。

日数やサイズの上限を決める

日数の上限は
$ gconftool-2 --set /desktop/gnome-thumbnail_cache/maximum_age 180 --type int  # 日数
サイズの上限は
$ gconftool-2 --set /desktop/gnome-thumbnail_cache/maximum_size 512 --type int  # サイズ (MByte)
で指定可能です。 いずれも -1 を指定した場合はその機能をオフにできます。

追記 2018-10-25:適当にエンコード

Python で書けばこんな感じです。
#!/usr/bin/env python
#-*- coding:utf-8 -*-
import sys
 
def to_uri(filename):
    # [0-9A-Za-z._~i-]  glib/g_string.c:is_valid()
    # !$&'()*+,;=:@     glib/gurifuncs.h:G_URI_RESERVED_CHARS_ALLOWED_IN_PATH_ELEMENT
    # /                 gio/glocalfile.c:g_local_file_get_parse_name
    unescape_chars = \
            "0123456789" + \
            "ABCDEFGHIJKLMNOPQRSTUVWXYZ" + \
            "abcdefghijklmnopqrstuvwxyz" + \
            "-._~!$&'()*+,;=:@/"
    s = ""
    for ch in filename:
        if ch in unescape_chars:
            s += ch
        else:
            s += "%%%02X" % (ord(ch))
    return s

sys.stdout.write(to_uri(sys.argv[1]))
実行例はこうなります。
$ to_uri.py file:///tmp/てすと.jpg
file:///tmp/%E3%81%A6%E3%81%99%E3%81%A8.jpg

$ to_uri.py file:///tmp/てすと.jpg | md5sum
a2e7037ce9e0c953dc52b45d42fa6b32  -

gnome,nautilus

Posted by plkl