Standardspeicherort für nicht standardmäßige Indikatorsymbole?
Es gibt keinen Standardspeicherort für diese Symbole. Jede Anwendung (-Entwickler) kann sie dort speichern, wo dies als angemessen erachtet wird.
Die gute Nachricht ist jedoch, dass Indikatoren normalerweise keine endlosen Listen von Dateien und Bildern installieren. Wir können unsere Suche einschränken, indem wir (abgesehen vom Blick in den Code) in die Ausgabe des Befehls schauen:
dpkg-query -L <packagename>
In meinem Beispiel von
dpkg-query -L placesfiles

Dies würde unter anderem die folgenden Bilder ausgeben:
/opt/placesfiles/images/dir_icon.png
/opt/placesfiles/images/placesfiles64.png
/usr/share/pixmaps/placesfiles.png
... was die Suche ziemlich einschränken würde.
Vom Menschen dpkg-query:
-l, --list [package-name-pattern...]
List packages matching given pattern. If no package-name-pattern
is given, list all packages in /var/lib/dpkg/status, excluding
the ones marked as not-installed (i.e. those which have been
previously purged). Normal shell wildcard characters are allowed
in package-name-pattern. Please note you will probably have to
quote package-name-pattern to prevent the shell from performing
filename expansion. For example this will list all package names
starting with “libc6”:
Im Fall von Radiotray habe ich die folgenden .pngDateien gefunden (läuft dpkg-query -L radiotray | grep png):
/usr/share/radiotray/images/radiotray_connecting.png
/usr/share/radiotray/images/radiotray_on.png
/usr/share/radiotray/images/radiotray_off.png
/usr/share/radiotray/images/radiotray.png
/usr/share/pixmaps/radiotray.png
Wenn wir es wirklich herausfinden müssen, suchen Sie den Code
... können wir (innerhalb) installierte Dateien nach Übereinstimmungen mit der Zeichenfolge "icon" durchsuchen. Viele der Indikatoren sind in einer der Skriptsprachen (wie python) geschrieben, was bedeutet, dass sie sehr gut durchsuchbar sind.
Ein Beispiel
Wieder am radiotrayBeispiel
dpkg-query -L radiotray | xargs grep icon
In der Ausgabe finden wir ua:
/usr/lib/python2.7/dist-packages/radiotray/SysTrayGui.py
self.icon.set_from_file(APP_ICON_CONNECT)
Wenn SysTrayGui.pywir in die Datei schauen, können wir sehen:
from lib.common import APPNAME, APPVERSION, APP_ICON_ON, APP_ICON_OFF, APP_ICON_CONNECT, APP_INDICATOR_ICON_ON, APP_INDICATOR_ICON_OFF
Daraus können wir schließen, dass die genannten Symbole im Modul commonim (Unter-) Verzeichnis definiert sind lib. (Sehen Sie hier, wie Python Module findet, Abschnitt Unterverzeichnisse )
In diesem Modul können wir den Abschnitt lesen:
# Media path
if os.path.exists(os.path.abspath('../data/images/')):
IMAGE_PATH = os.path.abspath('../data/images/')
else:
IMAGE_PATH = '%s/%s/images' % (datadir, APPDIRNAME)
# Images
APP_ICON = os.path.join(IMAGE_PATH, 'radiotray.png')
APP_ICON_ON = os.path.join(IMAGE_PATH, 'radiotray_on.png')
APP_ICON_OFF = os.path.join(IMAGE_PATH, 'radiotray_off.png')
APP_ICON_CONNECT = os.path.join(IMAGE_PATH, 'radiotray_connecting.gif')
APP_INDICATOR_ICON_ON = "radiotray_on"
APP_INDICATOR_ICON_OFF = "radiotray_off"
APP_INDICATOR_ICON_CONNECT = "radiotray_connecting"
...und hier sind wir...
Ausnahmesituationen
Mit praktisch allen meinen Indikatoren gelang es mir, die entsprechenden Symbole mithilfe der oben beschriebenen Methode (n) zu finden.
Es stellt sich jedoch heraus, dass es möglich ist, Bilder zusammen mit dem Code zu einer einzigen ausführbaren Datei zu kompilieren. Sie müssen nicht erklären, dass Sie in solchen Fällen weder ein separates Bild finden noch ersetzen können, ohne den Code zu bearbeiten und neu zu kompilieren.
Der Fall der eigenen Wolke scheint ein solcher Fall zu sein. Unter Verwendung der oben genannten Methode (n) wurde gezeigt, dass eine Reihe von Symbolen im Inneren installiert wurde /usr/share/icons/hicolor/<size>/apps. Keines dieser Symbole wird jedoch in der Anzeige auf Ubuntu verwendet .
OP hat einige Arbeit geleistet, bevor (und nachdem) er diese Frage gestellt hat. Einer von ihnen war zu rennen:
gdbus call --session --dest com.canonical.indicator.application --object-path /com/canonical/indicator/application/service --method com.canonical.indicator.application.service.GetApplications
... was uns einige nützliche Informationen gibt. Die Ausgabe enthielt einen Abschnitt:
('146028888067', 2, 'org.kde.StatusNotifierItem-22055-1', '/StatusNotifierItem/menu', '/tmp/iconcache-50ePXx', '', '', '', 'owncloud', 'ownCloud')
Beim Durchsuchen des Verzeichnisses /tmp/iconcache-50ePXxfand ich die genauen Symbole, die vom Indikator verwendet wurden:

... was zu beweisen scheint, dass diese Symbole im laufenden Betrieb generiert werden; Durch das Schließen von owncloud verschwinden das Verzeichnis und seine Symbole.
Es stellte sich heraus, dass es möglich war, das Symbol des Indikators durch Ersetzen dieser Symbole zu ändern:

was beweist, dass dies tatsächlich die Symbole sind, nach denen wir gesucht haben.
Um das, was ich manuell gemacht habe, zu automatisieren, wäre jedoch ein Skript / Wrapper erforderlich, da der Name des erstellten Verzeichnisses bei jedem Start von owncloud geändert wird. Die bequemste Option wäre natürlich, dass der Code des owncloud-Clients geändert wird.
Siehe auch unsere Diskussion hier .
Fortsetzung folgt...
dpkg -Ldas Gleiche?