Quarto Icons & Extension Path Resolution
Using Font Awesome 6.5.2+ instead of iconify
Context
Quarto extensions like iconify can be installed using:
quarto add mcanouil/quarto-iconifyThis creates an _extensions directory in your project root with the extension files.
The Problem
Quarto resolves extension paths relative to each document’s location instead of the project root:
- Works for files in root directory (
index.qmd) - Fails for files in subdirectories (
posts/article.qmd,pages/about.qmd)
Here’s the directory structure:
my-blog/
├── _extensions/ # Created by quarto add
│ └── mcanouil/
│ └── iconify/
├── index.qmd ✅ Works (finds _extensions/mcanouil/iconify)
├── posts/
│ └── article.qmd ❌ Fails (looks for posts/_extensions/mcanouil/iconify)
└── pages/
└── about.qmd ❌ Fails (looks for pages/_extensions/mcanouil/iconify)
Attempted Solutions
- Project Configuration:
- Tried individual
_quarto.ymlfiles in each directory - Tried absolute paths
- None of these resolved the path issue
- Tried individual
- File System Solutions:
- Tried symlinks (requires admin privileges on Windows)
- Tried duplicating
_extensionsdirectory (didn’t work for me, maybe I didn’t copy it correctly)
Working Solution: Font Awesome
First, added Font Awesome to _quarto.yml:
format:
html:
css:
- https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.2/css/all.min.css
Note
Maybe adding the entire Font Awesome library affects website speed but at this point I honestly don’t care. I wasted 4 hours on this already.
Now I can finally use a custom icon in my navbar configuration:
navbar:
right:
- text: "<i class='fa-brands fa-bluesky'></i>"
href: https://bsky.app/profile/testycool.bsky.socialNote: The Bluesky icon specifically requires Font Awesome 6.5.2 or newer. Earlier versions don’t include it.