Skip to content

fam007e/nerd_fonts_installer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

36 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๐Ÿš€ Nerd Fonts Installer

An interactive installer for Nerd Fonts with automatic distribution detection and dependency management.

GitHub stars License: MIT Packaging status


โœจ Features

  • ๐Ÿง Cross-platform Support - Works on Arch, Debian, Ubuntu, Fedora, CentOS, RHEL, and Linux Mint
  • ๐Ÿ“ฆ Automatic Dependencies - Installs curl, unzip, and fontconfig automatically
  • ๐Ÿ” Live Font Discovery - Fetches current font list from Nerd Fonts GitHub API
  • ๐ŸŽฏ Interactive Selection - Choose specific fonts or install all with one command
  • ๐Ÿ  Smart Installation - Installs to ~/.local/share/fonts with automatic cache updates
  • ๐ŸŽจ Beautiful Interface - Colorful terminal output for better user experience
  • ๐Ÿ›ก๏ธ Robust Error Handling - Comprehensive error checking and recovery
  • โšก High Performance - C version optimized for speed and memory efficiency

๐Ÿš€ Quick Start

One-Line Installation (Recommended)

curl -sSLo nerdfonts-installer https://github.com/fam007e/nerd_fonts_installer/releases/latest/download/nerdfonts-installer && chmod +x nerdfonts-installer && sudo mv nerdfonts-installer /usr/local/bin/

Then run:

nerdfonts-installer

๐Ÿ“ฅ Installation Methods

๐ŸŽฏ Method 1: AUR (Arch Linux Users)

Click to expand AUR installation options
# Using yay (recommended)
yay -S nerdfonts-installer-bin

# Using paru
paru -S nerdfonts-installer-bin

# Manual installation
git clone https://aur.archlinux.org/nerdfonts-installer-bin.git
cd nerdfonts-installer-bin
makepkg -si

๐Ÿ“ฆ Method 2: Pre-built Binary

# Download and install
curl -sSLo nerdfonts-installer https://github.com/fam007e/nerd_fonts_installer/releases/latest/download/nerdfonts-installer
chmod +x nerdfonts-installer
sudo mv nerdfonts-installer /usr/local/bin/

๐Ÿ”จ Method 3: Build from Source

Click to expand build instructions

Install build dependencies:

# Arch Linux / Manjaro
sudo pacman -S gcc make curl jansson

# Ubuntu / Debian / Linux Mint
sudo apt-get install build-essential libcurl4-openssl-dev libjansson-dev

# Fedora
sudo dnf install gcc make libcurl-devel jansson-devel

# CentOS / RHEL
sudo yum install gcc make libcurl-devel jansson-devel

Build and install:

git clone https://github.com/fam007e/nerd_fonts_installer.git
cd nerd_fonts_installer
make
sudo cp nerdfonts-installer /usr/local/bin/

๐ŸŽฎ Usage

Interactive Mode

Simply run:

nerdfonts-installer

Example Session

$ nerdfonts-installer
Detected OS: arch, Package Manager: sudo pacman
Creating directory: /home/fam007e/.local/share/fonts
Creating directory: /home/fam007e/tmp
Fetching available fonts from GitHub...
Found 70 available fonts
Select fonts to install (separate with spaces, or enter "all" to install all fonts):
---------------------------------------------
1. 0xProto                    21. DroidSansMono             41. JetBrainsMono             61. SourceCodePro
2. 3270                       22. EnvyCodeR                 42. Lekton                    62. SpaceMono
3. AdwaitaMono                23. FantasqueSansMono         43. LiberationMono            63. Terminus
4. Agave                      24. FiraCode                  44. Lilex                     64. Tinos
5. AnonymousPro               25. FiraMono                  45. MPlus                     65. Ubuntu
6. Arimo                      26. GeistMono                 46. MartianMono               66. UbuntuMono
7. AtkinsonHyperlegibleMono   27. Go-Mono                   47. Meslo                     67. UbuntuSans
8. AurulentSansMono           28. Gohu                      48. Monaspace                 68. VictorMono
9. BigBlueTerminal            29. Hack                      49. Monofur                   69. ZedMono
10. BitstreamVeraSansMono     30. Hasklig                   50. Monoid                    70. iA-Writer
11. CascadiaCode              31. HeavyData                 51. Mononoki
12. CascadiaMono              32. Hermit                    52. NerdFontsSymbolsOnly
13. CodeNewRoman              33. IBMPlexMono               53. Noto
14. ComicShannsMono           34. Inconsolata               54. OpenDyslexic
15. CommitMono                35. InconsolataGo             55. Overpass
16. Cousine                   36. InconsolataLGC            56. ProFont
17. D2Coding                  37. IntelOneMono              57. ProggyClean
18. DaddyTimeMono             38. Iosevka                   58. Recursive
19. DejaVuSansMono            39. IosevkaTerm               59. RobotoMono
20. DepartureMono             40. IosevkaTermSlab           60. ShareTechMono
---------------------------------------------
Enter the numbers of the fonts to install (e.g., "1 2 3") or type "all" to install all fonts:

๐Ÿ–ฅ๏ธ Alternative: Shell Script Version

For minimal dependencies or systems without build tools:

# Run directly (no installation required)
curl -sSL https://raw.githubusercontent.com/fam007e/nerd_fonts_installer/main/nerdfonts_installer.sh | bash

# Or download first
wget https://raw.githubusercontent.com/fam007e/nerd_fonts_installer/main/nerdfonts_installer.sh
chmod +x nerdfonts_installer.sh
./nerdfonts_installer.sh

๐Ÿง Supported Distributions

Distribution Package Manager Status Notes
Arch Linux pacman โœ… AUR package available
Manjaro pacman โœ… Full compatibility
EndeavourOS pacman โœ… Full compatibility
Ubuntu apt-get โœ… All LTS versions
Debian apt-get โœ… Stable and testing
Linux Mint apt-get โœ… All versions
Fedora dnf โœ… Recent versions
CentOS yum โœ… 7, 8, Stream
RHEL yum โœ… 7, 8, 9

Note: Other distributions may work but are not officially tested.


๐Ÿ”ง Technical Details

๐Ÿ“‹ Dependencies

Runtime Dependencies
  • curl - Downloads fonts and makes API requests
  • unzip - Extracts font archives
  • fontconfig - Manages font cache and detection

All dependencies are installed automatically if missing.

Build Dependencies (C version)
  • gcc - GNU Compiler Collection
  • make - Build automation
  • libcurl-dev - HTTP client library
  • libjansson-dev - JSON parsing library

๐Ÿ“ Font Installation

Fonts are installed to ~/.local/share/fonts/ following XDG specifications:

  • โœ… No root required - User-local installation
  • โœ… Automatic detection - Scanned by fontconfig
  • โœ… Standard location - Compatible with all applications
  • โœ… Easy management - Simple to backup or remove

โšก Performance Comparison

Version Dependencies Speed Memory Error Handling JSON Parsing Recommended Use
C Binary libcurl, libjansson ๐Ÿ”ฅ Fast ๐Ÿ’š Low ๐Ÿ›ก๏ธ Advanced ๐Ÿš€ Native Production, Daily use
Shell Script bash, curl, unzip ๐ŸŒ Slower ๐ŸŸก Higher โš ๏ธ Basic ๐Ÿ”ง awk-based Testing, Quick installs

๐Ÿ› ๏ธ Development

Building Locally

# Clone the repository
git clone https://github.com/fam007e/nerd_fonts_installer.git
cd nerd_fonts_installer

# Build the C version
make

# Test the build
./nerdfonts-installer

# Clean build artifacts
make clean

๐Ÿ“ Project Structure

๐Ÿ“ฆ nerd_fonts_installer/
โ”œโ”€โ”€ ๐Ÿ“„ nerdfonts_installer.c    # Main C implementation
โ”œโ”€โ”€ ๐Ÿ“„ nerdfonts_installer.sh   # Shell script version
โ”œโ”€โ”€ ๐Ÿ“„ Makefile                 # Build configuration
โ”œโ”€โ”€ ๐Ÿ“„ LICENSE                 # MIT license
โ””โ”€โ”€ ๐Ÿ“„ README.md               # Documentation

๐Ÿค Contributing

We welcome contributions! Here's how you can help:

๐Ÿ› Report Issues

Found a bug? Open an issue with:

  • Steps to reproduce
  • Expected vs actual behavior
  • System information (OS, version)

๐Ÿ’ก Feature Requests

Have an idea? We'd love to hear it! Include:

  • Use case description
  • Proposed solution
  • Benefits to users

๐Ÿ”ง Code Contributions

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

๐Ÿ“‹ Development Guidelines

  • C code: Follow C11 standard with comprehensive error handling
  • Shell scripts: Maintain POSIX compliance where possible
  • Testing: Verify functionality across multiple distributions
  • Documentation: Update README for user-facing changes

๐Ÿ“œ License

This project is licensed under the MIT License - see the LICENSE file for details.


๐Ÿ™ Credits & Acknowledgments

  • ๐ŸŽจ Nerd Fonts: Huge thanks to @ryanoasis for the incredible Nerd Fonts project
  • ๐Ÿ”Œ GitHub API: For providing reliable font metadata
  • ๐Ÿง Linux Community: For inspiration and feedback

๐Ÿ“ž Support & Links


๐ŸŒŸ Star History

Star History Chart


๐Ÿ’– Made with love for the Linux community

If this project helped you, please consider giving it a โญ!

โฌ†๏ธ Back to top

About

Script to install Nerd-Fonts.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •