Wie kann ich das Symbol einer Datei programmgesteuert ändern?

16

Wenn ich in Nautilus ein Symbol auswähle und Eigenschaften auswähle, kann ich auf das dort angezeigte Symbol klicken. Dadurch erhalte ich einen Dateiauswahldialog, in dem ich ein neues Symbolbild auswählen kann.

Ich möchte dies über ein Skript tun, damit ich mehreren Dateien gleichzeitig dasselbe Symbol zuweisen kann. Oder nehmen Sie eine Liste von Symbolen und eine Liste von Dateien und weisen Sie sie einander zu.

Kann ich das auf irgendeine Weise erreichen? Etwas in Bash oder Python wäre großartig, aber ich werde nehmen, was ich bekommen kann.

Bitte beachten Sie:

  • Ich frage nicht, wie ich das Symbol für einen Dateityp ändern soll.
  • Ich frage nicht, wie ich ein Symbol im Launcher ändern soll.

Bildbeschreibung hier eingeben

Kris Harper
quelle

Antworten:

25


Um diese Symbole über die Befehlszeile zu ändern, können Sie den folgenden Befehl verwenden:

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

Sie können diesen Befehl in einem Bash-Skript entsprechend Ihren Anforderungen verwenden.

Wenn Sie den Befehl ausführen und sich das Symbol nicht sofort ändert, können Sie das xautomation- Paket installieren mit:

sudo apt-get install xautomation

Verwenden Sie zum Schluss den Befehl "xte", um "sendkey" in bash wie "F5" zu aktualisieren.
Ein kleines Beispiel wäre:

#!/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"  

Ich hoffe das ist nützlich für dich.

Roman Raguet
quelle
3

Römers Antwort sieht ideal aus. Es gibt noch einen weniger eleganten Weg. Ich bin nicht sicher, wo sich Symbole im Rest des Systems befinden, aber Symbole auf Ihrem Desktop sind nur kleine Textdateien in $ HOME / Desktop. Sie haben normalerweise (müssen aber nicht) die Erweiterung .desktop. Eines der Felder in diesen Dateien ist Icon = .... Sie können ein Programm verwenden, um das Feld auf den Wert Ihrer Wahl zu setzen. (Möglicherweise müssen Sie danach eine Aktualisierung durchführen, wie es Roman vorschlägt.)

Wenn ich ein Symbol für etwas anderes oder auf einem anderen System verwenden möchte, schaue ich manchmal in diesen .desktop-Dateien nach, um herauszufinden, wie das verwendete Symbol heißt.

Die Spezifikationen für diese Dateien finden Sie unter: http://www.freedesktop.org/wiki/Specifications/desktop-entry-spec

Joe

Joe
quelle