1
0
mirror of https://github.com/aquatix/dotfiles.git synced 2025-12-06 22:55:10 +01:00
Files
dotfiles/bin/font_update

231 lines
7.7 KiB
Bash
Executable File

#!/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