How to install icons for multiple themes

Albert Astals Cid aacid at kde.org
Mon Apr 17 22:36:24 BST 2017


El dilluns, 17 d’abril de 2017, a les 22:27:15 CEST, Milian Wolff va escriure:
> Hey all,
> 
> how is one supposed to install different versions of icons for different
> icon themes? Say I have an icon for breeze, breeze-dark and oxygen. I went
> ahead and plumbed it into CMake with ECM's ecm_install_icons specifying
> THEME accordingly, but at runtime nothing is found... Only if I install
> into hicolor does it work for me
> 
> Stracing makes me wonder whether the lookup rules match the installation
> logic...
> 
> ECM installs to e.g.:
> 
> /home/milian/projects/compiled/other/share/icons/breeze/16x16/apps/
> hotspot.svgz
> 
> Strace shows me the nearest match it looks into:
> /home/milian/projects/compiled/kf5/share/icons/breeze/apps/16/hotspot.svg
> 
> - this is a wrong prefix, but both are listed in XDG_DATA_DIRS
> - it has the wrong directory structure, i.e. it's apps/16 instead of 16x16/
> apps
> - it doesn't look for the svgz variant, even though ecm_install_icons says
> so
> 
> So, clearly something is majorly broken here... If I install into the
> hicolor theme, things start to work since strace also shows that this path
> is looked up:
> 
> /home/milian/projects/compiled/other/share/icons/hicolor/16x16/apps/
> hotspot.svgz
> 
> So I'm at a loss. At what level is this broken? Is this inside the KDE icon
> subsystem? Is this in ECM? Am I missing some environment variable?
> 
> Any help would be appreciated, thanks

Generally you can't do what you want to do.

Themes describe where the icons live on their index.theme

breeze/index.theme says
[actions/16]
Size=16
Context=Actions
Type=Fixed

hicolor/index.theme says
[16x16/actions]
Size=16
Context=Actions
Type=Threshold

So unless you hardcode the folder names for every single theme you want to 
support into ecm (and hope they don't change) you can't install stuff into 
multiple themes.

For the svgz vs svg thing, breeze saying
  KDE-Extensions=.svg
is the reason for it.

Cheers,
  Albert




More information about the kde-core-devel mailing list