Add YaST and new preference icons
ClosedPublic

Authored by ndavis on Dec 16 2018, 1:09 PM.

Details

Summary

Add YaST icons and a number of preference icons that will be useful for KDE software in the future.

Change apps/32 to scalable so that the patch can pass the scalable test and add apps/64 to index.theme

Test Plan

ViewBackground is the background color that will be used in YaST Control Center.

Used by YaST. Most of these are symlinks to the new preference icons.


Not used by YaST, but currently included in the patch.


Diff Detail

Repository
R266 Breeze Icons
Lint
Automatic diff as part of commit; lint not applicable.
Unit
Automatic diff as part of commit; unit tests not applicable.
There are a very large number of changes, so older changes are hidden. Show Older Changes
Restricted Application added a project: Frameworks. · View Herald TranscriptDec 16 2018, 1:09 PM
Restricted Application added a subscriber: kde-frameworks-devel. · View Herald Transcript
ndavis requested review of this revision.Dec 16 2018, 1:09 PM
ndavis edited the test plan for this revision. (Show Details)Dec 16 2018, 1:16 PM
ndavis edited the test plan for this revision. (Show Details)
ndavis edited the summary of this revision. (Show Details)Dec 16 2018, 1:18 PM
ndavis edited the test plan for this revision. (Show Details)Dec 16 2018, 1:23 PM
ndavis edited the test plan for this revision. (Show Details)
ndavis edited the test plan for this revision. (Show Details)Dec 16 2018, 1:29 PM
ndavis updated this revision to Diff 47674.Dec 16 2018, 2:58 PM

Change printer and scanner icons to 32px since YaST Control Center doesn't want to work with symlinks to 64px device icons.

Nice work, these are good icons!

However, I wonder whether we really want to use the yast- prefix for these images, especially the ones without explicit opensuse iconography. I can imagine some of these being useful in other apps' settings dialogs as well, but it would feel weird to use an icon that starts with yast-. Can we not change YaST itself to use different names for its icons? If YaST has recently gained the ability to take icons from icon themes, it seems unreasonable for it to expect icons named yast-<something> rather than just using more neutrally-named icons.

For example yast-auth-client could be be named auth-kerberos or something so that any kerberos-related things can use that nice icon.

ndavis added a comment.EditedDec 16 2018, 4:15 PM

Nice work, these are good icons!

However, I wonder whether we really want to use the yast- prefix for these images, especially the ones without explicit opensuse iconography.
I can imagine some of these being useful in other apps' settings dialogs as well, but it would feel weird to use an icon that starts with yast-. Can we not change YaST itself to use different names for its icons? If YaST has recently gained the ability to take icons from icon themes, it seems unreasonable for it to expect icons named yast-<something> rather than just using more neutrally-named icons.

For example yast-auth-client could be be named auth-kerberos or something so that any kerberos-related things can use that nice icon.

I'd have to make PRs for ~60 GitHub repositories, so I'd like to avoid that if possible. Also keep in mind that each icon is for a YaST module, which is a program on its own, similar to KCMs. I agree that some of these would be useful for other programs though. When the time comes, we can make symlinks with more appropriate names and different sizes.

ngraham requested changes to this revision.Dec 16 2018, 9:53 PM
ngraham added reviewers: cfeck, broulik, elvisangelaccio.

I'd have to make PRs for ~60 GitHub repositories, so I'd like to avoid that if possible.

I understand that this would be really annoying, but conceptually it seems like the correct approach. If YaST wants to icons from icon themes, it doesn't seem reasonable to expect every single icon theme in existence to make special icons just fro YaST. YaST should use commonly-named icons.

When the time comes, we can make symlinks with more appropriate names and different sizes.

If we continue to use this patch to create icons with names that start with yast-, I would prefer for those to be the symlinks. So for example your new yast-auth-client icon should be named auth-kerberos and yast-auth-client should be a symlink to it.

This revision now requires changes to proceed.Dec 16 2018, 9:53 PM
ndavis added a comment.EditedDec 16 2018, 9:53 PM

LCP, the other openSUSE designer I've been working with, had this to say:

I have to disagree with ngraham here, imagine how many potential conflicts in hicolor we could get if yast icons had no prefix
and we can't load those icons from resource like everything else

He doesn't currently have a KDE account. Hopefully he will get one so I don't need to copy and paste what he says.

ndavis added a comment.EditedDec 16 2018, 10:01 PM

When the time comes, we can make symlinks with more appropriate names and different sizes.

If we continue to use this patch to create icons with names that start with yast-, I would prefer for those to be the symlinks. So for example your new yast-auth-client icon should be named auth-kerberos and yast-auth-client should be a symlink to it.

We can turn the yast-* into symlinks and rename the real icons to proper names when we need them. You're asking me to guess what the right names for the future would be before we need them. There's no existing pattern for authentication related icons like there is for drives and network stuff.

hellcp added a subscriber: hellcp.Dec 16 2018, 10:10 PM
fvogt added a subscriber: fvogt.Dec 16 2018, 10:49 PM

We can turn the yast-* into symlinks and rename the real icons to proper names when we need them. You're asking me to guess what the right names for the future would be before we need them. There's no existing pattern for authentication related icons like there is for drives and network stuff.

I think we can come up with appropriate new patterns. The reason why I'd like to do this is because the new icons are so good that other apps should be able to use them too, if appropriate! But if they were prefixed with yast-, that would just be weird.

Could you provide a list of the new icons you created that are not already symlinks? It's hard to tell in this diff since new icons are intermixed with symlinks.

We can turn the yast-* into symlinks and rename the real icons to proper names when we need them. You're asking me to guess what the right names for the future would be before we need them. There's no existing pattern for authentication related icons like there is for drives and network stuff.

I think we can come up with appropriate new patterns. The reason why I'd like to do this is because the new icons are so good that other apps should be able to use them too, if appropriate! But if they were prefixed with yast-, that would just be weird.

Could you provide a list of the new icons you created that are not already symlinks? It's hard to tell in this diff since new icons are intermixed with symlinks.

apps/32/yast-apparmor.svg
apps/32/yast-auth-client.svg
apps/32/yast-autoyast.svg
apps/32/yast-bootloader.svg
apps/32/yast-checkmedia.svg
apps/32/yast-create-new-vm.svg
apps/32/yast-device-tree.svg
apps/32/yast-dhcp-server.svg
apps/32/yast-disk.svg
apps/32/yast-dns-server.svg
apps/32/yast-docker.svg
apps/32/yast-dsl.svg
apps/32/yast-firewall.svg
apps/32/yast-ftp-server.svg
apps/32/yast-hardware.svg
apps/32/yast-host.svg
apps/32/yast-http-server.svg
apps/32/yast-hwinfo.svg
apps/32/yast-instserver.svg
apps/32/yast-iscsi-client.svg
apps/32/yast-iscsi-server.svg
apps/32/yast-journal.svg
apps/32/yast-kerberos-server.svg
apps/32/yast-kernel.svg
apps/32/yast-lan.svg
apps/32/yast-ldap-server.svg
apps/32/yast-ldap.svg
apps/32/yast-mail.svg
apps/32/yast-messages.svg
apps/32/yast-nfs-server.svg
apps/32/yast-nis-server.svg
apps/32/yast-nis.svg
apps/32/yast-ntp-client.svg
apps/32/yast-printer.svg
apps/32/yast-proxy.svg
apps/32/yast-release-notes.svg
apps/32/yast-remote.svg
apps/32/yast-samba-client.svg
apps/32/yast-samba-server.svg
apps/32/yast-scanner.svg
apps/32/yast-security.svg
apps/32/yast-services-manager.svg
apps/32/yast-slp-server.svg
apps/32/yast-snapper.svg
apps/32/yast-software.svg
apps/32/yast-sudo.svg
apps/32/yast-support.svg
apps/32/yast-sw_single.svg
apps/32/yast-sw_source.svg
apps/32/yast-sysconfig.svg
apps/32/yast-system.svg
apps/32/yast-tftp-server.svg
apps/32/yast-update.svg
apps/32/yast-vm-install.svg
apps/32/yast-vm-migrate.svg
apps/32/yast-vm.svg
apps/32/yast-vpn.svg
apps/32/yast-wol.svg
apps/32/yast.svg
apps/48/yast-installation.svg
apps/48/yast-sw_single.svg
apps/48/yast.svg

Thanks! Here's a preliminary suggestion:

Current icon                      What it should be a symlink to
================================================================
apps/32/yast-apparmor.svg         preferences/32/preferences-security-apparmor.svg
apps/32/yast-auth-client.svg      preferences/32/preferences-security-kerberos.svg
apps/32/yast-autoyast.svg         <no change>
apps/32/yast-bootloader.svg       preferences/32/preferences-system-startup.svg
apps/32/yast-checkmedia.svg       preferences/32/preferences-devices-drive-optical-ok.svg
apps/32/yast-create-new-vm.svg    preferences/32/preferences-vm-add.svg
apps/32/yast-device-tree.svg      preferences/32/preferences-devices.svg
apps/32/yast-dhcp-server.svg      preferences/32/preferences-system-network-server-dhcp.svg
apps/32/yast-disk.svg             preferences/32/preferences-devices-drive-harddisk-partitions.svg
apps/32/yast-dns-server.svg       preferences/32/preferences-system-network-server-dns.svg
apps/32/yast-docker.svg           preferences/32/preferences-system-docker.svg
apps/32/yast-dsl.svg              preferences/32/preferences-system-network-modem.svg
apps/32/yast-firewall.svg         preferences/32/preferences-security-firewall.svg
apps/32/yast-ftp-server.svg       preferences/32/preferences-system-network-server-ftp.svg
apps/32/yast-hardware.svg         preferences/32/preferences-system-cpu.svg
apps/32/yast-host.svg             preferences/32/preferences-system-network-server.svg
apps/32/yast-http-server.svg      preferences/32/preferences-system-network-server-http.svg
apps/32/yast-hwinfo.svg           preferences/32/preferences-system-hwinfo.svg
apps/32/yast-instserver.svg       preferences/32/preferences-system-network-server-install.svg
apps/32/yast-iscsi-client.svg     preferences/32/preferences-devices-drive-harddisk-iscsi.svg
apps/32/yast-iscsi-server.svg     preferences/32/preferences-system-network-server-iscsi.svg
apps/32/yast-journal.svg          preferences/32/preferences-book.svg
apps/32/yast-kerberos-server.svg  preferences/32/preferences-system-network-server-security.svg
apps/32/yast-kernel.svg           preferences/32/preferences-system-linux.svg
apps/32/yast-lan.svg              preferences/32/preferences-system-network-ethernet.svg
apps/32/yast-ldap-server.svg      preferences/32/preferences-system-network-server-ldap.svg
apps/32/yast-ldap.svg             preferences/32/preferences-system-network-ldap.svg
apps/32/yast-mail.svg             preferences/32/preferences-system-network-server-mail.svg
apps/32/yast-messages.svg         preferences/32/preferences-system-log.svg
apps/32/yast-nfs-server.svg       preferences/32/preferences-system-network-server-nfs.svg
apps/32/yast-nis-server.svg       preferences/32/preferences-system-network-server-nis.svg
apps/32/yast-nis.svg              preferences/32/preferences-desktop-user-nis.svg
apps/32/yast-ntp-client.svg       preferences/32/preferences-system-network-ntp.svg
apps/32/yast-printer.svg          preferences/32/preferences-devices-printer.svg
apps/32/yast-proxy.svg            preferences/32/preferences-system-network-proxy.svg
apps/32/yast-release-notes.svg    preferences/32/preferences-releasenotes.svg
apps/32/yast-remote.svg           preferences/32/preferences-system-network-remote.svg
apps/32/yast-samba-client.svg     preferences/32/preferences-system-network-samba.svg
apps/32/yast-samba-server.svg     preferences/32/preferences-system-network-server-samba.svg
apps/32/yast-scanner.svg          preferences/32/preferences-devices-scanner.svg
apps/32/yast-security.svg         preferences/32/preferences-security.svg
apps/32/yast-services-manager.svg preferences/32/preferences-services.svg
apps/32/yast-slp-server.svg       preferences/32/preferences-system-network-server-slp.svg
apps/32/yast-snapper.svg          preferences/32/preferences-devices-drive-harddisk-snapper.svg
apps/32/yast-software.svg         <no change>
apps/32/yast-sudo.svg             preferences/32/preferences-desktop-user-sudo.svg
apps/32/yast-support.svg          preferences/32/preferences-system-help.svg
apps/32/yast-sw_single.svg        <no change>
apps/32/yast-sw_source.svg        <no change>
apps/32/yast-sysconfig.svg        preferences/32/preferences.svg
apps/32/yast-system.svg           maybe replace preferences/32/preferences-desktop.svg with this and make the icon a symlink to it
apps/32/yast-tftp-server.svg      preferences/32/preferences-system-network-server-tftp.svg
apps/32/yast-update.svg           <no change>
apps/32/yast-vm-install.svg       preferences/32/preferences-vm-install.svg
apps/32/yast-vm-migrate.svg       preferences/32/preferences-vm-migrate.svg
apps/32/yast-vm.svg               preferences/32/preferences-vm.svg
apps/32/yast-vpn.svg              preferences/32/preferences-web-browser-vpn.svg
apps/32/yast-wol.svg              preferences/32/preferences-web-browser-power.svg
apps/32/yast.svg                  <no change>
    apps/48/yast-installation.svg <no change>
apps/48/yast-sw_single.svg        <no change>
apps/48/yast.svg                  <no change>

Also, here are my only aesthetic suggestions:

  • Messages icon: how about making this look more like the utilities-log-viewer icon? Maybe a 32px version of that?
  • Release notes icon: I'm not sure this icon really works. I can't tell what it is. A fax machine?
  • Services icon: I don't think the top of the bell should cast a shadow here; in general the shadow only seems to overlap the icon itself, not the background. When it does that here, it looks kind of weird.

Also, here are my only aesthetic suggestions:

  • Messages icon: how about making this look more like the utilities-log-viewer icon? Maybe a 32px version of that?
  • Release notes icon: I'm not sure this icon really works. I can't tell what it is. A fax machine?
  • Services icon: I don't think the top of the bell should cast a shadow here; in general the shadow only seems to overlap the icon itself, not the background. When it does that here, it looks kind of weird.
  1. Good point, although the actual message viewer doesn't look a lot like KSystemLog:
    • the journal module is just a module for showing the systemd journal, so it looks more like KSystemLog:
  2. It's supposed to be a newspaper. I tried to make it look similar to message-news:
    • An alternative newspaper style might be something similar to news-subscribe:
  3. Here's how that looks:
  1. It's supposed to be a newspaper. I tried to make it look similar to message-news:
    • An alternative newspaper style might be something similar to news-subscribe:

Yeah, that might be better. message-news itself doesn't really look that much like a newspaper lol! Something more like this might be clearer, for both icons: https://www.flaticon.com/free-icon/text-lines_254005

  1. Here's how that looks:

That looks better to my eyes! Very nice icon. I think that will look fantastic in Dolphin's Settings window for the Services tab as part of the "colorize all the icons" initiative (T10165).

  1. It's supposed to be a newspaper. I tried to make it look similar to message-news:
    • An alternative newspaper style might be something similar to news-subscribe:

Yeah, that might be better. message-news itself doesn't really look that much like a newspaper lol! Something more like this might be clearer, for both icons: https://www.flaticon.com/free-icon/text-lines_254005

I'm not sure about the isometric-ish look. It just doesn't feel like it fits in with the other Breeze icons. How is this?

ndavis added a comment.EditedDec 21 2018, 2:15 AM
apps/32/yast-checkmedia.svg       preferences/32/preferences-devices-drive-optical-ok.svg

Why ok? This is a preferences icon, so it doesn't make sense for there to be preferences about ok, which usually represents a state.

apps/32/yast-create-new-vm.svg    preferences/32/preferences-vm-add.svg
apps/32/yast-vm-install.svg       preferences/32/preferences-vm-install.svg
apps/32/yast-vm-migrate.svg       preferences/32/preferences-vm-migrate.svg
apps/32/yast-vm.svg               preferences/32/preferences-vm.svg

Is vm too short? Could virtualization be better? preferences-vm-add seems awfully similar to an action icon for a preferences icon, but that's because of how the icon is used in the first place.

apps/32/yast-device-tree.svg      preferences/32/preferences-devices.svg

This icon represents a tree of devices in a graph of the system's drive partitions. I'm not sure if it's good as an icon for just any devices.

apps/32/yast-disk.svg             preferences/32/preferences-devices-drive-harddisk-partitions.svg

This icon currently uses openSUSE colors to represent the YaST Partitioner. I might have to change the colors to make it a KDE partition preferences icon.

apps/32/yast-docker.svg           preferences/32/preferences-system-docker.svg

Should this be preferences-virtualization-docker?

apps/32/yast-dsl.svg              preferences/32/preferences-system-network-modem.svg

I was planning on turning this into a 64px device icon (network-rj11-female). If I were to do an actual modem icon, I would pick something that looks more like a modem. Lots of modems don't have RJ11 (DSL/Telephone wire) ports and lots of devices that have RJ11 ports are not modems. I've had some issues with getting 64px icons to work though. They should work and I see no reason for them not to since I've seen them work, but whenever I try, the icons fallback to hicolor. I'll have to talk to LCP or YaST devs about that.

apps/32/yast-lan.svg              preferences/32/preferences-system-network-ethernet.svg

Same deal as the RJ11 icon, except it's RJ45. However, the name makes sense for a preferences icon specifically for ethernet, whatever that would be used for.

apps/32/yast-hwinfo.svg           preferences/32/preferences-system-hwinfo.svg

This is a 32px version of the existing hwinfo icon since it looks blurry as hell when scaled down to 32px.

apps/32/yast-instserver.svg       preferences/32/preferences-system-network-server-install.svg

instserver is for providing installation repos, not specifically for installing a server. Is install good enough?

apps/32/yast-journal.svg          preferences/32/preferences-book.svg

This is an icon for the systemd journal. It could probably be replaced with a 32px version of the KSystemLog icon or something similar.

apps/32/yast-nis.svg              preferences/32/preferences-desktop-user-nis.svg

Why is this preferences-desktop-user-nis and LDAP preferences-system-network-ldap? They both have similar functions, except LDAP is a more secure replacement for NIS.

apps/32/yast-snapper.svg          preferences/32/preferences-devices-drive-harddisk-snapper.svg

Snapper is a system snapshotting program, not a type of device.

apps/32/yast-sudo.svg             preferences/32/preferences-desktop-user-sudo.svg

This is for configuring sudo. It doesn't have anything to do with a specific user or the desktop.

apps/32/yast-vpn.svg              preferences/32/preferences-web-browser-vpn.svg

Generally, VPNs are handled by plasma-nm, not anything to do with web browsers specifically. Perhaps I could have picked an icon that isn't consistent with the preferences-web-browser-* icons.

apps/32/yast-wol.svg              preferences/32/preferences-web-browser-power.svg

This is Wake-on-Lan. It doesn'thave anything to do with web browsers. Perhaps I could have picked an icon that isn't consistent with the preferences-web-browser-* icons.

apps/32/yast-checkmedia.svg       preferences/32/preferences-devices-drive-optical-ok.svg

Why ok? This is a preferences icon, so it doesn't make sense for there to be preferences about ok, which usually represents a state.

My intention was to have the last word reflect the checkmark (presumably a version with an X could be made). Another word could work too.

apps/32/yast-create-new-vm.svg    preferences/32/preferences-vm-add.svg
apps/32/yast-vm-install.svg       preferences/32/preferences-vm-install.svg
apps/32/yast-vm-migrate.svg       preferences/32/preferences-vm-migrate.svg
apps/32/yast-vm.svg               preferences/32/preferences-vm.svg

Is vm too short? Could virtualization be better? preferences-vm-add seems awfully similar to an action icon for a preferences icon, but that's because of how the icon is used in the first place.

virtualization seems fine, yeah.

apps/32/yast-device-tree.svg      preferences/32/preferences-devices.svg

This icon represents a tree of devices in a graph of the system's drive partitions. I'm not sure if it's good as an icon for just any devices.

preferences-devices-tree.svg then?

apps/32/yast-disk.svg             preferences/32/preferences-devices-drive-harddisk-partitions.svg

This icon currently uses openSUSE colors to represent the YaST Partitioner. I might have to change the colors to make it a KDE partition preferences icon.

Ok.

apps/32/yast-docker.svg           preferences/32/preferences-system-docker.svg

Should this be preferences-virtualization-docker?

+1

apps/32/yast-dsl.svg              preferences/32/preferences-system-network-modem.svg

I was planning on turning this into a 64px device icon (network-rj11-female). If I were to do an actual modem icon, I would pick something that looks more like a modem. Lots of modems don't have RJ11 (DSL/Telephone wire) ports and lots of devices that have RJ11 ports are not modems. I've had some issues with getting 64px icons to work though. They should work and I see no reason for them not to since I've seen them work, but whenever I try, the icons fallback to hicolor. I'll have to talk to LCP or YaST devs about that.

So preferences-system-network-rj11-female.svg then?

apps/32/yast-lan.svg              preferences/32/preferences-system-network-ethernet.svg

Same deal as the RJ11 icon, except it's RJ45. However, the name makes sense for a preferences icon specifically for ethernet, whatever that would be used for.

Perhaps it could be preferences-system-network-rj45-female.svg, and create a symlink to it called preferences-system-network-ethernet.svg?

apps/32/yast-hwinfo.svg           preferences/32/preferences-system-hwinfo.svg

This is a 32px version of the existing hwinfo icon since it looks blurry as hell when scaled down to 32px.

Right.

apps/32/yast-instserver.svg       preferences/32/preferences-system-network-server-install.svg

instserver is for providing installation repos, not specifically for installing a server. Is install good enough?

Maybe preferences-system-network-server-installation then? Install servers aren't uncommon.

apps/32/yast-journal.svg          preferences/32/preferences-book.svg

This is an icon for the systemd journal. It could probably be replaced with a 32px version of the KSystemLog icon or something similar.

Sounds good to me.

apps/32/yast-nis.svg              preferences/32/preferences-desktop-user-nis.svg

Why is this preferences-desktop-user-nis and LDAP preferences-system-network-ldap? They both have similar functions, except LDAP is a more secure replacement for NIS.

We could do preferences-system-network-nis.

apps/32/yast-snapper.svg          preferences/32/preferences-devices-drive-harddisk-snapper.svg

Snapper is a system snapshotting program, not a type of device.

I was just re-using the naming style of the other icons that have a hard disk with an icon in it. Ideas?

apps/32/yast-sudo.svg             preferences/32/preferences-desktop-user-sudo.svg

This is for configuring sudo. It doesn't have anything to do with a specific user or the desktop.

preferences-system-user-sudo?

apps/32/yast-vpn.svg              preferences/32/preferences-web-browser-vpn.svg

Generally, VPNs are handled by plasma-nm, not anything to do with web browsers specifically. Perhaps I could have picked an icon that isn't consistent with the preferences-web-browser-* icons.

Yeah, I was just re-using the naming style of the icons you made it look similar to. It could be preferences-system-network-vpn, but maybe it should have a different visual style then>

apps/32/yast-wol.svg              preferences/32/preferences-web-browser-power.svg

This is Wake-on-Lan. It doesn'thave anything to do with web browsers. Perhaps I could have picked an icon that isn't consistent with the preferences-web-browser-* icons.

Same thing as the vpn icon.

@fvogt @hellcp For some reason YaST Control Center only works with 32px icons from Breeze but it can work with seemingly any size icon from hicolor. If either of you could help me figure out why that is, I would appreciate it.

@fvogt @hellcp For some reason YaST Control Center only works with 32px icons from Breeze but it can work with seemingly any size icon from hicolor. If either of you could help me figure out why that is, I would appreciate it.

AFAICT YaST just uses QIcon::fromTheme("foo").pixmap(32, 32) which should work just fine. Did you refresh the icon cache? What's the issue exactly? Do you see the wrong icon, wrong size or no icon at all?

@fvogt @hellcp For some reason YaST Control Center only works with 32px icons from Breeze but it can work with seemingly any size icon from hicolor. If either of you could help me figure out why that is, I would appreciate it.

AFAICT YaST just uses QIcon::fromTheme("foo").pixmap(32, 32) which should work just fine. Did you refresh the icon cache? What's the issue exactly? Do you see the wrong icon, wrong size or no icon at all?

Actually, it works with 32px and 48px Breeze icons, but not 64px. If the Breeze icon is 64px, yast-c-c shows the hicolor icon. If there is no hicolor icon for a module (i.e., I delete all yast-printer icons from hicolor), yast-c-c shows the yast icon, even if there is a Breeze icon at 64px. I'm pretty sure it's not an icon cache issue because there are no issues with changing icons to 48px versions, only 64px has issues.

fvogt added a comment.Dec 22 2018, 1:13 PM

@fvogt @hellcp For some reason YaST Control Center only works with 32px icons from Breeze but it can work with seemingly any size icon from hicolor. If either of you could help me figure out why that is, I would appreciate it.

AFAICT YaST just uses QIcon::fromTheme("foo").pixmap(32, 32) which should work just fine. Did you refresh the icon cache? What's the issue exactly? Do you see the wrong icon, wrong size or no icon at all?

Actually, it works with 32px and 48px Breeze icons, but not 64px. If the Breeze icon is 64px, yast-c-c shows the hicolor icon. If there is no hicolor icon for a module (i.e., I delete all yast-printer icons from hicolor), yast-c-c shows the yast icon, even if there is a Breeze icon at 64px. I'm pretty sure it's not an icon cache issue because there are no issues with changing icons to 48px versions, only 64px has issues.

Turns out it's a trivial issue: breeze's index.theme doesn't contain the parameters for apps/64 so it's like that directory doesn't even exist.

I don't know how to fix it though - apps/48 is already configured to also contain 64px images so maybe apps/64 should just get moved into /48?

ndavis added a comment.EditedDec 22 2018, 3:13 PM

Turns out it's a trivial issue: breeze's index.theme doesn't contain the parameters for apps/64 so it's like that directory doesn't even exist.

I don't know how to fix it though - apps/48 is already configured to also contain 64px images so maybe apps/64 should just get moved into /48?

apps/48 isn't configured to contain 64px icons, it's configured to scale from 48px to 256px.

They could both be scalable directories. 48px will just end up being the default size and 64px will only be used when there isn't a 48px icon. Maybe that's not ideal because that means 64px will never be used in the application dashboard for most apps, but we generally only make 48px versions of app icons anyway.

ndavis added a comment.EditedFri, Dec 28, 5:07 AM

We still haven't figured out where to put all of the yast-* icons. Most of them are now symlinks to preferences icons, but that doesn't fix the fact that this patch can't pass the scalable test. This is because apps/32 is a fixed size directory. I don't think preferences/ should be used for the YaST icons because preferences/ is meant to be used for our settings category icons and YaST is 3rd party. Would it be acceptable to change apps/32 to the following?

[apps/32]
Size=32
Context=Applications
Type=Scalable
MinSize=24
MaxSize=32

This way the icons can be used in YaST and Plasma won't try to use a 32px icon when a 48 px icon should be used for applications like Dolphin

ndavis updated this revision to Diff 48277.Fri, Dec 28, 9:32 AM
ndavis retitled this revision from Add YaST icons to Add YaST and new preference icons.

Change most yast-* icons to symlinks and create preference icons to use as yast-* icons

We still haven't figured out where to put all of the yast-* icons. Most of them are now symlinks to preferences icons, but that doesn't fix the fact that this patch can't pass the scalable test. This is because apps/32 is a fixed size directory. I don't think preferences/ should be used for the YaST icons because preferences/ is meant to be used for our settings category icons and YaST is 3rd party. Would it be acceptable to change apps/32 to the following?

[apps/32]
Size=32
Context=Applications
Type=Scalable
MinSize=24
MaxSize=32

This way the icons can be used in YaST and Plasma won't try to use a 32px icon when a 48 px icon should be used for applications like Dolphin

I don't see why not. What would be the drawbacks of this approach that you can foresee?

We still haven't figured out where to put all of the yast-* icons. Most of them are now symlinks to preferences icons, but that doesn't fix the fact that this patch can't pass the scalable test. This is because apps/32 is a fixed size directory. I don't think preferences/ should be used for the YaST icons because preferences/ is meant to be used for our settings category icons and YaST is 3rd party. Would it be acceptable to change apps/32 to the following?

[apps/32]
Size=32
Context=Applications
Type=Scalable
MinSize=24
MaxSize=32

This way the icons can be used in YaST and Plasma won't try to use a 32px icon when a 48 px icon should be used for applications like Dolphin

I don't see why not. What would be the drawbacks of this approach that you can foresee?

I don't see any, but it seems like a change that doesn't really do anything besides make it easier to satisfy the scalable test.

ndavis updated this revision to Diff 48297.Fri, Dec 28, 6:06 PM

Change apps/32 to scalable and add apps/64 in index.theme

ndavis edited the test plan for this revision. (Show Details)Fri, Dec 28, 9:29 PM

preferences/32/preferences-system-network-dsl.svg and preferences/32/preferences-system-network-ethernet.svg are now very slightly different from the device icon versions. :) They have a bottom shadow, while the new device versions you just commitetd do not. Is the plan to symlink to the new device versions?

A few more little nitpicks:

  • preferences-system-services still has a shadow over the background rather than another part of itself:
  • All the the preferences-system-network-server-* icons have a little tiny line below the emblem at some sizes:
  • preferences-system-network-server-dns has the server icon slightly shifted over to the left compared to all the others
ndavis added a comment.EditedFri, Dec 28, 11:05 PM

A few more little nitpicks:

  • preferences-system-services still has a shadow over the background rather than another part of itself:

I did that to hide a nasty vertical shadow cutoff point on the right side of the area between the bell and the stand.

How is this? The shadow is slightly less dark due to the gradient being shifted and angled differently to avoid showing the vertical cutoff.

  • All the the preferences-system-network-server-* icons have a little tiny line below the emblem at some sizes:

That's a visual artifact that comes and goes when you zoom into an SVG where one element overlaps up to the edge of the other.

  • preferences-system-network-server-dns has the server icon slightly shifted over to the left compared to all the others

Edited response: disregard what I said before, I saw the issue.

Here's the same icon in cuttlefish, except the line you saw on the bottom doesn't show up for me:

That happens in Inkscape and other renderers with uneven (133%, 146% etc) magnification. When rendering also sometimes you will get a darker border when there is something dark behind an object. I used that to my advantage with new YaST Package Management icons



Notice the difference between red elements, the first image depicts no darker object behind the red object and the second one depicts a darker object behind the red object (in the exact same position, exactly the same object, copied inside SVG XML file).

ndavis updated this revision to Diff 48329.Sat, Dec 29, 1:26 AM

Shift servers in dhcp and dns server icons to the right a bit and fix the shadow of the services icon

Outstanding. Only one final issue that I can see: the long shadow cast by the arrow in yast-installation doesn't fade out; it just continues off the rest of the icon:

Outstanding. Only one final issue that I can see: the long shadow cast by the arrow in yast-installation doesn't fade out; it just continues off the rest of the icon:

Oddly, it does not look like that in Inkscape. The Ubiquity and Calamares installer icons also have the same problem.

ngraham accepted this revision.Sat, Dec 29, 3:39 AM

How strange, you're right! I never noticed that. Oh well, material for another patch I suppose...

This revision is now accepted and ready to land.Sat, Dec 29, 3:39 AM
ndavis added a comment.EditedSat, Dec 29, 3:40 AM

Left is inkscape, right is gwenview

I'm guessing I'll need to either do manual edits in the XML or recreate them from scratch.

ndavis updated this revision to Diff 48331.Sat, Dec 29, 3:48 AM

fix yast-installation

ndavis updated this revision to Diff 48332.Sat, Dec 29, 3:58 AM

Add most recent changes to breeze dark

ndavis edited the summary of this revision. (Show Details)Sat, Dec 29, 4:01 AM
ndavis edited the summary of this revision. (Show Details)
ngraham requested changes to this revision.Sat, Dec 29, 4:16 AM

With the latest change, this now fails the scalable test.

This revision now requires changes to proceed.Sat, Dec 29, 4:16 AM

With the latest change, this now fails the scalable test.

How do I see what tests a patch will pass or fail?

Look in Testing/Temporary/LastTest.log

OK, so it seems I can't have multiple scalable directories with different versions of the same icon when the directories have the Application context. This test is such a pain in the ass. I know most tests are there for a good reason, but this one has only ever gotten in my way and forced me to work around it. Should I just toss all the yast icons into preferences even though it's meant for KDE settings icons? I could make a brand new folder too, but it would basically be just for YaST icons and any other 3rd party control panel apps that happen to use 32px icons.

ngraham added a subscriber: sitter.Sat, Dec 29, 4:38 AM

@sitter added the test in 7d01f3d8b5c0f2c9dc6014e8e04ba5701804fec2. Maybe he can shed some light on the best course of action here.

Pertinent quote from the commit message:

test_scalableDuplicates asserts that each scalable icon only appears in one scalable directory. specifically if more than one scalable variant is available the icon theme spec does not specify that the closest match is used, but among scalable versions all are considered equal so the first wins. this is a problem if apps/48/klipper.svg and apps/32/klipper.svg exist and both are marked scalable but they have different visuals. in one application the 32 version might get used and in another the 48 version is used. this tests prevents this by enforcing the equality by means of not allowing multiple scalable variants (again, not taking size constraints into consideration)
ndavis added a comment.EditedSat, Dec 29, 4:44 AM

Never mind, it seems the way I setup apps/32 was still an issue because while the 32px icons worked fine in YaST control Center, they were replaced by the yast icon in the task manager.

rooty added a subscriber: rooty.Sat, Dec 29, 2:42 PM

+1 for the icons, really nice icons

Found one more issue: By creating a new version of preferences-system that looks different from the existing version, System Settings gets the wrong icon:

ndavis updated this revision to Diff 48418.EditedSun, Dec 30, 7:53 PM

Move all YaST icons that don't have a 48px version to preferences/32/, undo all changes to index.theme, remove the new preferences-system icon, change yast-system to a symlink to systemsettings, change yast-release-notes to a symlink to preferences-releasenotes

The patch now passes the scalable test, but I don't think it's organized in a great way. I supposed I can always reorganize things if I make 48px versions of each YaST icon later. I can't do that now because it would take way too much time and I'm starting to get sick of working on this particular project.

ngraham accepted this revision.Mon, Dec 31, 9:16 PM

Ship it! Thanks for your patience with this. The new icons look fantastic. I can't wait to use some of them in our apps' settings windows.

This revision is now accepted and ready to land.Mon, Dec 31, 9:16 PM
This revision was automatically updated to reflect the committed changes.