fontctrl is a minimal, symlink based font manager for GNU/Linux. It handles installation, removal, and management of fonts, keeping your custom fonts easy to install, remove and manage. Because it is symlink based, fonts can be toggled on/off without removing them. This is useful if you only want to temporarily remove a font from your system.
This also makes it safer and easier to manage fonts because fontctrl will only touch fonts that it has installed. Any fonts your package manager installed will be left alone as-is. Because of this, it is less likely to break when removing fonts and other than creating symlinks in the font directory, it keeps your system cleaner than installing fonts manually.
Why would you use a font manager? I'm not new to GNU/Linux, I know how to install fonts.
fontctrl was not created to assist new people in installing fonts. Those people probably already use some desktop environment like GNOME, KDE or XFCE which comes with a graphical font manager built in. fontctrl is more for those people who have a lot of fonts and find it difficult to keep track of them. Instead of managing the fonts your package manager installs (your package manager manages those so there's no point), fontctrl tries to manage user-installed fonts.
What goals does fontctrl have?
fontctrl tries to be minimal in design. The entire tool is written in less than 300 lines of POSIX compliant shell script.
fontctrl uses symlinks to keep track of installed fonts. This allows fonts to be enabled/disabled temporarily while fontctrl stores them elsewhere. This keeps your system clean as fontctrl only touches ~/.config/fontctrl and the font directories on your system (just for placing symlinks when enabled). You can think of this as similar to Gentoo's
fontctrl tries to be hackable in design, meaning the user can easily add in any features he wants fontctrl to have. I accept pull requests that improve the project in some way or add new features if I see them as worth adding.
fontctrl is for fast installing and managing of fonts. As of 1.2 it also supports installing and managing of fonts in batch.
How do I install fontctrl?
fontctrl can be installed using the
git command. Simply clone the repository, cd into it and
There will also be an ebuild on my Gentoo overlay for fontctrl but it is not complete yet.
How do I use fontctrl?
Every argument fontctrl has to offer can be seen by running
fontctrl has two ways to install fonts, globally and for the current user. Installing fonts globally requires superuser priviliges while installing for the current user does not. If you install fonts globally, the path for the actual font files are going to be in /etc/fontctrl/fonts and if you install for the current user, they are going to be placed in ~/.config/fontctrl/fonts.
Start by downloading a font. After installing fontctrl, you can run
fontctrl install font followed by --global if you want to install it globally. You can also add --user if you want but if not 4th argument is specified, the font will be installed for the current user only. Note that font means the font you just downloaded.
install command just installed the actual font file. Before we can use the font, we need to enable it. This can be done using
fontctrl list followed by either --global or --user. Then you can
fontctrl enable font followed by either --global or --user. Note that font here needs to be the font you want to enable. It should be listed when you ran fontctrl list. You only need to enter part of the filename, not the entire font.
After the font is enabled, your applications should be able to use it. If you want to use it with something like dwm or st, run
fc-list | grep fontname.
For removal of fonts, the steps are the exact same except replace 'install' with 'remove' and 'enable' with 'disable'.
For more information, run fontctrl help.
If you are not able to figure out fontctrl, note that most issues are mentioned in the fontctrl help command. If you find a bug, consider reporting it using codeberg's 'Issues' feature. You can also send me an email if you want.
Support this project
You can send Monero to this address: