自定义缩略图在 Ubuntu 18.10 和 18.04 上不起作用

自定义缩略图在 Ubuntu 18.10 和 18.04 上不起作用

最近我为 Nautilus 中的缩略图编写了一些自己的脚本:WebP 预览声音波形、办公文档等等。

似乎我做错了什么(缩略图生成行为发生了变化),或者自定义缩略图在最新的 GNOME 中根本不起作用,甚至我以前的脚本在以前版本的 Ubuntu 上也能顺利运行。

我做了一些研究,尝试运行一个简单的脚本(见下文),但没有成功。

我的测试缩略图如下/usr/share/thumbnailers/z.thumbnailer

[Thumbnailer Entry]
Exec=/home/maximal/thumb.sh %s %i %u %o
MimeType=image/webp;image/x-webp

哪里/home/maximal/thumb.sh

#!/bin/bash
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

然后,当我删除缩略图缓存rm -rf ~/.cache/thumbnails并重新启动 Nautilus时nautilus -q,我的日志文件不包含任何内容,并且~/.cache/thumbnails/fail/gnome-thumbnail-factory包含所有失败的缩略图(看起来像损坏/空的 PNG):

缩略图文件失败

因此,显然,Nautilus 甚至没有尝试执行我的缩略图脚本。当我尝试运行 thumb 命令本身时,它运行完美。例如convert通过cwebp|dwebp包:

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

当我将此命令包装到缩略图程序时,看起来它甚至没有被 Nautilus 要求运行。

[Thumbnailer Entry]
Exec=convert -thumbnail %sx%s %i png:%o
MimeType=image/webp;image/x-webp;

我的其他缩略图也出现了完全相同的情况:音频波形、办公文档、Photoshop 文件等等。

有人可以帮忙吗?

答案1

我在使用一些外部缩略图时也遇到了同样的问题。

经过一番研究,我发现在 Ubuntu 和 Debian 发行版中,bubblewarp 调用失败是因为--符号链接选项/垃圾桶/sbin。实际上,在这些发行版中,/bin 和 /usr/bin 并未合并。因此,两者都应声明为--ro-绑定而不是--symlink。

制作包裹在 Ubuntu 下,Nautilus 的调用可以工作,你需要将 /bin 和 /sbin 的 --symlink 调用替换为 --ro-bind 调用

为了解决使用 imagemagick 工具的缩略图速度问题,您还需要为 /etc/alternatives 和 /var/cache/fontconfig 添加 --ro-bind

因此,最简单的解决方案是将包装脚本放在在/usr/local/bin/bwrap它将完成该任务,然后调用原始的 /usr/bin/bwrap。由于 /usr/local/bin 在 PATH 中位于 /usr/bin 之前,因此对于 Nautilus 而言是透明的。

包装脚本可在我的Github 仓库

我写了一篇小文章来详细解释所有内容并提供包装器脚本的安装说明。它已在 18.04 和 18.10 下进行了测试

http://bernaerts.dyndns.org/linux/360-ubuntu-nautilus-external-thumbnailer-failure

希望能帮助到你

答案2

我使用的是 18.04,但在 2018.11.28 更新后,我遇到了同样的问题。这是由于使用 bubblewrap 对缩略图进行沙盒处理而导致的(我花了两天时间研究!!!)。

因此我降级了gnome-desktop3-data、、gir1.2-gnomedesktop-3.0libgnome-desktop-3-17不确定是否所有这三个都需要),然后删除了气泡膜。

这是一种肮脏的黑客行为,它削弱了安全性,但我不在乎......

也许10月18日就不会那么容易了。

我希望有人能写出更好的解决方案......

答案3

我使用的是 18.04,无法使用 bwrap 脚本解决问题。我的主路径中有一个缩略图程序,可在 16.04 下运行。我可以通过将此程序放入 /usr/bin 来解决 18.04 中的问题。

相关内容