Where Does LilyPond Keep Defaults and Fonts?
Where LilyPond keeps its default init files and fonts on Windows, Mac and Linux, and why no prefs file exists.
Last updated
LilyPond has no preferences file to hunt down. Defaults live in plain init files inside the install data tree for your OS. Per score customization happens through include statements and command line flags instead.
That design frustrates anyone expecting a settings dialog, but it makes builds reproducible across machines. The data directory variable redirects the whole default tree when needed. Fonts register through the standard font config file on Linux and equivalents elsewhere. Keep custom includes beside the scores that use them for portable builds.
Where LilyPond stores this, by platform
[InstallDir]\LilyPond\usr\share\lilypond\current\ly
Install data tree with ly init files, engraver defaults and paper settings. No user prefs file exists. Override with the data directory variable or per score includes.
[InstallDir]/LilyPond.app/Contents/Resources/share/lilypond/current/ly
Same init tree inside the app bundle resources. Override with the data directory variable. Fonts follow the bundle layout beside it.
/usr/share/lilypond/[Version]/ly
Package manager tree with versioned ly, scm, ps and fonts folders. Font aliases register through the font config file. Override with the data directory variable.
Frequently asked questions
Where is the LilyPond preferences file?
There is none by design. Defaults live in the init files under the install data tree in this post. Override them per score with include statements or point the data directory variable at a custom tree for machine wide changes.
How do I point LilyPond at custom fonts and includes?
Set the data directory variable to a folder with ly, tex and fonts subfolders matching the install layout. Pass include paths on the command line for per project libraries. Keep custom fonts beside the scores that use them for portable builds.
Notice an outdated path? Let us know.