I have an extension which uses changing custom icons (from bundled PNGs) in the top bar. I had previously used Gtk.IconTheme to allow this to be potentially overridden with an icon theme. My upload for this extension was rejected because I should now be using St.IconTheme, but I can find no help beyond the initial hint that I add my extension’s icon path to the search path.
In particular, I have hung my extension off a button using an St.Icon. Having created a new St.IconTheme and appended my icon path to its search path, how can I fetch a new icon and apply it to the St.Icon. The only attempt that does not err was mysticon.set_icon_name(newname) but that just gives me a blank icon, so there must be one or more extra steps required to use that.
Does anyone know how to make this work? I could just revert to not supporting themed icons and only use Gio.FileIcon.new(path) and set_gicon() as I currently do as a fallback, but that seems a step backwards.
St.IconTheme is currently a private member of the default
St.TextureCache. I’m not sure, but it may be possible to use a method like
St.TextureCache.load_gicon() to preload icons by passing it a series of
At the moment accessing the default
St.IconTheme isn’t possible, so you’d have make calls to
St.IconTheme.load_icon() on your dedicated instance and apply the result to the actor in question if you want to do it that way.
load_gicon() gives me a
GdkPixbuf.Pixbuf and I still can’t figure out how that could be applied to a
St.Icon; I seem to have “generic icon wrapper” classes on the left and near raw-bytes on the right, and I just can’t see how to connect the dots.
I’m not at all fussed how I do it, all I’m trying to [re]achieve is being able to change the icon in my extensions button (which is currently an
St.Icon that I try to change via
set_gicon()). I’d previously get the icon path from
Gtk.IconTheme.get_default() or fall back to my extension’s path, and then use
Gio.FileIcon.new() to get a
Gio.Icon to use.
I just can’t see how to get anything out of
St.IconTheme that I can then apply to an
Gio.Icon is actually an interface and
GdkPixbuf.Pixbuf implements that interface, so you can just pass it to
I’m not 100% about how
St.TextureCache works in tandem with
St.IconTheme, but it seems like
St.TextureCache.load_gicon()should result in it being cached and passing the
St.Icon afterwards should skip the loading.
St.IconTheme, you can call
St.IconTheme.lookup_by_gicon(), which returns a
St.IconInfo you can call
St.IconInfo.load_icon() on to get the rendered
Gio.Icon in the form of a
Ok thanks, I’ll have a play with that info tomorrow.
Q though: what is
St.Icon:gicon, that’s not a syntax I recognise?
Oh, that’s a “standard” documentation format, or way of saying:
gicon property of the
Icon class in the
Another one for signals is
This topic was automatically closed 45 days after the last reply. New replies are no longer allowed.