font-manager.sh 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. #!/bin/bash
  2. # ~/.local/bin/font-manager
  3. # This script extracts font archives and rebuilds font cache
  4. FONT_DIR="$HOME/.local/share/fonts"
  5. ARCHIVE_DIR="$FONT_DIR/archives"
  6. ACTIVE_DIR="$FONT_DIR/active"
  7. # Function to extract a specific font archive
  8. extract_font() {
  9. local archive="$1"
  10. if [ -f "$ARCHIVE_DIR/$archive.tar.gz" ]; then
  11. echo "Extracting $archive fonts..."
  12. tar -xzf "$ARCHIVE_DIR/$archive.tar.gz" -C "$ACTIVE_DIR"
  13. fc-cache -f
  14. echo "Done! $archive fonts are now active."
  15. else
  16. echo "Error: Font archive $archive.tar.gz not found."
  17. exit 1
  18. fi
  19. }
  20. # Function to list available font archives
  21. list_fonts() {
  22. echo "Available font archives:"
  23. ls -1 "$ARCHIVE_DIR" | sed 's/\.tar\.gz$//'
  24. }
  25. # Function to rebuild font cache
  26. rebuild_cache() {
  27. echo "Rebuilding font cache..."
  28. fc-cache -f
  29. echo "Done!"
  30. }
  31. # Function to extract all fonts
  32. extract_all() {
  33. echo "Extracting all font archives..."
  34. for archive in "$ARCHIVE_DIR"/*.tar.gz; do
  35. tar -xzf "$archive" -C "$ACTIVE_DIR"
  36. done
  37. fc-cache -f
  38. echo "Done! All fonts are now active."
  39. }
  40. # Function to clean active fonts directory
  41. clean_fonts() {
  42. echo "Cleaning active fonts directory..."
  43. find "$ACTIVE_DIR" -type f -name "*.ttf" -o -name "*.otf" | xargs rm -f
  44. echo "Done! Active fonts directory is now clean."
  45. }
  46. # Main script logic
  47. case "$1" in
  48. "extract")
  49. extract_font "$2"
  50. ;;
  51. "list")
  52. list_fonts
  53. ;;
  54. "rebuild")
  55. rebuild_cache
  56. ;;
  57. "all")
  58. extract_all
  59. ;;
  60. "clean")
  61. clean_fonts
  62. ;;
  63. *)
  64. echo "Usage: font-manager [command] [options]"
  65. echo "Commands:"
  66. echo " extract [name] Extract specific font archive"
  67. echo " list List available font archives"
  68. echo " rebuild Rebuild font cache"
  69. echo " all Extract all font archives"
  70. echo " clean Remove all active fonts"
  71. ;;
  72. esac