Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Replace or augment existing database icons #4071

Closed
droidmonkey opened this issue Dec 29, 2019 · 60 comments · Fixed by #4699
Closed

Replace or augment existing database icons #4071

droidmonkey opened this issue Dec 29, 2019 · 60 comments · Fixed by #4699

Comments

@droidmonkey
Copy link
Member

droidmonkey commented Dec 29, 2019

Can we find adequate replacements for the entry and group icons as well? That used to be the blocker in my previous attempts at doing this. They are extremely low-resolution and its an enormous amount of work to find alternatives.
Originally posted by @phoerious in #122 (comment)

The current set of default database icons are 16x16 pixels and from a bygone era of computing. We should offer our users a modern set of equivalent icons, at their choice. This can be controlled from within the application settings or within the settings of each individual database.

Existing databases would reference the existing icon set until the user decided to change it. New databases will reference the new icon set by default.

image

image

@droidmonkey
Copy link
Member Author

@phoerious That would be great. The default icons for groups/entries (share/icons/database in the source code) are ancient, hideous, unintellegible, and 16x16 only, and really should be redesigned. I see some possible issues however:

First, users consider these icons part of their database, and it could be off-putting for them if a new KeePassXC release suddenly made everything look different. Not all of our users are IT experts who are tolerant about such changes.

Second, our redesign could mess up people's use of the icons because the redesign would be based on the "semantic" meaning of the icons, but people may have used them "literally" based on their current graphical appearance. For example, there's the C33_Run.png icon that's supposed to resemble a start flag, however I'm using it for games because it also happens to resemble a chess board. C59_Package_Development.png looks like a hammer and C34_Configure.png looks like a wrench; what would break if we changed them into something completely different, e. g. a box and cogwheel?

Third, people use different KeePass clients across platforms (e. g. KeePassXC on macOS and Strongbox on iOS) and may expect icons to look identical (or at least similar enough be be recognizable) on all of them.

AFAIK all of these clients are open source and under active development, and I suppose their maintainers are as annoyed by the icons as we are. Maybe we can try and find a solution together with the others, so at least we maintain some consistency across clients.

Finally, custom icons (e. g. downloaded favicons) don't look too nice next to icons that follow other styles like Material Design. Have a look at this screenshot of KeePassium, a KeePass client for iOS that already uses redesigned default icons:

2019-12-29 12-08-33-1

It's not too bad in this case because this database consistently uses default icons for groups and favicons for entries, but it looks totally messy if they are used in a mix.

For these reasons, I think that redesigning the default icons should go into an issue of its own where we can discuss the solution in detail. IMHO it's independent of the ongoing redesign of the application icons (#475, #4066, #122) which is entirely a question of our own UI design.

If you agree, I'll create a new issue for the default icon redesign and jot down some ideas there.

Originally posted by @wolframroesler in #122 (comment)

@phoerious
Copy link
Member

Worst case we need to pull a higher-res copy of Nuvola, but I am all for replacing it with something that actually looks good.

@droidmonkey
Copy link
Member Author

This resource looks perfect, we can cull the icons that are needed to do a 1-for-1 replacement while also adding to the default list where necessary:

https://icons8.com/icons/color

They offer a no-strings-attached open source license:
https://icons8.com/license

@wolframroesler
Copy link
Contributor

icons8 is amazing, the sheer amount of icons to choose from is totally overwhelming. Many icons come in lots of variations which would make it possible to offer various style sets to the user (as suggested by @droidmonkey above).

Unfortunately, the SVG versions of many of the icons on icons8.com are available to paying customers only, and it's not immediately obvious from the search results which are free, nor have I found a way to restrict search to free icons -- there's https://icons8.com/icons/pack/free-icons but it doesn't contain all the icons to cover our needs. They say "Established open source projects could get the icons for free" (where "established" means that it has a Wikipedia page) with additional details on https://icons8.com/articles/we-contributed-icon-to-imageoptim/; I'll contact them and see what they say.

Of course we should go for SVG instead of PNG to become resolution-independent, just as in #475.

@droidmonkey
Copy link
Member Author

droidmonkey commented Dec 29, 2019

I am going to apply for an Open Source license so we can access the SVG versions. Although for the purposes of the database icons they can be PNG of 150x150 px since that is equivalent to what we do with downloaded favicons.

Looking at their website I noticed that they support adding emblems to icons. I think this would be a good idea (emblems) to indicate entries that have warnings are errors associated with them. (separate issue)

Ref: https://icons8.com/articles/we-contributed-icon-to-imageoptim/

@wolframroesler
Copy link
Contributor

I downloaded a handful of 100x100 PNGs from icon8 to see what it looks like in the demo database. LOL, seems like the PNGs are expected to be a certain size, look at this mess:

main

editgroup

Haven't dug into the source code yet. Does anyone have a quick idea where/how to fix the icon sizes?

Anyway, the names of the icon8 icons I used are:

  • icons8-folder-100.png
  • icons8-globe-earth-100.png
  • icons8-monitor-100.png
  • icons8-remove-100.png
  • icons8-us-dollar-100.png
  • icons8-user-male-100.png

@droidmonkey
Copy link
Member Author

For reference, we want to use full-color icons for the database icon set. Preferably pastel style / non-loud colors.

The whole handling of icons around the app needs to be addressed. It is likely that a width/height needs to be added to the QPixmap that loads the database icons to scale them down.

@wolframroesler
Copy link
Contributor

Full color is reasonable, matches favicons better and is a welcome contrast to the application icons in Material Design (#475). Picking consistent icons will be a challenge because of the huge amount of icons available on icon8; OTOH we'll find all we need there, and in abundance.

Also, we mustn't forget to credit them properly (cf. https://icons8.com/license).

Figured out the icon size thing. We need DatabaseIcons::iconScaledPixmap which so far was considered unneeded since all database icons were 16x16 anyway (as described explicitly in comments). Adding width/height parameters to this function is trivial (16x16 is hard-coded in the function now, just as in Metadata::customIconScaledPixmap).

Looks much better now:

main

wolframroesler added a commit to wolframroesler/keepassxc that referenced this issue Jan 3, 2020
In the future, database icons will no longer be limited to
16x16 pixels.

Fixes keepassxreboot#4071
wolframroesler added a commit to wolframroesler/keepassxc that referenced this issue Jan 3, 2020
Source of the icons: https://icons8.com/

This is an experimental commit. Proper credit in the docs will be
added later.

Fixes keepassxreboot#4071
@droidmonkey
Copy link
Member Author

We should allow for a setting to increase the size of the icons (perhaps in steps of 8px, 16x16, 24x24, 32x32)

@phoerious
Copy link
Member

phoerious commented Jan 4, 2020

That looks so much better already.
Can we get svgs from Icons8? If not, we have to add multiple resolutions, because scaling them down in Qt is a bad idea.

@wolframroesler
Copy link
Contributor

SVGs from icons8 require a commercial license. Open source projects can get them for free, @droidmonkey said he wanted to apply for a license. I consider the PNGs I did so far experimental and temporary, will replace them by SVGs when they are available.

@wolframroesler
Copy link
Contributor

BTW what's the problem with scaling icons in Qt? Doesn't look too bad on my system. Or is it a performance issue?

@phoerious
Copy link
Member

The results depend a lot on the scaling algorithms. Bicubic is pretty good, but properly rendering the correct resolution from vector line art is usually better.

@wolframroesler
Copy link
Contributor

We should allow for a setting to increase the size of the icons (perhaps in steps of 8px, 16x16, 24x24, 32x32)

Maybe we can support Ctrl-+/-/0 for zooming, just like the web browsers do (Cmd-+/-/0 on macOS). Would increase/decrease font and icon sizes in the group tree, entry list, and entry preview panel. Hiding a size selection in app settings with no immediate visual feedback would be so 20th century. But that should go into another issue.

In the icon selection dialog (in the group and entry editors) the icons should be bigger than 16x16, either a fixed size (32x32 should be enough I think) or also zoomable with Ctrl-+/-/0. Without checking the code I guess that simply increasing the size should be fairly easy.

wolframroesler added a commit to wolframroesler/keepassxc that referenced this issue Jan 4, 2020
In the future, database icons will no longer be limited to
16x16 pixels.

Fixes keepassxreboot#4071
wolframroesler added a commit to wolframroesler/keepassxc that referenced this issue Jan 4, 2020
Source of the icons: https://icons8.com/

This is an experimental commit. Proper credit in the docs will be
added later.

Fixes keepassxreboot#4071
@wolframroesler
Copy link
Contributor

Will continue working on this issue after @phoerious has finished theming (#4110), since that may affect how icons are stored and used in the source code.

@droidmonkey did you manage to obtain the Open Source license for icon8 so that we can use the SVG versions of their icons?

@droidmonkey
Copy link
Member Author

Yes, we need to identify which icons we are going to use and they will provide us access.

wolframroesler added a commit to wolframroesler/keepassxc that referenced this issue Apr 24, 2020
Note that these SVGs are just to assist development. They are NOT
the final database icons. To be replaced by the actual SVGs once
we're decided on them. Only replaces are few DB icons, most are
still the old 16x16 PNGs.

Source of the SVG files: https://www.sketchappsources.com/svg-resource/1202-free-flat-color-icons-svg-freebie-resource.html

Original source is the icon8 library (http://icons8.com/c/flat-color-icons).

License (according to comment.txt in the archive):
"http://icons8.com/good-boy-license/ -- Please do whatever your
mom would approve of."

Implements keepassxreboot#4071
wolframroesler added a commit to wolframroesler/keepassxc that referenced this issue Apr 24, 2020
Since database icons are going to be SVG instead of PNG, we
supply a parameter to return a database icon in an arbitrary
(but always square) size. The default is 16 because previously
all database icons were 16x16.

Implements keepassxreboot#4071
wolframroesler added a commit to wolframroesler/keepassxc that referenced this issue Apr 24, 2020
Previously, when picking a default (aka database) icon for
an entry or group, the icons in the selection were tiny
(16x16). Now that we are getting SVG icons we can display
them in 32x32.

Implements keepassxreboot#4071
wolframroesler added a commit to wolframroesler/keepassxc that referenced this issue Apr 24, 2020
Previously all they could return was a 16x16 icon, now they have
a parameter for the caller to specify the icon size (must be
square).

Implements keepassxreboot#4071
wolframroesler added a commit to wolframroesler/keepassxc that referenced this issue May 4, 2020
Now that the database icons are displayed in 32x32, there's
no point in showing the custom icons in 16x16. Surprise,
most favicons look awesome.

Implements keepassxreboot#4071
wolframroesler added a commit to wolframroesler/keepassxc that referenced this issue May 4, 2020
customIconsPixmap and customIconsPixmaps returned the icon
in an unspecified size, the Scaled versions of these
functions returned it in a well-defined size. There's
no need for both functions, let's keep just the one that
takes the size as a parameter.

Implements keepassxreboot#4071
wolframroesler added a commit to wolframroesler/keepassxc that referenced this issue May 4, 2020
Load the SVG file in 128x128 and later scale it down
to 16x16 or 32x32 in "FastTransformation" mode.
Previous version would load whatever resolution was
defined in the SVG and scale it up in "SmoothTransformation"
mode, which made the icons look fuzzy.

Implements keepassxreboot#4071
wolframroesler added a commit to wolframroesler/keepassxc that referenced this issue May 4, 2020
Some of these might become final but some are probably poorly chosen
because they are quite different from the original KeePass icons we've
been using so far. Some icons will probably be replaced in the future.

Source of the icons: https://github.com/icons8/flat-color-icons.git

Licence: https://github.com/icons8/flat-color-icons/blob/master/LICENSE.md -- "Please do whatever your mom would approve of"

Implements keepassxreboot#4071
wolframroesler added a commit to wolframroesler/keepassxc that referenced this issue May 4, 2020
... from a previously downloaded directory that contains the
SVG or PNG files from the icons8 collection.

Implements keepassxreboot#4071
wolframroesler added a commit to wolframroesler/keepassxc that referenced this issue May 4, 2020
Some database icons are now non-free (=PNG instead of SVG) icons
from the icons8 collection. To be replaced by the SVG versions
after we've agreed on the final design.

Implements keepassxreboot#4071
@wolframroesler
Copy link
Contributor

Pull request submitted (#4699).

BTW, if there's trouble with Icon8 making the SVGs freely available, the 150x150 PNGs are free and don't look too bad either.

wolframroesler added a commit to wolframroesler/keepassxc that referenced this issue May 9, 2020
Note that these SVGs are just to assist development. They are NOT
the final database icons. To be replaced by the actual SVGs once
we're decided on them. Only replaces are few DB icons, most are
still the old 16x16 PNGs.

Source of the SVG files: https://www.sketchappsources.com/svg-resource/1202-free-flat-color-icons-svg-freebie-resource.html

Original source is the icon8 library (http://icons8.com/c/flat-color-icons).

License (according to comment.txt in the archive):
"http://icons8.com/good-boy-license/ -- Please do whatever your
mom would approve of."

Implements keepassxreboot#4071
wolframroesler added a commit to wolframroesler/keepassxc that referenced this issue May 9, 2020
Since database icons are going to be SVG instead of PNG, we
supply a parameter to return a database icon in an arbitrary
(but always square) size. The default is 16 because previously
all database icons were 16x16.

Implements keepassxreboot#4071
wolframroesler added a commit to wolframroesler/keepassxc that referenced this issue May 9, 2020
Previously, when picking a default (aka database) icon for
an entry or group, the icons in the selection were tiny
(16x16). Now that we are getting SVG icons we can display
them in 32x32.

Implements keepassxreboot#4071
wolframroesler added a commit to wolframroesler/keepassxc that referenced this issue May 9, 2020
Previously all they could return was a 16x16 icon, now they have
a parameter for the caller to specify the icon size (must be
square).

Implements keepassxreboot#4071
wolframroesler added a commit to wolframroesler/keepassxc that referenced this issue May 9, 2020
Now that the database icons are displayed in 32x32, there's
no point in showing the custom icons in 16x16. Surprise,
most favicons look awesome.

Implements keepassxreboot#4071
wolframroesler added a commit to wolframroesler/keepassxc that referenced this issue May 9, 2020
customIconsPixmap and customIconsPixmaps returned the icon
in an unspecified size, the Scaled versions of these
functions returned it in a well-defined size. There's
no need for both functions, let's keep just the one that
takes the size as a parameter.

Implements keepassxreboot#4071
wolframroesler added a commit to wolframroesler/keepassxc that referenced this issue May 9, 2020
Load the SVG file in 128x128 and later scale it down
to 16x16 or 32x32 in "FastTransformation" mode.
Previous version would load whatever resolution was
defined in the SVG and scale it up in "SmoothTransformation"
mode, which made the icons look fuzzy.

Implements keepassxreboot#4071
wolframroesler added a commit to wolframroesler/keepassxc that referenced this issue May 9, 2020
Some of these might become final but some are probably poorly chosen
because they are quite different from the original KeePass icons we've
been using so far. Some icons will probably be replaced in the future.

Source of the icons: https://github.com/icons8/flat-color-icons.git

Licence: https://github.com/icons8/flat-color-icons/blob/master/LICENSE.md -- "Please do whatever your mom would approve of"

Implements keepassxreboot#4071
wolframroesler added a commit to wolframroesler/keepassxc that referenced this issue May 9, 2020
... from a previously downloaded directory that contains the
SVG or PNG files from the icons8 collection.

Implements keepassxreboot#4071
wolframroesler added a commit to wolframroesler/keepassxc that referenced this issue May 9, 2020
Some database icons are now non-free (=PNG instead of SVG) icons
from the icons8 collection. To be replaced by the SVG versions
after we've agreed on the final design.

Implements keepassxreboot#4071
droidmonkey pushed a commit to wolframroesler/keepassxc that referenced this issue May 11, 2020
Original source of icons is the icon8 library (http://icons8.com/c/flat-color-icons).

License (according to comment.txt in the archive):
"http://icons8.com/good-boy-license/ -- Please do whatever your mom would approve of."

* Implements keepassxreboot#4071

* Increase default size of database icons to 24px and entry preview panel to 48px
* Fully support HIDPI displays through use of QIcon
* Add shell script to assemble the database icons
droidmonkey added a commit to wolframroesler/keepassxc that referenced this issue May 16, 2020
Original source of icons is the icon8 library (http://icons8.com/c/flat-color-icons).

License (according to comment.txt in the archive):
"http://icons8.com/good-boy-license/ -- Please do whatever your mom would approve of."

* Implements keepassxreboot#4071

* Increase default size of database icons to 24px and entry preview panel to 48px
* Fully support HIDPI displays through use of QIcon
* Add shell script to assemble the database icons
Code improvements and badges

* Use QIcon to seamlessly support High DPI displays and pixmap caching
* Add badge support for KeeShare groups and expired entries.
* Replace select icons

Co-authored-by: Jonathan White <support@dmapps.us>
wolframroesler added a commit to wolframroesler/keepassxc that referenced this issue May 20, 2020
Original source of icons is the icon8 library (http://icons8.com/c/flat-color-icons).

License (according to comment.txt in the archive):
"http://icons8.com/good-boy-license/ -- Please do whatever your mom would approve of."

* Implements keepassxreboot#4071

* Increase default size of database icons to 24px and entry preview panel to 48px
* Fully support HIDPI displays through use of QIcon
* Add shell script to assemble the database icons
Code improvements and badges

* Use QIcon to seamlessly support High DPI displays and pixmap caching
* Add badge support for KeeShare groups and expired entries.
* Replace select icons

Co-authored-by: Jonathan White <support@dmapps.us>
droidmonkey added a commit to wolframroesler/keepassxc that referenced this issue May 25, 2020
Original source of icons is the icon8 library (http://icons8.com/c/flat-color-icons) and Paomedia (https://github.com/paomedia/small-n-flat). All icons used are licensed MIT or CC0; annotated in COPYING.

* Closes keepassxreboot#4071

* Increase default size of database icons to 24px and entry preview panel to 48px
* Add shell script to assemble the database icons

* Use QIcon to seamlessly support High DPI displays and pixmap caching
* Add badge support for KeeShare groups and expired entries.

Co-authored-by: Wolfram Rösler <wolfram@roesler-ac.de>
droidmonkey added a commit to wolframroesler/keepassxc that referenced this issue May 28, 2020
Original source of icons is the icon8 library (http://icons8.com/c/flat-color-icons) and Paomedia (https://github.com/paomedia/small-n-flat). All icons used are licensed MIT or CC0; annotated in COPYING.

* Closes keepassxreboot#4071

* Increase default size of database icons to 24px and entry preview panel to 48px
* Add shell script to assemble the database icons

* Use QIcon to seamlessly support High DPI displays and pixmap caching
* Add badge support for KeeShare groups and expired entries.
* Guard against use of QPixmap::fromImage without a GUI

Co-authored-by: Wolfram Rösler <wolfram@roesler-ac.de>
@pigsflew
Copy link

Why not use Google's material design icons directly? They're all available under Apache 2.0 and available from the linked website as SVG.

I've already pulled a bunch of them to set as my icons as external ones, and they look like this:
example

droidmonkey added a commit to wolframroesler/keepassxc that referenced this issue May 29, 2020
Original source of icons is the icon8 library (http://icons8.com/c/flat-color-icons) and Paomedia (https://github.com/paomedia/small-n-flat). All icons used are licensed MIT or CC0; annotated in COPYING.

* Closes keepassxreboot#4071

* Increase default size of database icons to 24px and entry preview panel to 48px
* Add shell script to assemble the database icons

* Use QIcon to seamlessly support High DPI displays and pixmap caching
* Add badge support for KeeShare groups and expired entries.
* Guard against use of QPixmap::fromImage without a GUI

* Add SVG minify and improve `make icons`

Co-authored-by: Wolfram Rösler <wolfram@roesler-ac.de>
@phoerious
Copy link
Member

We want coloured icons that are easy to distinguish from the main UI and that go well together with coloured favicons.

droidmonkey added a commit to wolframroesler/keepassxc that referenced this issue May 29, 2020
Original source of icons is the icon8 library (http://icons8.com/c/flat-color-icons) and Paomedia (https://github.com/paomedia/small-n-flat). All icons used are licensed MIT or CC0; annotated in COPYING.

* Closes keepassxreboot#4071

* Increase default size of database icons to 24px and entry preview panel to 48px
* Add shell script to assemble the database icons

* Use QIcon to seamlessly support High DPI displays and pixmap caching
* Add badge support for KeeShare groups and expired entries.
* Guard against use of QPixmap::fromImage without a GUI

* Add SVG minify and improve `make icons`

Co-authored-by: Wolfram Rösler <wolfram@roesler-ac.de>
@grenzor
Copy link

grenzor commented May 29, 2020

The new icons look nice. Can icons be added for the Copy Attribute and TOTP entry right-click menu/sub-menu items? I think doing that would make all menu items have icons.

lerignoux pushed a commit to lerignoux/keepassxc that referenced this issue Jul 20, 2020
Original source of icons is the icon8 library (http://icons8.com/c/flat-color-icons) and Paomedia (https://github.com/paomedia/small-n-flat). All icons used are licensed MIT or CC0; annotated in COPYING.

* Closes keepassxreboot#4071

* Increase default size of database icons to 24px and entry preview panel to 48px
* Add shell script to assemble the database icons

* Use QIcon to seamlessly support High DPI displays and pixmap caching
* Add badge support for KeeShare groups and expired entries.
* Guard against use of QPixmap::fromImage without a GUI

* Add SVG minify and improve `make icons`

Co-authored-by: Wolfram Rösler <wolfram@roesler-ac.de>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging a pull request may close this issue.

8 participants