Jak mogę programowo zmienić ikonę pliku?

16

Jeśli wybiorę ikonę w Nautilusie i wybiorę Właściwości, mogę kliknąć prezentowaną tam ikonę. To daje mi okno dialogowe wyboru plików, aby wybrać nowy obraz ikony.

Chciałbym to zrobić za pomocą jakiegoś skryptu, aby móc przypisać tę samą ikonę do wielu plików jednocześnie. Lub weź listę ikon i listę plików i przypisz je sobie.

Czy jest jakiś sposób, aby to osiągnąć? Coś w bashu lub Pythonie byłoby świetne, ale wezmę to, co mogę.

Proszę zanotować:

  • Nie pytam, jak zmienić ikonę typu pliku.
  • Nie pytam, jak zmienić ikonę w programie uruchamiającym.

wprowadź opis zdjęcia tutaj

Kris Harper
źródło

Odpowiedzi:

25


Aby zmienić te ikony z wiersza poleceń, możesz użyć następującego polecenia:

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

Możesz użyć tego polecenia w skrypcie bash zgodnie z własnymi potrzebami.

Jeśli uruchomisz polecenie, a ikona nie zmieni się natychmiast, możesz zainstalować pakiet xautomation za pomocą:

sudo apt-get install xautomation

I na koniec, użyj polecenia „xte”, aby „sendkey” w bash jak „F5”, aby odświeżyć.
Mały przykład to:

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

Mam nadzieję, że to ci się przyda.

Roman Raguet
źródło
3

Odpowiedź Romana wygląda idealnie. Jest inny mniej elegancki sposób. Nie jestem pewien, gdzie ikony znajdują się w pozostałej części systemu, ale ikony, które są na twoim pulpicie, to po prostu małe pliki tekstowe w $ HOME / Desktop. Zwykle (ale nie muszą) mają rozszerzenie .desktop. Jednym z pól w tych plikach jest Ikona = .... Możesz użyć programu, aby zmienić wszystko, co w polu ma wybraną wartość. (Po wykonaniu tej czynności może być konieczne odświeżenie, tak jak sugeruje Roman).

Kiedy chcę użyć ikony do czegoś innego lub w innym systemie, czasami przeglądam te pliki .desktop, aby dowiedzieć się, jak nazywa się używana ikona.

Specyfikacje tych plików są dostępne na stronie : http://www.freedesktop.org/wiki/Specifications/desktop-entry-spec

Joe

Joe
źródło