dotfiles/font-manager.sh
2025-04-21 12:17:14 -03:00

79 lines
1.8 KiB
Bash
Executable file

#!/bin/bash
# ~/.local/bin/font-manager
# This script extracts font archives and rebuilds font cache
FONT_DIR="$HOME/.local/share/fonts"
ARCHIVE_DIR="$FONT_DIR/archives"
ACTIVE_DIR="$FONT_DIR/active"
# Function to extract a specific font archive
extract_font() {
local archive="$1"
if [ -f "$ARCHIVE_DIR/$archive.tar.gz" ]; then
echo "Extracting $archive fonts..."
tar -xzf "$ARCHIVE_DIR/$archive.tar.gz" -C "$ACTIVE_DIR"
fc-cache -f
echo "Done! $archive fonts are now active."
else
echo "Error: Font archive $archive.tar.gz not found."
exit 1
fi
}
# Function to list available font archives
list_fonts() {
echo "Available font archives:"
ls -1 "$ARCHIVE_DIR" | sed 's/\.tar\.gz$//'
}
# Function to rebuild font cache
rebuild_cache() {
echo "Rebuilding font cache..."
fc-cache -f
echo "Done!"
}
# Function to extract all fonts
extract_all() {
echo "Extracting all font archives..."
for archive in "$ARCHIVE_DIR"/*.tar.gz; do
tar -xzf "$archive" -C "$ACTIVE_DIR"
done
fc-cache -f
echo "Done! All fonts are now active."
}
# Function to clean active fonts directory
clean_fonts() {
echo "Cleaning active fonts directory..."
find "$ACTIVE_DIR" -type f -name "*.ttf" -o -name "*.otf" | xargs rm -f
echo "Done! Active fonts directory is now clean."
}
# Main script logic
case "$1" in
"extract")
extract_font "$2"
;;
"list")
list_fonts
;;
"rebuild")
rebuild_cache
;;
"all")
extract_all
;;
"clean")
clean_fonts
;;
*)
echo "Usage: font-manager [command] [options]"
echo "Commands:"
echo " extract [name] Extract specific font archive"
echo " list List available font archives"
echo " rebuild Rebuild font cache"
echo " all Extract all font archives"
echo " clean Remove all active fonts"
;;
esac