@rhersel: In Qt gibt man normalerweise einfach nur den
Namen des Symbols an (siehe "QIcon.fromTheme()"), und überlässt Qt den Rest, sprich suchen, laden und skalieren. Gdk ist dafür gar nicht zuständig, denn wie gesagt kümmert sich Gdk nur um die direkte Fensterverwaltung. In Gtk gibt es dafür
http://developer.gnome.org/gtk3/stable/ ... kIconTheme, und ich bin mir ziemlich sicher, dass das die Klasse ist, die Du eigentlich suchst. GdkPixbuf ist – wie der Name schon sagt – einfach nur ein Haufen Pixel, kein Symbol mit verschiedenen Größen und erst recht keine Vektorgrafik. SVG ist so komplex, dass es dafür mit rsvg eine eigene Bibliothek gibt. GtkIconTheme implementiert dagegen den Standard für Symbole und Symbolthemen unter Linux, so dass Unity und Deine Anwendung zumindest schon mal an der selben Stelle nach einem Symbol für Dein Programm suchen.
Allerdings wird das wohl nicht reichen. Ich habe bisher nicht daran gedacht, doch ich glaube, dass Gnome Shell und Unity ihre Symbole aus der Desktop-Datei der Anwendung zu laden versuchen, und das Fenstersymbol nur als letzten Ausweg verwenden. Damit Deine Anwendung sich in Unity integriert, musst Du also eine Desktop-Datei für Deine Anwendung installieren.
Verschiedene Pixelgrafiken für verschiedene Auflösungen kann man sich im Übrigen nicht sparen, wenn hochwertige Symbole gewünscht sind, da man die unterschiedlichen Anforderungen an Symbole verschiedener Größen nicht mit einer Grafik abdecken kann. Große Symbole müssen detailreich sein, um nicht langweilig zu sein, kleine Symbole dagegen dürfen nicht viele Details haben, da man bei geringen Symbolgrößen die wesentliche optische Eigenschaft des Symbols nicht durch Details verdecken darf. Detailarme Vektorgrafiken wirken in hohen Auflösungen langweilig, detailreiche Vektorgrafiken sind in niedrigen Auflösungen verwaschen, und überladen. Beim Entwurf eines Symbols geht man mithin von der detailreichen, großen Symbolgrafik aus, und erzeugt daraus
manuell (und nicht automatisch mit einem SVG-Renderer) kleinere Pixelgrafiken, wobei man
manuell unerwünschte Details entfernt. Deswegen liegen in "/usr/share/icons/" viele Pixelgrafiken, die allesamt subtile Unterschiede zur entsprechenden skalierbaren Vektorgrafik in "/usr/share/icons/*/scalable/" aufweisen.