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
cfeck | |
broulik | |
elvisangelaccio | |
ngraham |
VDG |
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
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.
No Linters Available |
No Unit Test Coverage |
Buildable 6401 | |
Build 6419: arc lint + arc unit |
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.
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.
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.
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.
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:
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
- 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).
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?
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.
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.svgIs 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.svgThis 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.svgThis 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.svgShould this be preferences-virtualization-docker?
+1
apps/32/yast-dsl.svg preferences/32/preferences-system-network-modem.svgI 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.svgSame 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.svgThis 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.svginstserver 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.svgThis 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.svgWhy 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.svgSnapper 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.svgThis 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.svgGenerally, 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.svgThis 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.
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?
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.
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
Change most yast-* icons to symlinks and create preference icons to use as yast-* icons
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.
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:
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
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:
Oddly, it does not look like that in Inkscape. The Ubiquity and Calamares installer icons also have the same problem.
How strange, you're right! I never noticed that. Oh well, material for another patch I suppose...
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.
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.
@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)
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.
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:
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.
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.