# font-logos #  font-logos is an icon font containing logos of popular linux distributions and other open source software. *Note:* All brand icons are trademarks of their respective owners and should only be used to represent the company or product to which they refer. ## Installation ## Install the font by downloading and unpacking the latest release's zip manually or installing it from npm: npm install font-logos To use the font, include `assets/font-logos.css` as well as the fonts in your project and use the CSS classes listed below. <link href="/assets/font-logos.css" rel="stylesheet"> Alternatively just link to it using a CDN such as [jsDelivr](//jsdelivr.com): <link href="//cdn.jsdelivr.net/npm/font-logos@1/assets/font-logos.css" rel="stylesheet"> ## Usage ## Include an icon using the corresponding CSS class in an empty element: <i class="fl-[icon]"></i> Add `fl-fw` as class for a fixed width icon. If you want to insert a glyph of this font on a GNU/Linux system press `Ctrl + Shift + u`, release the keys and then type the code point, for instance: `Ctrl + Shift + u` and `f31a` will insert the `Tux` glyph. Available logos are: | Distribution | CSS class | Code | Code point | Image | | ------------------------- | ---------------------- | -------------------------------------- | :--------: | :--------------------------------------------------: | | Alma Linux | `fl-almalinux` | `<i class="fl-almalinux"></i>` | `0xf31d` | <img src="vectors/almalinux.svg" width="24"> | | Alpine | `fl-alpine` | `<i class="fl-alpine"></i>` | `0xf300` | <img src="vectors/alpine.svg" width="24"> | | AOSC OS | `fl-aosc` | `<i class="fl-aosc"></i>` | `0xf301` | <img src="vectors/aosc.svg" width="24"> | | Apple | `fl-apple` | `<i class="fl-apple"></i>` | `0xf302` | <img src="vectors/apple.svg" width="24"> | | Archcraft | `fl-archcraft` | `<i class="fl-archcraft"></i>` | `0xf345` | <img src="vectors/archcraft.svg" width="24"> | | ArchLabs | `fl-archlabs` | `<i class="fl-archlabs"></i>` | `0xf31e` | <img src="vectors/archlabs.svg" width="24"> | | Arch Linux | `fl-archlinux` | `<i class="fl-archlinux"></i>` | `0xf303` | <img src="vectors/archlinux.svg" width="24"> | | ArcoLinux | `fl-arcolinux` | `<i class="fl-arcolinux"></i>` | `0xf346` | <img src="vectors/arcolinux.svg" width="24"> | | Arduino | `fl-arduino` | `<i class="fl-arduino"></i>` | `0xf34b` | <img src="vectors/arduino.svg" width="24"> | | Artix Linux | `fl-artix` | `<i class="fl-artix"></i>` | `0xf31f` | <img src="vectors/artix.svg" width="24"> | | Awesome WM | `fl-awesome` | `<i class="fl-awesome"></i>` | `0xf354` | <img src="vectors/awesome.svg" width="24"> | | BigLinux | `fl-biglinux` | `<i class="fl-biglinux"></i>` | `0xf347` | <img src="vectors/biglinux.svg" width="24"> | | bspwm | `fl-bspwm` | `<i class="fl-bspwm"></i>` | `0xf355` | <img src="vectors/bspwm.svg" width="24"> | | Budgie | `fl-budgie` | `<i class="fl-budgie"></i>` | `0xf320` | <img src="vectors/budgie.svg" width="24"> | | CentOS | `fl-centos` | `<i class="fl-centos"></i>` | `0xf304` | <img src="vectors/centos.svg" width="24"> | | Cinnamon | `fl-cinnamon` | `<i class="fl-cinnamon"></i>` | `0xf35f` | <img src="vectors/cinnamon.svg" width="24"> | | Codeberg | `fl-codeberg` | `<i class="fl-codeberg"></i>` | `0xf330` | <img src="vectors/codeberg.svg" width="24"> | | CoreOS | `fl-coreos` | `<i class="fl-coreos"></i>` | `0xf305` | <img src="vectors/coreos.svg" width="24"> | | Crystal Linux | `fl-crystal` | `<i class="fl-crystal"></i>` | `0xf348` | <img src="vectors/crystal.svg" width="24"> | | Debian | `fl-debian` | `<i class="fl-debian"></i>` | `0xf306` | <img src="vectors/debian.svg" width="24"> | | Deepin | `fl-deepin` | `<i class="fl-deepin"></i>` | `0xf321` | <img src="vectors/deepin.svg" width="24"> | | Devuan | `fl-devuan` | `<i class="fl-devuan"></i>` | `0xf307` | <img src="vectors/devuan.svg" width="24"> | | Docker | `fl-docker` | `<i class="fl-docker"></i>` | `0xf308` | <img src="vectors/docker.svg" width="24"> | | dwm | `fl-dwm` | `<i class="fl-dwm"></i>` | `0xf356` | <img src="vectors/dwm.svg" width="24"> | | elementary OS | `fl-elementary` | `<i class="fl-elementary"></i>` | `0xf309` | <img src="vectors/elementary.svg" width="24"> | | Endeavour OS | `fl-endeavour` | `<i class="fl-endeavour"></i>` | `0xf322` | <img src="vectors/endeavour.svg" width="24"> | | Enlightenment | `fl-enlightenment` | `<i class="fl-enlightenment"></i>` | `0xf357` | <img src="vectors/enlightenment.svg" width="24"> | | F-droid | `fl-fdroid` | `<i class="fl-fdroid"></i>` | `0xf36a` | <img src="vectors/fdroid.svg" width="24"> | | Fedora | `fl-fedora` | `<i class="fl-fedora"></i>` | `0xf30a` | <img src="vectors/fedora.svg" width="24"> | | Fedora (inverse) | `fl-fedora-inverse` | `<i class="fl-fedora-inverse"></i>` | `0xf30b` | <img src="vectors/fedora-inverse.svg" width="24"> | | Ferris | `fl-ferris` | `<i class="fl-ferris"></i>` | `0xf323` | <img src="vectors/ferris.svg" width="24"> | | Flathub | `fl-flathub` | `<i class="fl-flathub"></i>` | `0xf324` | <img src="vectors/flathub.svg" width="24"> | | Fluxbox | `fl-fluxbox` | `<i class="fl-fluxbox"></i>` | `0xf358` | <img src="vectors/fluxbox.svg" width="24"> | | Forgejo | `fl-forgejo` | `<i class="fl-forgejo"></i>` | `0xf335` | <img src="vectors/forgejo.svg" width="24"> | | FOSDEM | `fl-fosdem` | `<i class="fl-fosdem"></i>` | `0xf36b` | <img src="vectors/fosdem.svg" width="24"> | | FreeBSD | `fl-freebsd` | `<i class="fl-freebsd"></i>` | `0xf30c` | <img src="vectors/freebsd.svg" width="24"> | | FreeCAD | `fl-freecad` | `<i class="fl-freecad"></i>` | `0xf336` | <img src="vectors/freecad.svg" width="24"> | | freedesktop.org | `fl-freedesktop` | `<i class="fl-freedesktop"></i>` | `0xf360` | <img src="vectors/freedesktop.svg" width="24"> | | Garuda Linux | `fl-garuda` | `<i class="fl-garuda"></i>` | `0xf337` | <img src="vectors/garuda.svg" width="24"> | | Gentoo | `fl-gentoo` | `<i class="fl-gentoo"></i>` | `0xf30d` | <img src="vectors/gentoo.svg" width="24"> | | GIMP | `fl-gimp` | `<i class="fl-gimp"></i>` | `0xf338` | <img src="vectors/gimp.svg" width="24"> | | Gitea | `fl-gitea` | `<i class="fl-gitea"></i>` | `0xf339` | <img src="vectors/gitea.svg" width="24"> | | GNOME | `fl-gnome` | `<i class="fl-gnome"></i>` | `0xf361` | <img src="vectors/gnome.svg" width="24"> | | GNU Guix | `fl-gnu-guix` | `<i class="fl-gnu-guix"></i>` | `0xf325` | <img src="vectors/gnu-guix.svg" width="24"> | | GTK | `fl-gtk` | `<i class="fl-gtk"></i>` | `0xf362` | <img src="vectors/gtk.svg" width="24"> | | Hyperbola GNU/Linux-libre | `fl-hyperbola` | `<i class="fl-hyperbola"></i>` | `0xf33a` | <img src="vectors/hyperbola.svg" width="24"> | | Hyprland | `fl-hyprland` | `<i class="fl-hyprland"></i>` | `0xf359` | <img src="vectors/hyprland.svg" width="24"> | | i3 | `fl-i3` | `<i class="fl-i3"></i>` | `0xf35a` | <img src="vectors/i3.svg" width="24"> | | illumos | `fl-illumos` | `<i class="fl-illumos"></i>` | `0xf326` | <img src="vectors/illumos.svg" width="24"> | | Inkscape | `fl-inkscape` | `<i class="fl-inkscape"></i>` | `0xf33b` | <img src="vectors/inkscape.svg" width="24"> | | JWM | `fl-jwm` | `<i class="fl-jwm"></i>` | `0xf35b` | <img src="vectors/jwm.svg" width="24"> | | Kali Linux | `fl-kali-linux` | `<i class="fl-kali-linux"></i>` | `0xf327` | <img src="vectors/kali-linux.svg" width="24"> | | KDE | `fl-kde` | `<i class="fl-kde"></i>` | `0xf373` | <img src="vectors/kde.svg" width="24"> | | KDE Neon | `fl-kde-neon` | `<i class="fl-kde-neon"></i>` | `0xf331` | <img src="vectors/kde-neon.svg" width="24"> | | KDE Plasma | `fl-kde-plasma` | `<i class="fl-kde-plasma"></i>` | `0xf332` | <img src="vectors/kde-plasma.svg" width="24"> | | Kdenlive | `fl-kdenlive` | `<i class="fl-kdenlive"></i>` | `0xf33c` | <img src="vectors/kdenlive.svg" width="24"> | | KiCad | `fl-kicad` | `<i class="fl-kicad"></i>` | `0xf34c` | <img src="vectors/kicad.svg" width="24"> | | Krita | `fl-krita` | `<i class="fl-krita"></i>` | `0xf33d` | <img src="vectors/krita.svg" width="24"> | | Kubuntu | `fl-kubuntu` | `<i class="fl-kubuntu"></i>` | `0xf333` | <img src="vectors/kubuntu.svg" width="24"> | | Kubuntu (inverse) | `fl-kubuntu-inverse` | `<i class="fl-kubuntu-inverse"></i>` | `0xf334` | <img src="vectors/kubuntu-inverse.svg" width="24"> | | Linux Mint | `fl-linuxmint` | `<i class="fl-linuxmint"></i>` | `0xf30e` | <img src="vectors/linuxmint.svg" width="24"> | | Linux Mint (inverse) | `fl-linuxmint-inverse` | `<i class="fl-linuxmint-inverse"></i>` | `0xf30f` | <img src="vectors/linuxmint-inverse.svg" width="24"> | | Loc-OS | `fl-locos` | `<i class="fl-locos"></i>` | `0xf349` | <img src="vectors/locos.svg" width="24"> | | LXDE | `fl-lxde` | `<i class="fl-lxde"></i>` | `0xf363` | <img src="vectors/lxde.svg" width="24"> | | LXLE Linux | `fl-lxle` | `<i class="fl-lxle"></i>` | `0xf33e` | <img src="vectors/lxle.svg" width="24"> | | LXQt | `fl-lxqt` | `<i class="fl-lxqt"></i>` | `0xf364` | <img src="vectors/lxqt.svg" width="24"> | | Mageia | `fl-mageia` | `<i class="fl-mageia"></i>` | `0xf310` | <img src="vectors/mageia.svg" width="24"> | | Mandriva | `fl-mandriva` | `<i class="fl-mandriva"></i>` | `0xf311` | <img src="vectors/mandriva.svg" width="24"> | | Manjaro | `fl-manjaro` | `<i class="fl-manjaro"></i>` | `0xf312` | <img src="vectors/manjaro.svg" width="24"> | | MATE | `fl-mate` | `<i class="fl-mate"></i>` | `0xf365` | <img src="vectors/mate.svg" width="24"> | | mpv | `fl-mpv` | `<i class="fl-mpv"></i>` | `0xf36e` | <img src="vectors/mpv.svg" width="24"> | | MX Linux | `fl-mxlinux` | `<i class="fl-mxlinux"></i>` | `0xf33f` | <img src="vectors/mxlinux.svg" width="24"> | | Neovim | `fl-neovim` | `<i class="fl-neovim"></i>` | `0xf36f` | <img src="vectors/neovim.svg" width="24"> | | NixOS | `fl-nixos` | `<i class="fl-nixos"></i>` | `0xf313` | <img src="vectors/nixos.svg" width="24"> | | Octoprint | `fl-octoprint` | `<i class="fl-octoprint"></i>` | `0xf34d` | <img src="vectors/octoprint.svg" width="24"> | | OpenBSD | `fl-openbsd` | `<i class="fl-openbsd"></i>` | `0xf328` | <img src="vectors/openbsd.svg" width="24"> | | OpenSCAD | `fl-openscad` | `<i class="fl-openscad"></i>` | `0xf34e` | <img src="vectors/openscad.svg" width="24"> | | OpenSUSE | `fl-opensuse` | `<i class="fl-opensuse"></i>` | `0xf314` | <img src="vectors/opensuse.svg" width="24"> | | OSH | `fl-osh` | `<i class="fl-osh"></i>` | `0xf34f` | <img src="vectors/osh.svg" width="24"> | | OSHWA | `fl-oshwa` | `<i class="fl-oshwa"></i>` | `0xf350` | <img src="vectors/oshwa.svg" width="24"> | | OSI | `fl-osi` | `<i class="fl-osi"></i>` | `0xf36c` | <img src="vectors/osi.svg" width="24"> | | Parabola GNU/Linux-libre | `fl-parabola` | `<i class="fl-parabola"></i>` | `0xf340` | <img src="vectors/parabola.svg" width="24"> | | Parrot OS | `fl-parrot` | `<i class="fl-parrot"></i>` | `0xf329` | <img src="vectors/parrot.svg" width="24"> | | Pop!_OS | `fl-pop-os` | `<i class="fl-pop-os"></i>` | `0xf32a` | <img src="vectors/pop-os.svg" width="24"> | | PostmarketOS | `fl-postmarketos` | `<i class="fl-postmarketos"></i>` | `0xf374` | <img src="vectors/postmarketos.svg" width="24"> | | Prusa Slicer | `fl-prusaslicer` | `<i class="fl-prusaslicer"></i>` | `0xf351` | <img src="vectors/prusaslicer.svg" width="24"> | | Puppy Linux | `fl-puppy` | `<i class="fl-puppy"></i>` | `0xf341` | <img src="vectors/puppy.svg" width="24"> | | Qt | `fl-qt` | `<i class="fl-qt"></i>` | `0xf375` | <img src="vectors/qt.svg" width="24"> | | Qtile | `fl-qtile` | `<i class="fl-qtile"></i>` | `0xf35c` | <img src="vectors/qtile.svg" width="24"> | | QubesOS | `fl-qubesos` | `<i class="fl-qubesos"></i>` | `0xf342` | <img src="vectors/qubesos.svg" width="24"> | | Raspberry pi | `fl-raspberry-pi` | `<i class="fl-raspberry-pi"></i>` | `0xf315` | <img src="vectors/raspberry-pi.svg" width="24"> | | Red Hat | `fl-redhat` | `<i class="fl-redhat"></i>` | `0xf316` | <img src="vectors/redhat.svg" width="24"> | | RepRap | `fl-reprap` | `<i class="fl-reprap"></i>` | `0xf352` | <img src="vectors/reprap.svg" width="24"> | | RISC-V | `fl-riscv` | `<i class="fl-riscv"></i>` | `0xf353` | <img src="vectors/riscv.svg" width="24"> | | Rocky Linux | `fl-rocky-linux` | `<i class="fl-rocky-linux"></i>` | `0xf32b` | <img src="vectors/rocky-linux.svg" width="24"> | | Sabayon | `fl-sabayon` | `<i class="fl-sabayon"></i>` | `0xf317` | <img src="vectors/sabayon.svg" width="24"> | | Slackware | `fl-slackware` | `<i class="fl-slackware"></i>` | `0xf318` | <img src="vectors/slackware.svg" width="24"> | | Slackware (inverse) | `fl-slackware-inverse` | `<i class="fl-slackware-inverse"></i>` | `0xf319` | <img src="vectors/slackware-inverse.svg" width="24"> | | Snappy | `fl-snappy` | `<i class="fl-snappy"></i>` | `0xf32c` | <img src="vectors/snappy.svg" width="24"> | | Solus | `fl-solus` | `<i class="fl-solus"></i>` | `0xf32d` | <img src="vectors/solus.svg" width="24"> | | Sway | `fl-sway` | `<i class="fl-sway"></i>` | `0xf35d` | <img src="vectors/sway.svg" width="24"> | | Tails | `fl-tails` | `<i class="fl-tails"></i>` | `0xf343` | <img src="vectors/tails.svg" width="24"> | | Thunderbird | `fl-thunderbird` | `<i class="fl-thunderbird"></i>` | `0xf370` | <img src="vectors/thunderbird.svg" width="24"> | | Tor Browser | `fl-tor` | `<i class="fl-tor"></i>` | `0xf371` | <img src="vectors/tor.svg" width="24"> | | Trisquel GNU/Linux | `fl-trisquel` | `<i class="fl-trisquel"></i>` | `0xf344` | <img src="vectors/trisquel.svg" width="24"> | | Tux | `fl-tux` | `<i class="fl-tux"></i>` | `0xf31a` | <img src="vectors/tux.svg" width="24"> | | Ubuntu | `fl-ubuntu` | `<i class="fl-ubuntu"></i>` | `0xf31b` | <img src="vectors/ubuntu.svg" width="24"> | | Ubuntu (inverse) | `fl-ubuntu-inverse` | `<i class="fl-ubuntu-inverse"></i>` | `0xf31c` | <img src="vectors/ubuntu-inverse.svg" width="24"> | | Vanilla OS | `fl-vanilla` | `<i class="fl-vanilla"></i>` | `0xf366` | <img src="vectors/vanilla.svg" width="24"> | | Void | `fl-void` | `<i class="fl-void"></i>` | `0xf32e` | <img src="vectors/void.svg" width="24"> | | VS Codium | `fl-vscodium` | `<i class="fl-vscodium"></i>` | `0xf372` | <img src="vectors/vscodium.svg" width="24"> | | Wayland | `fl-wayland` | `<i class="fl-wayland"></i>` | `0xf367` | <img src="vectors/wayland.svg" width="24"> | | Wikimedia | `fl-wikimedia` | `<i class="fl-wikimedia"></i>` | `0xf36d` | <img src="vectors/wikimedia.svg" width="24"> | | XeroLinux | `fl-xerolinux` | `<i class="fl-xerolinux"></i>` | `0xf34a` | <img src="vectors/xerolinux.svg" width="24"> | | XFCE | `fl-xfce` | `<i class="fl-xfce"></i>` | `0xf368` | <img src="vectors/xfce.svg" width="24"> | | Xmonad | `fl-xmonad` | `<i class="fl-xmonad"></i>` | `0xf35e` | <img src="vectors/xmonad.svg" width="24"> | | Xorg | `fl-xorg` | `<i class="fl-xorg"></i>` | `0xf369` | <img src="vectors/xorg.svg" width="24"> | | Zorin OS | `fl-zorin` | `<i class="fl-zorin"></i>` | `0xf32f` | <img src="vectors/zorin.svg" width="24"> | ## Building ## Make sure you have the following dependencies installed: * Node, Python and jq to run the build scripts * [FontForge](//fontforge.org) to generate the fonts * [wkhtmltopdf](http://wkhtmltopdf.org/) to generate this readme's preview image Then run `npm install`/`yarn install` and `make`. ## Releasing ## If you are a maintainer of this repository and a new release is to be published * Make sure all PRs (that shall be pulled) are pulled * The PRs add new `svg`s in `vectors/` * The `icons.tsv` is ammended (i.e. new icons added at the bottom) * Every time the `svg`s or `icons.tsv` is touched in the `master` branch (i.e. through pulling) the preview image is updated * Note that the `README.md` is NOT updated. You can manually modify it do indicate/add recently added but not released icons. * Once the release seems ready: * Edit the version number in `package.json` (and push that change to `master`) * Trigger the "Draft a Release" workflow manually on the Actions page (on the `master` branch) * The workflow will add a git tag for the release * Go to the releases list and find the draft release * Edit the description etc pp and finally * Push "publish release" * The release is published on Github * Automatically the "Update README" workflow is triggered * The `README.md` is regenerated (the preview should already be up to date, see above) * Automatically the "Publish release to npm" workflow is triggered * If the npm token is not expired the release is pushed to NPM * You need to publish on NPM manually if token is expired (expected)