dashy/docs/icons.md
2021-09-29 19:46:04 +01:00

9.1 KiB

Icons

Both sections and items can have an icon, which is specified using the icon attribute. Using icons improves the aesthetics of your UI and makes the app more intuitive to use. There are several options when it comes to setting icons, and this article outlines each of them

Note that, if you are using icons from an external source (like font-awesome or material-design-icons), then the relevant font file will be loaded in automatically if and when needed, but combining icons from multiple services may have a negative impact on performance.


Font Awesome

You can use any Font Awesome Icon simply by specifying it's identifier. This is in the format of [category] [name] and can be found on the page for any given icon on the Font Awesome site. For example: fas fa-rocket, fab fa-monero or fas fa-unicorn.

Font-Awesome has a wide variety of free icons, but you can also use their pro icons if you have a membership. To do so, you need to specify your license key under: appConfig.fontAwesomeKey. This is usually a 10-digit string, for example 13014ae648.


Simple Icons

SimpleIcons.org is a collection of 2000+ high quality, free and open source brand and logo SVG icons. Usage of which is very similar to font-awesome icons. First find the glyph you want to use on the website, then just set your icon the the simple icon slug, prefixed with si-.

For example:

sections:
- name: Simple Icons Example
  items:
  - title: Portainer
    icon: si-portainer
  - title: FreeNAS
    icon: si-freenas
  - title: NextCloud
    icon: si-nextcloud
  - title: Home Assistant
    icon: si-homeassistant

Favicons

Dashy can auto-fetch the favicon for a given service using it's URL. Just set icon: favicon to use this feature. If the services URL is a local IP, then Dashy will attempt to find the favicon from http://[ip]/favicon.ico. This has two issues, favicons are not always hosted at the same location for every service, and often the default favicon is a low resolution. Therefore to fix this, for remote services an API is used to return a high-quality icon for any online service.

The default favicon API is Favicon Kit, a free and reliable service for returning images from any given URL. However several other API's are supported. To change the API used, under appConfig, set faviconApi to one of the following values:

  • faviconkit - faviconkit.com (Recommend)
  • google - Official Google favicon API service, good support for all sites, but poor quality
  • clearbit - Clearbit returns high-quality logos from mainstream websites
  • webmasterapi - WebMasterAPI
  • allesedv - allesedv.com is a highly efficient IPv6-enabled service

You can also force Dashy to always get favicons from the root of the domain, and not use an external service, by setting appConfig.faviconApi to local.

To use a different favicon API for certain items, then set icon: favicon-[api], e.g. favicon-clearbit

If for a given service none of the APIs work in your situation, and nor does local, then the best option is to find the path of the services logo or favicon, and set the icon to the URL of the raw image.


Generative Icons

Uses a unique and programmatically generated icon for a given service. This is particularly useful when you have a lot of similar services with a different IP or port, and no specific icon. These icons are generated with DiceBear, and use a hash of the services domain/ ip for entropy, so each domain will always have the same icon. To use this option, just set an item's to: icon: generative.


Emoji Icons

You can use almost any emoji as an icon for items or sections. You can specify the emoji either by pasting it directly, using it's unicode ( e.g. 'U+1F680') or shortcode (e.g. ':rocket:'). You can find these codes for any emoji using Emojipedia (near the bottom of emoji each page), or for a quick reference to emoji shortcodes, check out emojis.ninja by @nomanoff.

For example, these will all render the same rocket (🚀) emoji: icon: ':rocket:' or icon: 'U+1F680' or icon: 🚀


Home-Lab Icons

The dashboard-icons repo by @WalkxCode provides a comprehensive collection of 360+ high-quality PNG icons for commonly self-hosted services. Dashy natively supports these icons, and you can use them just by specifying the icon name (without extension) preceded by hl-. You can see a full list of all available icons here.

For example:

sections:
- name: Home Lab Icons Example
  items:
  - title: AdGuard Home
    icon: hl-adguardhome
  - title: Long Horn
    icon: hl-longhorn
  - title: Nagios
    icon: hl-nagios
  - title: Whoogle Search
    icon: hl-whooglesearch


Icons by URL

You can also set an icon by passing in a valid URL pointing to the icons location. For example icon: https://i.ibb.co/710B3Yc/space-invader-x256.png, this can be in .png, .jpg or .svg format, and hosted anywhere- so long as it's accessible from where you are hosting Dashy. The icon will be automatically scaled to fit, however loading in a lot of large icons may have a negative impact on performance, especially if you visit Dashy from new devices often.


Local Icons

You may also want to store your icons locally, bundled within Dashy so that there is no reliance on outside services. This can be done by putting the icons within Dashy's ./public/item-icons/ directory. If you are using Docker, then the easiest option is to map a volume from your host system, for example: -v /local/image/directory:/app/public/item-icons/. To reference an icon stored locally, just specify it's name and extension. For example, if my icon was stored in /app/public/item-icons/maltrail.png, then I would just set icon: maltrail.png.

You can also use sub-folders within the item-icons directory to keep things organised. You would then specify an icon with it's folder name slash image name. For example: networking/monit.png


Material Design Icons

Dashy also supports 5000+ material-design-icons. To use these, first find the name/ slug for your icon here, and then prefix is with mdi-.

For example:

sections:
- name: Material Design Icons Example
  items:
  - title: Alien Icon
    icon: mdi-alien 
  - title: Fire Icon
    icon: mdi-fire 
  - title: Dino Icon
    icon: mdi-google-downasaur 


No Icon

If you don't wish for a given item or section to have an icon, just leave out the icon attribute.


Icon Collections and Resources

The following website provide good-quality, free icon sets. To use any of these icons, just copy the link to the raw icon (it should end in .svg or .png) and paste it as your icon, or download and save the icons in /public/item-icons or pass through with a Docker volume as described above. Full credit to the authors, please see the licenses for each service for usage and copyright information.

  • dashboard-icons - 350+ high-quality icons for commonly self-hosted services, maintained by @WalkxCode
  • SVG Box - Cryptocurrency, social media apps and flag icons
  • Simple Icons - Free SVG brand icons, with easy API access
  • Icons8 - Thousands of icons, all with free 64x64 versions
  • Flat Icon - Wide variety of icon sets, almost all free to use

If you are a student, then you can get free access to premium icons on Icon Scout or Icons8 using the GitHub Student Pack.