Skip to content

Custom icons ​

Config fields like icon-name: tb-home-symbolic resolve against the lys-shell icon theme installed at ~/.local/share/lys-shell/icons/. The lys-shell icons subcommand populates that directory from CDN sources or local SVG files.

List available sources ​

sh
lys-shell icons sources

Five sources ship in-tree. Slug names come directly from the upstream catalogues, linked below.

SourcePrefixContentsBrowse
tablertb-Outline UI iconstabler.io/icons
tabler-filledtbf-Solid UI iconstabler.io/icons
simple-iconssi-Brand and app logossimpleicons.org
materialmd-Google Material Designfonts.google.com/icons
lucideld-Alternative UI icons (Feather fork)lucide.dev/icons

Install from a CDN source ​

sh
lys-shell icons install <source> <slug> [<slug>...]

Example:

sh
lys-shell icons install tabler home settings bell

This downloads the three Tabler icons and installs them as tb-home-symbolic, tb-settings-symbolic, and tb-bell-symbolic. The source name determines the prefix; the slug is the icon's name on the upstream site.

Brand logos work the same way:

sh
lys-shell icons install simple-icons firefox spotify

Produces si-firefox-symbolic and si-spotify-symbolic.

Import a local SVG ​

sh
lys-shell icons import <path> [name]

For a single file, pass a name. The icon is installed with the cm- prefix:

sh
lys-shell icons import ~/Downloads/my-logo.svg my-logo

Installs as cm-my-logo-symbolic.

For a directory, omit the name. Every SVG is imported; files already starting with a known prefix (tb-, tbf-, si-, md-, ld-, cm-) keep their name, and anything else gets cm- added.

sh
lys-shell icons import ~/exported-icons/

Imported SVGs are transformed into symbolic icons so they pick up theme colours.

List and remove ​

sh
lys-shell icons list
lys-shell icons list --source tb

--source filters by prefix. Add --interactive for an fzf-backed search if fzf is on $PATH.

To remove icons, pass their full names:

sh
lys-shell icons remove tb-home-symbolic si-firefox-symbolic

Referencing icons in config ​

Any module field that takes an icon name accepts installed icons directly:

yaml
modules:
  clock:
    icon-name: ld-clock-symbolic
  network:
    icon-name: tb-wifi-symbolic

The value is the full icon name, prefix included. An icon no theme provides draws nothing, so the shell warns about each one at startup and on every config reload, naming the icon and how to get it: lys-shell icons sync for a CDN prefix, lys-shell icons import for a cm- icon.

lys-shell bundles Lucide (ld-) for its own glyphs and Simple Icons (si-) for brand logos. A config written against an older release may name Tabler (tb-) or Material (md-) icons that are no longer bundled; lys-shell icons sync fetches them, or switch to the ld- equivalent.

Released under the MIT License.