install_latest_jetbrains_mono.info
Automate the installation of the latest JetBrains Mono font. This script fetches the latest release from GitHub, downloads it, installs it system-wide, and performs clean-up. Comprehensive error handling ensures reliable execution.
ChatGPT has contributed to this document. Therefore, it’s advisable to treat the information here with caution and verify it if necessary.
Let’s break down what this script does in detail. The script is named
install_latest_jetbrains_mono.sh
, authored by GJS (homelab-alpha), and its
purpose is to fetch the latest version of JetBrains Mono from the official
GitHub repository, download it, install it to the system-wide fonts directory,
and clean up the downloaded files.
Here’s a detailed explanation:
Script Metadata
- Filename:
install_latest_jetbrains_mono.sh
- Author: GJS (homelab-alpha)
- Date: Jul 05, 2024
- Version: 1.1.0
- Description: The script fetches the latest version of JetBrains Mono from the official GitHub repository, downloads it, installs it to the system-wide fonts directory, and cleans up the downloaded files.
- Usage:
sudo ./install_latest_jetbrains_mono.sh
- RAW Script: install_latest_jetbrains_mono.sh
Fetching the Latest Version
The script starts by fetching the latest version of JetBrains Mono using the
GitHub API. It uses curl
to send a request to the GitHub API endpoint for
JetBrains Mono releases and grep
to extract the tag name of the latest
release. The tag name, which includes the version number, is then cleaned up
using sed
to isolate just the version number.
LATEST_VERSION=$(curl -s https://api.github.com/repos/JetBrains/JetBrainsMono/releases/latest | grep '"tag_name":' | sed -E 's/.*"v([^"]+)".*/\1/')
Error Handling for Version Fetching
The script checks if the version fetching was successful by verifying if the
LATEST_VERSION
variable is not empty. If it is empty, an error message is
displayed, and the script exits with a status of 1.
if [ -z "$LATEST_VERSION" ]; then
echo "Failed to fetch the latest version of JetBrains Mono."
exit 1
fi
Constructing the Download URL
Using the fetched version number, the script constructs the URL to download the latest JetBrains Mono zip file.
DOWNLOAD_URL="https://github.com/JetBrains/JetBrainsMono/releases/download/v${LATEST_VERSION}/JetBrainsMono-${LATEST_VERSION}.zip"
Defining the Download Directory
The script defines a directory where the downloaded file will be saved. In this
case, it uses the Downloads
directory in the user’s home directory.
DOWNLOAD_DIR="$HOME/Downloads"
Checking and Creating the Download Directory
The script checks if the download directory exists, and if not, it creates it.
if [ ! -d "$DOWNLOAD_DIR" ]; then
mkdir -p "$DOWNLOAD_DIR"
echo "Created directory: $DOWNLOAD_DIR"
fi
Downloading the Latest Version
The script uses wget
to download the JetBrains Mono zip file to the specified
download directory.
wget -v "$DOWNLOAD_URL" -O "$DOWNLOAD_DIR"/JetBrainsMono-"${LATEST_VERSION}".zip
Error Handling for Downloading
It checks if wget
successfully downloaded the file by verifying its existence.
If the download fails, an error message is displayed, and the script exits with
a status of 1.
if [ ! -f "$DOWNLOAD_DIR"/JetBrainsMono-"${LATEST_VERSION}".zip ]; then
echo "Failed to download JetBrains Mono version ${LATEST_VERSION}."
exit 1
fi
echo "Successfully downloaded JetBrains Mono version ${LATEST_VERSION} to $DOWNLOAD_DIR."
Extracting the Downloaded File
The script extracts the contents of the downloaded zip file to the download
directory using unzip
.
unzip "$DOWNLOAD_DIR"/JetBrainsMono-"${LATEST_VERSION}".zip -d "$DOWNLOAD_DIR/JetBrainsMono-${LATEST_VERSION}"
Preparing the Installation Directory
The script creates the target directory /usr/share/fonts/jetbrains-mono
if it
does not already exist.
JETBRAINS_MONO_DIR="/usr/share/fonts/jetbrains-mono"
if [ ! -d "$JETBRAINS_MONO_DIR" ]; then
sudo mkdir -p "$JETBRAINS_MONO_DIR"
echo "Created directory: $JETBRAINS_MONO_DIR"
fi
Removing Previous Installations
To avoid conflicts, the script removes any previous installations of JetBrains Mono fonts in the target directory.
sudo rm -rf $JETBRAINS_MONO_DIR/*
Moving Files to the Installation Directory
The script moves the font files to the system-wide fonts directory.
sudo mv "$DOWNLOAD_DIR/JetBrainsMono-${LATEST_VERSION}/fonts/"* $JETBRAINS_MONO_DIR
Verifying the Installation
It checks if the font files were successfully moved to the target directory. If the files are not found, an error message is displayed, and the script exits with a status of 1.
if [ ! -f "$JETBRAINS_MONO_DIR/ttf/JetBrainsMono-Regular.ttf" ]; then
echo "Failed to move JetBrains Mono fonts to $JETBRAINS_MONO_DIR."
exit 1
fi
echo "Successfully installed JetBrains Mono version ${LATEST_VERSION} to $JETBRAINS_MONO_DIR."
Updating the Font Cache
The script updates the font cache to make the new fonts available system-wide.
sudo fc-cache -f -v
Cleaning Up
The script removes the downloaded zip file and the extracted directory to clean up unnecessary files.
rm "$DOWNLOAD_DIR"/JetBrainsMono-"${LATEST_VERSION}".zip
rm -r "$DOWNLOAD_DIR/JetBrainsMono-${LATEST_VERSION}"
echo "Cleanup complete."
echo ""
Verifying the Installation by Listing Installed Fonts
Finally, the script checks if the JetBrains Mono font was successfully installed by listing installed fonts and checking for its presence. If the font is not found, an error message is displayed; otherwise, a success message is shown.
if ! fc-list | grep -q "JetBrains Mono"; then
echo "JetBrains Mono font not found. Installation may have failed."
exit 1
else
echo "JetBrains Mono font successfully installed."
fi
Conclusion
This script automates the process of downloading and installing the latest version of JetBrains Mono, ensuring that users always have the most up-to-date version with minimal manual intervention. It includes comprehensive error handling and provides clear instructions for users to finalize their setup if necessary.
Last updated 22 Sep 2024, 12:15 CEST .