NixOS / nixpkgs

Nix Packages collection & NixOS
MIT License
18.39k stars 14.34k forks source link

Inkscape missing icons #228730

Open tobiasBora opened 1 year ago

tobiasBora commented 1 year ago

Describe the bug

Some icons are missing in Inkscape. Notably all the arrows:

image

the bottom-left part:

image

and most annoyingly, the text align options (left/right/center/…):

image

Steps To Reproduce

Steps to reproduce the behavior:

  1. Install and run Inkscape

(tested with KDE plasma, if it matters, with dark breeze: image)

Additional context

Notify maintainers

@jtojnar

Metadata

Tested originally on 2caf4ef5005ecc68141ecb4aac271079f7371c44 (system using flake), but I just tried with:

nix run github:NixOs/nixpkgs#inkscape

today, same issue.

jtojnar commented 1 year ago

It requires an icon theme containing icons like pan-down-symbolic and open-menu-symbolic, for example gnome.adwaita-icon-theme. Unfortunately, we cannot really specify such dependency in Nix.

tobiasBora commented 1 year ago

Thanks! So it does solve the issue (but it seems not to work inside a nix shell + nix run), but is there really no way to add default icons, possibly playing with some XDG environment variables by prepending a path with the expected available icons?

jtojnar commented 1 year ago

Not really, the selected icon theme depends on user configuration. At best you could create a dummy hicolor theme and fill it with icons, since most icon themes extend the empty hicolor theme. But you would need to come up with icons you want to use. This is especially hard since icon-naming-spec is dead nowadays – none of the icons used by Inkscape by default are listed there.

See also https://github.com/NixOS/nixpkgs/pull/43150#issuecomment-450056204 for more context.

tobiasBora commented 1 year ago

Well, if I understand the specification https://specifications.freedesktop.org/icon-theme-spec/icon-theme-spec-latest.html correctly, it is possible by copying e.g. the adwaita theme in a hicolor folder (the hicolor theme being the fallback theme), and add this folder in XDG_DATA_DIRS in inkscape's wrapper, last in the list to be sure that we pick it when no better alternative exists. Am I missing something?

tobiasBora commented 1 year ago

Actually we don't even need to move the theme to hicolor, it seems that unthemed icons (not contained in any theme, so I guess at the root of icons/?) are loaded as a fallback, so adding the icons/adwaita folder might be enough. That beeing sayed, I'm not sure to understand why the current fix works: if the current theme (and parents) do no contains the icon, the only fallback seems to be unthemed icons, i.e. outside any theme folder and directly at the root… and I guess adwaita does not contain such unthemed icons, no?

jtojnar commented 1 year ago

it is possible by copying e.g. the adwaita theme in a hicolor folder (the hicolor theme being the fallback theme), and add this folder in XDG_DATA_DIRS in inkscape's wrapper, last in the list to be sure that we pick it when no better alternative exists. Am I missing something?

You are right, I forgot that the hicolor fallback is enforced and thought the themes had a different directory layout but that does not seem to be the case (any more). So we would only need to get rid of Adwaita’s index.theme file and replace it with hicolor’s one. Then only the size concern remains.

Actually we don't even need to move the theme to hicolor, it seems that unthemed icons (not contained in any theme, so I guess at the root of icons/?) are loaded as a fallback, so adding the icons/adwaita folder might be enough.

Yeah, unthemed icons are direct children of icons/ and pixmaps/ directories under XDG_DATA_DIRS. (Plus some other directories.) If you wanted to do this, you would need to change the directory structure (move all icons into icons/ directory) and presumably would not be able to use GTK icon cache.

If unthemed icons are loaded as a fallback will depend on whether LookupIcon or FindBestIcon method from the spec is used. Only the latter falls back to unthemed icons. Although, I guess, implementations can probably decide to fall back on unthemed icons even for the former.

That beeing sayed, I'm not sure to understand why the current fix works: if the current theme (and parents) do no contains the icon, the only fallback seems to be unthemed icons, i.e. outside any theme folder and directly at the root… and I guess adwaita does not contain such unthemed icons, no?

Yeah, no unthemed icons in Adwaita. What icon theme do you have selected in theming page of Preferences?

tobiasBora commented 1 year ago

Ok thanks a lot. So I checked: adwaita icons seems to be 28M, while Inkscape is like 98M… so it is indeed non-negligible, but not crazy either. Another solution is to add only the few missing icons.

Also, I investigated, and I understand now a bit better what’s going wrong:

image

This way I don’t need to install adwaita to get the missing icons. Now, if I install adwaita, it seems like all theme now get the missing icons… that I still can’t explain…

luzpaz commented 1 year ago

Any progress on this ?

luzpaz commented 1 year ago

Heads up: https://github.com/NixOS/nixpkgs/pull/268483

pinpox commented 1 year ago

Same problem. Is there a workaround that allows me to keep my current system icon theme and have something separate for inkscape?

tobiasBora commented 1 year ago

@pinpox well if you install Adwaita, you can still use another theme for the system, and configure Thunderbird as explained above to use Adwaita's theme.

blinry commented 11 months ago

I had the same problem with Inkscape installed via Home Manger on Arch Linux, and for me, the problem was that I didn't have ~/.nix-profile/share in the exported variable XDG_DATA_DIRS, so GTK couldn't find the icon themes installed there. An easy way to achieve that for me was this setting in my home.nix:

xdg = {
  enable = true;
  systemDirs = {
    data = [ "$HOME/.nix-profile/share" ];
  };

Hope this will be helpful for other people stumbling over this issue! :)

firstdorsal commented 7 months ago

installing gnome.adwaita-icon-theme fixes the problem for me

pinpox commented 7 months ago

installing gnome.adwaita-icon-theme fixes the problem for me

Then it should be added as dependency for the package