#!/bin/bash function install_font { if [ -e "$2" ] && [ ! -L "$2" ]; then echo "Already exists as real file: $2" elif [ -L "$2" ]; then echo "Skipped: $2" else echo "Linked font: $2" ln -s "$1" "$2" fi } IFS=$'\n' FONTS_CODING=$'Hack/Bold/complete/Hack Bold Nerd Font Complete Mono.ttf Hack/Regular/complete/Hack Regular Nerd Font Complete Mono.ttf Hack/BoldItalic/complete/Hack Bold Italic Nerd Font Complete Mono.ttf Hack/Italic/complete/Hack Italic Nerd Font Complete Mono.ttf FiraCode/Bold/complete/Fira Code Bold Nerd Font Complete Mono.ttf FiraCode/Regular/complete/Fira Code Regular Nerd Font Complete Mono.ttf SourceCodePro/Bold/complete/Sauce Code Pro Bold Nerd Font Complete Mono.ttf SourceCodePro/Regular/complete/Sauce Code Pro Nerd Font Complete Mono.ttf SourceCodePro/Light/complete/Sauce Code Pro Light Nerd Font Complete Mono.ttf SourceCodePro/Light-Italic/complete/Sauce Code Pro Light Italic Nerd Font Complete Mono.ttf' FONTS_FUTURA=$'Futura-Std-Bold_19042.ttf Futura-Std-Bold-Oblique_19041.ttf Futura-Std-Book_19044.ttf Futura-Std-Book-Oblique_19043.ttf' FONTS_OVERPASS=$'Overpass-BlackItalic.ttf Overpass-Black.ttf Overpass-BoldItalic.ttf Overpass-Bold.ttf Overpass-ExtraBoldItalic.ttf Overpass-ExtraBold.ttf Overpass-ExtraLightItalic.ttf Overpass-ExtraLight.ttf Overpass-Italic.ttf Overpass-LightItalic.ttf Overpass-Light.ttf Overpass-MediumItalic.ttf Overpass-Medium.ttf Overpass-Regular.ttf Overpass-SemiBoldItalic.ttf Overpass-SemiBold.ttf Overpass-ThinItalic.ttf Overpass-Thin.ttf' FONTS_JETBRAINS=$'JetBrainsMono-BoldItalic.ttf JetBrainsMono-Bold.ttf JetBrainsMono-ExtraBoldItalic.ttf JetBrainsMono-ExtraBold.ttf JetBrainsMono-Italic.ttf JetBrainsMono-MediumItalic.ttf JetBrainsMono-Medium.ttf JetBrainsMono-Regular.ttf' FONTS_GO=$'Go-Bold-Italic.ttf Go-Bold.ttf Go-Italic.ttf Go-Medium-Italic.ttf Go-Medium.ttf Go-Regular.ttf Go-Smallcaps-Italic.ttf Go-Smallcaps.ttf' FONTS_RUBIK=$'Rubik-BlackItalic.ttf Rubik-Black.ttf Rubik-BoldItalic.ttf Rubik-Bold.ttf Rubik-Italic.ttf Rubik-LightItalic.ttf Rubik-Light.ttf Rubik-MediumItalic.ttf Rubik-Medium.ttf Rubik-Regular.ttf' # https://github.com/eosrei/emojione-color-font/ # FONTS_VARIOUS=$'EmojiOneColor-SVGinOT.ttf' FONTS_DELETE=$'Sauce Code Pro Medium Plus Nerd File Types Plus Font Awesome Plus Octicons Plus Pomicons.ttf Sauce Code Pro Bold Plus Nerd File Types Mono Plus Font Awesome Plus Octicons Plus Pomicons.ttf Sauce Code Pro Medium Plus Nerd File Types Mono Plus Font Awesome Plus Octicons Plus Pomicons.ttf Knack Bold Plus Nerd File Types Mono Plus Font Awesome Plus Octicons Plus Pomicons.ttf Knack Plus Nerd File Types Mono Plus Font Awesome Plus Octicons Plus Pomicons.ttf Knack BoldOblique Plus Nerd File Types Plus Font Awesome Plus Octicons Plus Pomicons.ttf Knack RegularOblique Plus Nerd File Types Plus Font Awesome Plus Octicons Plus Pomicons.ttf Knack Bold Nerd Font Complete Mono.ttf Knack Regular Nerd Font Complete Mono.ttf Knack Bold Italic Nerd Font Complete Mono.ttf Knack Italic Nerd Font Complete Mono.ttf overpass-bold-italic.otf overpass-bold.otf overpass-extrabold-italic.otf overpass-extrabold.otf overpass-extralight-italic.otf overpass-extralight.otf overpass-heavy-italic.otf overpass-heavy.otf overpass-italic.otf overpass-light-italic.otf overpass-light.otf overpass-regular.otf overpass-semibold-italic.otf overpass-semibold.otf overpass-thin-italic.otf overpass-thin.otf' if [ -e ~/.dot_is_server ]; then # Update from the repo echo "== Nerd fonts ======" PARENT_DIR="/stuff/system/fonts" SOURCE_DIR="/stuff/system/fonts/nerd-fonts/patched-fonts" DEST_DIR="/stuff/system/sync/fonts/active" #if [ -d "$PARENT_DIR" ] && [ -d "$SOURCE_DIR" ] && [ -d "$DEST_DIR" ]; then if [ -d "$PARENT_DIR" ] && [ -d "$DEST_DIR" ]; then cd "$PARENT_DIR" # git pull --all #git clone --depth=1 https://github.com/ryanoasis/nerd-fonts.git cd "$SOURCE_DIR" while read -r FONT; do echo "Copied font: $FONT" cp -a "$SOURCE_DIR/$FONT" "$DEST_DIR" done <<< "$FONTS_CODING" else echo "$PARENT_DIR, $SOURCE_DIR or $DEST_DIR not found, aborting" fi # Update from the repo echo "== Jetbrains Mono ======" SOURCE_DIR="/stuff/system/fonts/JetBrainsMono/fonts/ttf" DEST_DIR="/stuff/system/sync/fonts/active" if [ -d "$SOURCE_DIR" ] && [ -d "$DEST_DIR" ]; then cd "$SOURCE_DIR" git pull --all while read -r FONT; do echo "Copied font: $FONT" cp -a "$SOURCE_DIR/$FONT" "$DEST_DIR" done <<< "$FONTS_JETBRAINS" else echo "$SOURCE_DIR or $DEST_DIR not found, aborting" fi # Update from the repo echo "== Overpass ======" SOURCE_DIR="/stuff/system/fonts/Overpass/fonts/ttf" DEST_DIR="/stuff/system/sync/fonts/active" if [ -d "$SOURCE_DIR" ] && [ -d "$DEST_DIR" ]; then cd "$SOURCE_DIR" git pull --all while read -r FONT; do echo "Copied font: $FONT" cp -a "$SOURCE_DIR/$FONT" "$DEST_DIR" done <<< "$FONTS_OVERPASS" else echo "$SOURCE_DIR or $DEST_DIR not found, aborting" fi # Update from the repo echo "== Go ======" SOURCE_DIR="/stuff/system/fonts/Go/image/font/gofont/ttfs" DEST_DIR="/stuff/system/sync/fonts/active" if [ -d "$SOURCE_DIR" ] && [ -d "$DEST_DIR" ]; then cd "$SOURCE_DIR" git pull --all while read -r FONT; do echo "Copied font: $FONT" cp -a "$SOURCE_DIR/$FONT" "$DEST_DIR" done <<< "$FONTS_GO" else echo "$SOURCE_DIR or $DEST_DIR not found, aborting" fi echo "== DONE ======" else # Create symlinks if needed SOURCE_DIR="$HOME/Downloads/sync/fonts/active" DEST_DIR="$HOME/.local/share/fonts" if [ ! -e "$DEST_DIR" ]; then mkdir -p "$DEST_DIR" fi if [ -d "$SOURCE_DIR" ]; then cd "$DEST_DIR" while read -r FONT; do FONT_FILE=$(basename "${SOURCE_DIR}/${FONT}") install_font "$SOURCE_DIR/$FONT_FILE" "$DEST_DIR/$FONT_FILE" done <<< "$FONTS_CODING" while read -r FONT; do install_font "$SOURCE_DIR/$FONT" "$DEST_DIR/$FONT" done <<< "$FONTS_JETBRAINS" while read -r FONT; do install_font "$SOURCE_DIR/$FONT" "$DEST_DIR/$FONT" done <<< "$FONTS_FUTURA" while read -r FONT; do install_font "$SOURCE_DIR/$FONT" "$DEST_DIR/$FONT" done <<< "$FONTS_OVERPASS" while read -r FONT; do install_font "$SOURCE_DIR/$FONT" "$DEST_DIR/$FONT" done <<< "$FONTS_GO" while read -r FONT; do install_font "$SOURCE_DIR/$FONT" "$DEST_DIR/$FONT" done <<< "$FONTS_RUBIK" # while read -r FONT; do # install_font "$SOURCE_DIR/$FONT" "$DEST_DIR/$FONT" # done <<< "$FONTS_VARIOUS" if [ ! -e "${HOME}/.config/fontconfig" ]; then mkdir -p "${HOME}/.config/fontconfig" fi if [ -L "${HOME}/.config/fontconfig/fonts.conf" ]; then # Remove the emoji-fallback config that causes crashes in Telegram Desktop (symlink) rm "${HOME}/.config/fontconfig/fonts.conf" fi # Delete obsolete fonts while read -r FONT; do if [ -L "$DEST_DIR/$FONT" ]; then echo "Deleting symlink $DEST_DIR/$FONT" rm "$DEST_DIR/$FONT" fi done <<< "$FONTS_DELETE" # Just to be sure, clear and refresh your font cache and restart Firefox fc-cache -f -v echo 'You might want to restart your browser' else echo "$SOURCE_DIR not found, aborting" fi if [ -d "$HOME/.fonts" ]; then echo "Mind that you do have a ~/.fonts dir too, which might contain older versions" fi fi