在 Ubuntu(Budgie)20.04 上使用 Gimp 作为快照时,您只会在 Gimp 内部看到 .xcf 文件的缩略图,而不会在其他地方看到(Nemo、Nautilus、gThumb……)
1⋅如何告诉我的会话寻找缩略图不仅在,~/.cache/thumbnails/
而且在任何缩略图文件夹里面~/snap/
?
2⋅再次阅读 snap doc 我想知道https://snapcraft.io/docs/thumbnailer-service-interface可能是答案。我应该将该接口连接到 Gimp 吗?或者它不能满足我的要求?
回答1⋅可能会解决任何 snap 应用程序最终生成缩略图的问题。
进来2⋅不符合我的预期。
参考文献:https://forum.ubuntu-fr.org/viewtopic.php?id=2053949⋅https://forum.snapcraft.io/t/gimp-and-thumbnails-for-xcf-files/18131⋅https://discourse.ubuntubudgie.org/t/gimp-as-a-snap-no-thumbnails-for-xcf-files-in-nemo-gthumb/3799
答案1
缩略图可以提高效率。每次打开大型 XCF 文件才能查看其当前状态真是一种折磨。
缩略图服务接口可能是解决方案,但似乎需要为 XCF 缩略图实现和维护一个接口。因为似乎不存在。为了避免必须编写一个接口,我正在寻找一个更简单、更快速的实现时间解决方案。
thumbnail/normal
将整个目录符号链接到目录内部的解决方案~/snap
是可行的,并且每次使用 GIMP 打开和保存 XCF 文件时,缩略图都会自动更新。
如果您和我一样不想对整个目录进行符号链接,我建议您使用另一种临时解决方案:通过 Nautilus 脚本对各个缩略图进行符号链接。注意:需要对新创建的 XCF 文件运行脚本,而已经存在的文件的缩略图将自动更新。
剧本:
#!/bin/bash
for file in ~/snap/gimp/common/.cache/thumbnails/normal/*
do
if [ -f $file ]
then
ln -s "$file" ~/".cache/thumbnails/normal/$(basename $file)"
fi
done
如果需要,您可以对缩略图/大目录执行相同操作。
保存到 Nautilus 脚本文件夹,每次看到没有缩略图的 XCF 文件时都可以运行它。建议命名为“更新缩略图”,不需要 .sh 扩展名,但需要在文件权限中打开可执行位。
当符号链接已经存在时,该ln
命令将会失败而不会造成损害。
另外,通过使用 script-fu,可以让 gimp 生成 128x128 PNG 文件,并将它们保存到~/.cache/thumbnails/normal
目录中,从命令行,而无需加载其界面。
但是,尽管以下方法有效:
$fileshort=$(basename "$file")
uri=$(urlencode -m "$fileshort") # urlencode requires install
uri="file://$uri"
thumbfilename=$(echo -n "$uri" | md5sum | awk '{print $1}')
thumbfilename=~/.cache/thumbnails/normal/$thumbfilename.png
gimp -i -b "(let* ((image (car (gimp-file-load RUN-NONINTERACTIVE \"$file\" \"$file\")))
(drawable (car (gimp-image-active-drawable image)))
(cur-width (car (gimp-image-width image)))
(cur-height (car (gimp-image-height image)))
(ratio (min (/ 128 cur-width) (/ 128 cur-height)))
(width (* ratio cur-width))
(height (* ratio cur-height))
)
(gimp-image-scale image width height)
(file-png-save RUN-NONINTERACTIVE image drawable \"$thumbfilename\" \"$thumbfilename\" 0 9 1 1 1 1 1)
(gimp-image-delete image)
)" -b "(gimp-quit 0)"
您需要以$file
某种方式赋予一个值。例如,通过迭代目录。
有效缩略图名称的生成取决于urlencode
命令,默认情况下该命令不存在。
"file://"
有效的缩略图名称是获取 URI 形式的文件名的 md5 哈希并将 png 扩展名附加到其中的结果。
缩略图不会自动更新,每次想要更新时都必须手动运行脚本。
有gimp-file-save-thumbnail
script-fu 命令,但我用它没用。我在文件系统中找不到生成的缩略图,而且该命令似乎没有返回任何内容。
理想的解决方案:GIMP 扩展可以知道 GIMP 是通过 snap 安装的,并且在~/.cache/thumbnails/normal
您每次更新 XCF 文件时保存缩略图。
问题:使用 script-fu 可能不行。据我所知,这些脚本需要被调用。您可以在 GIMP 界面内将它们注册为菜单项,但您不能让它们对事件做出file open
反应file save
。
其他可能的解决方案包括:
使用后台 bash 或 Python 脚本监控最近修改的目录,并扫描其中的 XCF 文件。可以调用上述脚本来生成缩略图,而无需显示 GIMP 界面。
挑战就是以最优的可能方式去做事。
答案2
这些都是非常棒的建议。
我最终将两个“缩略图”文件夹绑定在一起文件系统添加以下几行:
# .xcf thumbnails from gimp snap for anyone
/home/user_1/.cache/thumbnails/ /home/user_1/snap/gimp/common/.cache/thumbnails/ none bind 0 0
/home/user_2/.cache/thumbnails/ /home/user_2/snap/gimp/common/.cache/thumbnails/ none bind 0 0
/home/user_3/.cache/thumbnails/ /home/user_3/snap/gimp/common/.cache/thumbnails/ none bind 0 0
这样,Gimp-snap 实际上会在那里写入其缩略图,然后 Nemo 和 Nautilus 会相应地显示 .xcf 文件的缩略图。
尽管 gThumb 仍然显示 .xcf 文件的空框 - 但我主要关心的是文件资源管理器。
谢谢https://forum.ubuntu-fr.org/viewtopic.php?pid=22362050#p22362050