如何刷新图标缓存?

首先,我不能100%确定我在这里写的主要问题是否真的是问题,但我有一种直觉它是。我以前在Mono中编写了一个简单的Gtk#应用程序,并为其图标文件提供了自定义ICO。效果很好。
最近,我想将此图标更换为另一个,但是当我构建和运行程序时,它仍然显示旧图标。我确保已经更新了每个对新图标文件的引用,并且已经彻底从硬盘中删除了旧图标。但是当我运行程序时,它仍然出现在启动器中。
我猜测这意味着Gtk在Ubuntu的某个地方缓存了图标,我可能需要强制刷新。有什么建议吗?
4个回答

在终端中运行以下命令:
sudo update-icon-caches /usr/share/icons/*

man page中:

update-icon-caches是一个用于更新一系列目录中的图标缓存的包装脚本。

在传递为参数的每个目录中,如果图标缓存已经存在,则会进行更新。如果图标缓存不存在,则不会创建。

如果主题索引文件不存在,则会删除图标缓存。


+1,在Wayland上运行非常流畅。 - ankostis
仍然相关。刚刚解决了我在Ubuntu 19.04上的应用图标问题。 - Jamie Carl
在我的Kubuntu 20.10上遇到了类似的问题,在Dolphin文件管理器中,我的自定义文件类型图标无法刷新。只有删除~/.cache/icon-cache.kcache并重新启动Dolphin才解决了这个问题。 - geekley


ℹ️ 适用于 KDE Plasma:rm "${HOME}/.cache/icon-cache.kcache" - Alberto Salvia Novella

如果使用Unity(直到Ubuntu 17.04):在终端命令提示符处键入:
$ unity

这将更新您在启动器中的*.desktop图标。

如果问题不是Ubuntu启动器本身,而是应用程序本身,请查看stackoverflow.com以获取编程解决方案。

类似的问题已在此处得到解答。还可以查看此处


这没有起作用 - soapergem
@SoaperGEM unity 是与实际启动器相关的问题。在命令提示符下运行 unity 将刷新 Ubuntu 的启动器图标。我的回答是针对 Ubuntu 启动器的问题。由于它不起作用,很可能是“gtk”编程问题。你可以在 http://stackoverflow.com 上寻求关于实际的 gtk 编程问题的更好(更快)答案。解决了 gtk 程序的实际图标显示问题后,你可以运行 unity 命令来更新 Ubuntu 的启动器缓存。给我五分钟来更新我的回答。 - L. D. James
这个回答需要一个警告。 - Ace
@Ace 你能详细说明这个警告吗? - L. D. James
3@L.D.James,目前正在运行unity将会强制关闭所有正在运行的应用程序并重新启动unity。因此,我在浏览器中丢失了数据。 - Ace
@Ace 你使用的是哪个版本的Ubuntu?我的回答是针对当时最新版本16.04 LTS而言的。我经常使用这个命令来恢复可能被有问题的应用程序锁定的会话,以避免丢失我打开的数十个窗口和应用程序中的数据。我没有看到任何文件表明这种行为已经改变。如果你告诉我你正在使用的Ubuntu版本,我会安装那个版本并测试一下这个行为。如果你丢失了什么东西,我相信那与其他事情有关,而不是unity命令。 - L. D. James
确实,这在16.04版本中发生了。而且,就我个人而言,我甚至无法启动Unity,所以不得不重新启动整台电脑。值得注意的是,我并不是管理员。 - mirh

Unix SE:请参考XDG桌面菜单规范。要更新应用程序菜单中可用的桌面启动器列表,请运行以下命令:
xdg-desktop-menu forceupdate

更新将在几秒钟内反映出来。