如何以编程方式更改文件的图标?

如果我在Nautilus中选择一个图标并选择属性,我可以点击那里显示的图标。 这给了我一个文件选择器对话框来选择一个新的图标图像。

我想通过某种脚本来做这件事,这样我就可以同时为多个文件分配相同的图标。 或者获取图标列表和文件列表,并将它们分配给彼此。

有什么方法可以实现这个目标吗? bash或Python中的东西会很棒,但我会把我能得到的东西拿走。

请注意:

  • 我不是问如何更改文件类型的图标。
  • 我不是问如何更改启动器上的图标。

在此处输入图像描述

要从命令行更改这些图标,可以使用以下命令:

gvfs-set-attribute -t string /path/to/your/file metadata::custom-icon file:///path/to/your/icon.png 

您可以根据需要在bash脚本中使用此命令。

如果您运行该命令并且图标没有立即更改,则可以使用以下命令安装xautomation软件包:

 sudo apt-get install xautomation 

最后,在bash中使用命令 xte”到“sendkey”,如“F5”来刷新..
一个小例子是:

 #!/bin/bash gvfs-set-attribute -t string /home/hermes/testicon metadata::custom-icon file:///home/hermes/Desktop/applet_blank.png sleep 3 xte "key F5" 

我希望这对你有用。

罗曼的答案看起来很理想。 还有另一种不太优雅的方式。 我不确定系统其他部分中的图标是什么,但桌面上的图标只是$ HOME / Desktop中的纯文本文件。 他们通常(但不必)具有.desktop的扩展名。 这些文件中的一个字段是Icon = ….您可以使用程序将该字段设置的任何内容更改为您选择的值。 (正如罗马建议的那样,你可能需要做一次刷新。)

当我想在其他系统或其他系统上使用图标时,我有时会查看这些.desktop文件以找出所使用的图标的名称。

这些文件的规范位于: http : //www.freedesktop.org/wiki/Specifications/desktop-entry-spec