我需要一个程序,从磁盘位置读取图像/home/me/image.png
,将其显示在屏幕上的窗口中,然后每当位于 的图像发生更改时刷新窗口/home/me/image.png
。
我最喜欢的查看图像的程序是,feh
但feh
没有在文件更改时刷新自身的内置功能。
我考虑的一种选择是编写 bash 脚本,feh
只要文件发生更改,该脚本就会终止并重新打开。但这会在新窗口中显示图像。我想在原始窗口中显示图像。
我尝试了 ImageMagick 的display
实用程序,但它在我的机器上不起作用。也许我用display
错了?我用了$ display -update 1 /home/me/image.png
。 ImageMagick 没有给我任何错误。当我将更改写入磁盘时,它只是无法刷新图像。
当磁盘上的图像发生变化时刷新图像似乎是许多图像查看程序应该支持的基本功能,但我已经尝试了几种图像查看程序,例如feh
,fim
但是eog
当磁盘上的图像发生变化时它们都不会刷新。
系统规格
我的外壳是bash。我的窗口系统是i3。我的发行版是 lubuntu。
答案1
sxiv
是一个简单的 X 图像查看器,可以在修改图像时自动重新加载图像。它不需要任何特殊选项。只需使用以下命令启动图像:
sxiv <file>
它可以在 Ubuntu 存储库中以软件包名称 找到sxiv
。
答案2
这有点复杂,但您可以构建一个feh
支持--auto-reload
使用 Ubuntu / Debian 工具的版本。坦率地说,我不知道为什么默认情况下不启用此功能。
安装构建 feh 所需的任何软件包:sudo apt-get build-dep feh
安装包构建支持:sudo apt-get install build-essential devscripts
创建一个工作目录:mkdir src && cd src
获取上游源码:apt source feh
Chdircd feh-3.6.3
或 到您拥有的任何目录
编辑 debian/rules 文件以更改此行:
dh_auto_build --parallel -- PREFIX=/usr exif=1
到:
dh_auto_build --parallel -- PREFIX=/usr exif=1 inotify=1
构建包:debuild -us -uc -b
.您可以忽略大多数警告,甚至一些错误。
安装闪亮的新feh
包:sudo dpkg -i ../feh_3.6.3-1_amd64.deb
现在,您将有一个feh --auto-reload
选项,如果磁盘上的文件发生更改,该选项将自动重新加载文件。与eog
或不同的是eom
,它将处理部分或损坏的文件,因此如果您以非原子方式更新文件(例如将图像处理程序的输出流式传输到文件),那么它不会损坏并停止显示文件。
您可能需要确保feh
不会意外升级apt
- 为此,请将其标记为“已保留”:
sudo apt-mark hold feh
如果您希望升级到发行版的上游版本,您可以在将来取消标记:
sudo apt-mark unhold feh