From be1220362b678dabda58e55822dde7587bd1dc1d Mon Sep 17 00:00:00 2001 From: Da_Person Date: Tue, 8 Jul 2025 16:01:59 -0700 Subject: [PATCH] Draft commit of a large refactor of the code --- .gitignore | 4 +- .shellcheckrc | 4 + CONTRIBUTING.md | 1 + assets/yad_0.40.0-1+b2_amd64.deb | Bin 167820 -> 0 bytes assets/yad_7.2-1_amd64.deb | Bin 0 -> 189520 bytes auto-install.sh | 38 +- install-scripts/00-dependencies.sh | 35 +- install-scripts/01-hypr-pkgs.sh | 91 +++-- install-scripts/02-pre-cleanup.sh | 82 ++-- install-scripts/03-Final-Check.sh | 64 ++-- install-scripts/Global_functions.sh | 482 +++++++++++++++++++---- install-scripts/InputGroup.sh | 36 +- install-scripts/ags.sh | 127 ++++--- install-scripts/aquamarine.sh | 51 +-- install-scripts/bluetooth.sh | 47 ++- install-scripts/colors.sh | 29 ++ install-scripts/dotfiles-branch.sh | 51 ++- install-scripts/fonts.sh | 99 +++-- install-scripts/gtk_themes.sh | 53 ++- install-scripts/hyprcursor.sh | 52 +-- install-scripts/hyprgraphics.sh | 51 +-- install-scripts/hypridle.sh | 56 +-- install-scripts/hyprland-protocols.sh | 50 +-- install-scripts/hyprland-qt-support.sh | 51 +-- install-scripts/hyprland-qtutils.sh | 50 +-- install-scripts/hyprland.sh | 69 ++-- install-scripts/hyprlang.sh | 52 +-- install-scripts/hyprlock.sh | 58 +-- install-scripts/hyprutils.sh | 51 +-- install-scripts/hyprwayland-scanner.sh | 51 +-- install-scripts/nvidia.sh | 152 +++++--- install-scripts/parse_args.sh | 254 +++++++++++++ install-scripts/sddm.sh | 109 ++++-- install-scripts/wallust.sh | 40 +- install-scripts/zsh.sh | 128 +++---- install.sh | 508 ++++++++++++------------- preset.sh | 34 +- uninstall.sh | 19 +- 38 files changed, 1801 insertions(+), 1328 deletions(-) create mode 100644 .shellcheckrc delete mode 100644 assets/yad_0.40.0-1+b2_amd64.deb create mode 100644 assets/yad_7.2-1_amd64.deb create mode 100755 install-scripts/colors.sh create mode 100755 install-scripts/parse_args.sh diff --git a/.gitignore b/.gitignore index c51f00c..e36bb3e 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,5 @@ Install-Logs/* -!Install-Logs/.gitkeep \ No newline at end of file +!Install-Logs/.gitkeep + +faux-install-dir \ No newline at end of file diff --git a/.shellcheckrc b/.shellcheckrc new file mode 100644 index 0000000..0f53831 --- /dev/null +++ b/.shellcheckrc @@ -0,0 +1,4 @@ +# Notify shellcheck that we are sourcing external scripts +external-sources=true + +extended-analysis=true \ No newline at end of file diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 87b351a..2d53fe6 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -53,6 +53,7 @@ Thank you for your interest in contributing to KooL Hyprland Projects! We welcom - Update the **documentation** if necessary. - Add tests if applicable. - Make sure all tests pass or fully tested before submitting your changes. +- Use the `shellcheck` static analyzer or something similar for all scripts and minimize all warnings and eradicate errors. You cannot ignore warnings unless you have a good reason too. - Keep your pull request focused and avoid including unrelated changes. - Remember to follow the following files before submitting your changes. - [bug.yml](https://github.com/JaKooLit/Debian-Hyprland/blob/main/.github/ISSUE_TEMPLATE/bug.yml) - Use this template to create a report to help us improve. diff --git a/assets/yad_0.40.0-1+b2_amd64.deb b/assets/yad_0.40.0-1+b2_amd64.deb deleted file mode 100644 index 630b0d382bc1293672453b7721394fc0f7479d0b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 167820 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
E-BdU9kBnAghuHyy7TIqrs5`ZIE>rzK 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%0D|6F=`;HU<0`fX7# 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 z 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

-NJkaOYbm5>L< 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'xlvG6f98A+&ZlLtI)b*6q1{#LxcY}Eq05_`X! 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 /dev/null -then +if ! command -v git &>/dev/null; then echo "${INFO} Git not found! ${SKY_BLUE}Installing Git...${RESET}" - if ! sudo apt install -y git; then + if ! sudo apt install --assume-yes git; then echo "${ERROR} Failed to install Git. Exiting." exit 1 fi @@ -47,4 +49,4 @@ else cd "$Distro_DIR" || exit 1 chmod +x install.sh ./install.sh -fi \ No newline at end of file +fi diff --git a/install-scripts/00-dependencies.sh b/install-scripts/00-dependencies.sh index 3fd9bf1..275fb3d 100755 --- a/install-scripts/00-dependencies.sh +++ b/install-scripts/00-dependencies.sh @@ -3,7 +3,6 @@ # main dependencies # # 22 Aug 2024 - NOTE will trim this more down - # packages neeeded dependencies=( build-essential @@ -68,36 +67,44 @@ hyprland_dep=( ) build_dep=( - wlroots + wlroots ) ## WARNING: DO NOT EDIT BEYOND THIS LINE IF YOU DON'T KNOW WHAT YOU ARE DOING! ## -SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" + +set -euo pipefail +IFS=$'\n\t' + +SCRIPT_DIR=$(realpath "$(dirname "${BASH_SOURCE[0]}")") # Change the working directory to the parent directory of the script PARENT_DIR="$SCRIPT_DIR/.." -cd "$PARENT_DIR" || { echo "${ERROR} Failed to change directory to $PARENT_DIR"; exit 1; } # Source the global functions script -if ! source "$(dirname "$(readlink -f "$0")")/Global_functions.sh"; then - echo "Failed to source Global_functions.sh" - exit 1 -fi +source "$SCRIPT_DIR/Global_functions.sh" || { + echo "Failed to source $SCRIPT_DIR/Global_functions.sh" + exit 1 +} + +cd "$PARENT_DIR" || { + echo "${ERROR} Failed to change directory to $PARENT_DIR" + exit 1 +} # Set the name of the log file to include the current date and time -LOG="Install-Logs/install-$(date +%d-%H%M%S)_dependencies.log" +LOG="$PARENT_DIR/Install-Logs/install-$(date +%d-%H%M%S)_dependencies.log" # Installation of main dependencies -printf "\n%s - Installing ${SKY_BLUE}main dependencies....${RESET} \n" "${NOTE}" +echo -e "\n${NOTE} - Installing ${SKY_BLUE}main dependencies....${RESET}" for PKG1 in "${dependencies[@]}" "${hyprland_dep[@]}"; do - install_package "$PKG1" "$LOG" + install_package "$PKG1" "$LOG" done -printf "\n%.0s" {1..1} +newlines 1 for PKG1 in "${build_dep[@]}"; do - build_dep "$PKG1" "$LOG" + build_dep "$PKG1" "$LOG" done -printf "\n%.0s" {1..2} +newlines 2 diff --git a/install-scripts/01-hypr-pkgs.sh b/install-scripts/01-hypr-pkgs.sh index fb0e738..4730a1c 100755 --- a/install-scripts/01-hypr-pkgs.sh +++ b/install-scripts/01-hypr-pkgs.sh @@ -1,7 +1,7 @@ #!/bin/bash # 💫 https://github.com/JaKooLit 💫 # # Hyprland-Dots Packages # -# edit your packages desired here. +# edit your packages desired here. # WARNING! If you remove packages here, dotfiles may not work properly. # and also, ensure that packages are present in Debian Official Repo @@ -60,10 +60,10 @@ hypr_package_2=( qalculate-gtk ) -# packages to force reinstall +# packages to force reinstall force=( - imagemagick - wayland-protocols + imagemagick + wayland-protocols ) # List of packages to uninstall as it conflicts with swaync or causing swaync to not function properly @@ -88,69 +88,88 @@ uninstall=( ) ## WARNING: DO NOT EDIT BEYOND THIS LINE IF YOU DON'T KNOW WHAT YOU ARE DOING! ## -SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" -# Change the working directory to the parent directory of the script -PARENT_DIR="$SCRIPT_DIR/.." -cd "$PARENT_DIR" || { echo "${ERROR} Failed to change directory to $PARENT_DIR"; exit 1; } +set -euo pipefail +IFS=$'\n\t' + +SCRIPT_DIR=$(realpath "$(dirname "${BASH_SOURCE[0]}")") + +PARENT_DIR=$SCRIPT_DIR/.. # Source the global functions script -if ! source "$(dirname "$(readlink -f "$0")")/Global_functions.sh"; then - echo "Failed to source Global_functions.sh" - exit 1 -fi +source "$SCRIPT_DIR/Global_functions.sh" || { + echo "Failed to source Global_functions.sh" + exit 1 +} + +cd "$PARENT_DIR" || { + echo "${ERROR} Failed to change directory to $PARENT_DIR" + exit 1 +} # Set the name of the log file to include the current date and time -LOG="Install-Logs/install-$(date +%d-%H%M%S)_hypr-pkgs.log" +LOG="$PARENT_DIR/Install-Logs/install-$(date +%d-%H%M%S)_hypr-pkgs.log" # conflicting packages removal overall_failed=0 printf "\n%s - ${SKY_BLUE}Removing some packages${RESET} as it conflicts with KooL's Hyprland Dots \n" "${NOTE}" for PKG in "${uninstall[@]}"; do - uninstall_package "$PKG" 2>&1 | tee -a "$LOG" - if [ $? -ne 0 ]; then - overall_failed=1 - fi + ! uninstall_package "$PKG" 2>&1 | tee -a "$LOG" && overall_failed=1 done if [ $overall_failed -ne 0 ]; then - echo -e "${ERROR} Some packages failed to uninstall. Please check the log." + echo "${ERROR} Some packages failed to uninstall. Please check the log." fi -printf "\n%.0s" {1..1} +newlines 1 # Installation of main components printf "\n%s - Installing ${SKY_BLUE}KooL's hyprland necessary packages${RESET} .... \n" "${NOTE}" for PKG1 in "${hypr_package[@]}" "${hypr_package_2[@]}" "${Extra[@]}"; do - install_package "$PKG1" "$LOG" + install_package "$PKG1" "$LOG" done -printf "\n%.0s" {1..1} +newlines 1 for PKG2 in "${force[@]}"; do - re_install_package "$PKG2" "$LOG" + re_install_package "$PKG2" "$LOG" done -printf "\n%.0s" {1..1} -# install YAD from assets. NOTE This is downloaded from SID repo and sometimes +newlines 1 +# install YAD from assets. NOTE This is downloaded from EXPERIMENTAL repo and sometimes # Trixie is removing YAD for some strange reasons # Check if yad is installed -if ! command -v yad &> /dev/null; then - echo "${INFO} Installing ${YELLOW}YAD from assets${RESET} ..." - sudo dpkg -i assets/yad_0.40.0-1+b2_amd64.deb - sudo apt install -f -y - echo "${INFO} ${YELLOW}YAD from assets${RESET} succesfully installed ..." +if ! command -v yad &>/dev/null; then + echo "${INFO} Installing ${YELLOW}YAD from assets${RESET} ..." + if [[ $PEDANTIC_DRY -eq 1 ]]; then + echo "${NOTE} Not installing yad=7.2-1_amd64 from $PARENT_DIR/assets/yad_7.2-1_amd64.deb" + else + verbose_log "Installing $PARENT_DIR/assets/yad_.2-1_amd64.deb with dpkg -i" + sudo dpkg -i assets/yad_7.2-1_amd64.deb + verbose_log "Attempting to fix broken packages just in case." + sudo apt install --fix-broken --assume-yes + echo "${INFO} ${YELLOW}YAD from assets${RESET} succesfully installed ..." + fi fi -printf "\n%.0s" {1..2} +newlines 2 -# Install up-to-date Rust -echo "${INFO} Installing most ${YELLOW}up to date Rust compiler${RESET} ..." -curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y 2>&1 | tee -a "$LOG" +if [[ $DRY -eq 1 ]]; then + echo "${NOTE} I am not installing the Rust compiler." +else + # Install up-to-date Rust + echo "${INFO} Installing most ${YELLOW}up to date Rust compiler${RESET} ..." + curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y 2>&1 | tee -a "$LOG" +fi +# shellcheck disable=SC1091 source "$HOME/.cargo/env" -## making brightnessctl work -sudo chmod +s "$(which brightnessctl)" 2>&1 | tee -a "$LOG" || true +if [[ $PEDANTIC_DRY -eq 1 ]]; then + echo "${NOTE} Not setting setuid bit of $(which brightnessctl) executable." +else + ## making brightnessctl work + sudo chmod +s "$(which brightnessctl)" 2>&1 | tee -a "$LOG" || true +fi -printf "\n%.0s" {1..2} +newlines 2 diff --git a/install-scripts/02-pre-cleanup.sh b/install-scripts/02-pre-cleanup.sh index 9864ac3..6deef5f 100755 --- a/install-scripts/02-pre-cleanup.sh +++ b/install-scripts/02-pre-cleanup.sh @@ -9,46 +9,66 @@ TARGET_DIR="/usr/local/bin" # Define packages to manually remove (was manually installed previously) PACKAGES=( - hyprctl - hyprpm - hyprland - Hyprland - cliphist - pypr - swappy - waybar - magick + hyprctl + hyprpm + hyprland + Hyprland + hyprwayland-scanner + hyprcursor-util + hyprland-update-screen + hyprland-dialog + hyprland-share-picker + hyprlock + hypridle + cliphist + pypr + swappy + waybar + magick ) ## WARNING: DO NOT EDIT BEYOND THIS LINE IF YOU DON'T KNOW WHAT YOU ARE DOING! ## -SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" + +set -euo pipefail +IFS=$'\n\t' + +SCRIPT_DIR=$(realpath "$(dirname "${BASH_SOURCE[0]}")") + +PARENT_DIR="$SCRIPT_DIR/.." +source "$SCRIPT_DIR/colors.sh" || { + echo "Failed to source $SCRIPT_DIR/colors.sh" + exit 1 +} + +source "$SCRIPT_DIR/parse_args.sh" || { + echo "${ERROR} Failed to source $SCRIPT_DIR/parse_args.sh" + exit 1 +} # Change the working directory to the parent directory of the script -PARENT_DIR="$SCRIPT_DIR/.." -cd "$PARENT_DIR" || { echo "${ERROR} Failed to change directory to $PARENT_DIR"; exit 1; } - -# Source the global functions script -if ! source "$(dirname "$(readlink -f "$0")")/Global_functions.sh"; then - echo "Failed to source Global_functions.sh" - exit 1 -fi +cd "$PARENT_DIR" || { + echo "${ERROR} Failed to change directory to $PARENT_DIR" + exit 1 +} # Set the name of the log file to include the current date and time -LOG="Install-Logs/install-$(date +%d-%H%M%S)_pre-clean-up.log" +LOG="$PARENT_DIR/Install-Logs/install-$(date +%d-%H%M%S)_pre-clean-up.log" # Loop through the list of packages for PKG_NAME in "${PACKAGES[@]}"; do - # Construct the full path to the file - FILE_PATH="$TARGET_DIR/$PKG_NAME" + # Construct the full path to the file + FILE_PATH="$TARGET_DIR/$PKG_NAME" - # Check if the file exists - if [[ -f "$FILE_PATH" ]]; then - # Delete the file - sudo rm "$FILE_PATH" - echo "Deleted: $FILE_PATH" 2>&1 | tee -a "$LOG" - else - echo "File not found: $FILE_PATH" 2>&1 | tee -a "$LOG" - fi + # Check if the file exists + if [[ -f "$FILE_PATH" ]]; then + if [[ $DRY -eq 1 ]]; then + echo "${NOTE} Not removing $FILE_PATH." + else + # Delete the file + sudo rm "$FILE_PATH" + echo "Deleted: $FILE_PATH" 2>&1 | tee -a "$LOG" + fi + else + echo "File not found: $FILE_PATH" 2>&1 | tee -a "$LOG" + fi done - -clear \ No newline at end of file diff --git a/install-scripts/03-Final-Check.sh b/install-scripts/03-Final-Check.sh index 259a9ee..0aca75c 100755 --- a/install-scripts/03-Final-Check.sh +++ b/install-scripts/03-Final-Check.sh @@ -4,59 +4,57 @@ # NOTE: These package checks are only the essentials packages=( - imagemagick - sway-notification-center - waybar - wl-clipboard - cliphist - wlogout - kitty - hyprland + imagemagick + sway-notification-center + waybar + wl-clipboard + cliphist + wlogout + kitty ) # Local packages that should be in /usr/local/bin/ local_pkgs_installed=( - rofi - hypridle - hyprlock - wallust + rofi + hypridle + hyprlock + hyprland + wallust ) local_pkgs_installed_2=( - swww + swww ) ## WARNING: DO NOT EDIT BEYOND THIS LINE IF YOU DON'T KNOW WHAT YOU ARE DOING! ## -SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" -# Change the working directory to the parent directory of the script +set -euo pipefail +IFS=$'\n\t' + +SCRIPT_DIR=$(realpath "$(dirname "${BASH_SOURCE[0]}")") + PARENT_DIR="$SCRIPT_DIR/.." -cd "$PARENT_DIR" || { echo "${ERROR} Failed to change directory to $PARENT_DIR"; exit 1; } # Source the global functions script -if ! source "$(dirname "$(readlink -f "$0")")/Global_functions.sh"; then - echo "Failed to source Global_functions.sh" - exit 1 -fi +source "$SCRIPT_DIR/Global_functions.sh" || { + echo "Failed to source Global_functions.sh" + exit 1 +} # Set the name of the log file to include the current date and time -LOG="Install-Logs/00_CHECK-$(date +%d-%H%M%S)_installed.log" +LOG="$PARENT_DIR/Install-Logs/00_CHECK-$(date +%d-%H%M%S)_installed.log" -printf "\n%s - Final Check if Essential packages were installed \n" "${NOTE}" +echo -e "\n${NOTE} - Final Check if Essential packages were installed" # Initialize an empty array to hold missing packages missing=() local_missing=() local_missing_2=() -# Function to check if a package is installed using dpkg -is_installed_dpkg() { - dpkg -l | grep -q "^ii $1 " -} - # Loop through each package for pkg in "${packages[@]}"; do # Check if the package is installed via dpkg - if ! is_installed_dpkg "$pkg"; then + if ! check_if_installed_with_apt "$pkg"; then + verbose_log "Missing package $pkg that should be installed with apt or apt-like tools" missing+=("$pkg") fi done @@ -64,6 +62,7 @@ done # Check for local packages for pkg1 in "${local_pkgs_installed[@]}"; do if ! [ -f "/usr/local/bin/$pkg1" ]; then + verbose_log "Missing local package $pkg1 in /usr/local/bin" local_missing+=("$pkg1") fi done @@ -71,6 +70,7 @@ done # Check for local packages in /usr/bin for pkg2 in "${local_pkgs_installed_2[@]}"; do if ! [ -f "/usr/bin/$pkg2" ]; then + verbose_log "Missing local package $pkg2 in /usr/bin" local_missing_2+=("$pkg2") fi done @@ -83,7 +83,7 @@ else echo "${WARN} The following packages are not installed and will be logged:" for pkg in "${missing[@]}"; do echo "$pkg" - echo "$pkg" >> "$LOG" # Log the missing package to the file + echo "$pkg" >>"$LOG" # Log the missing package to the file done fi @@ -91,7 +91,7 @@ else echo "${WARN} The following local packages are missing from /usr/local/bin/ and will be logged:" for pkg1 in "${local_missing[@]}"; do echo "$pkg1 is not installed. can't find it in /usr/local/bin/" - echo "$pkg1" >> "$LOG" # Log the missing local package to the file + echo "$pkg1" >>"$LOG" # Log the missing local package to the file done fi @@ -99,10 +99,10 @@ else echo "${WARN} The following local packages are missing from /usr/bin/ and will be logged:" for pkg2 in "${local_missing_2[@]}"; do echo "$pkg2 is not installed. can't find it in /usr/bin/" - echo "$pkg2" >> "$LOG" # Log the missing local package to the file + echo "$pkg2" >>"$LOG" # Log the missing local package to the file done fi # Add a timestamp when the missing packages were logged - echo "${NOTE} Missing packages logged at $(date)" >> "$LOG" + echo "${NOTE} Missing packages logged at $(date)" >>"$LOG" fi diff --git a/install-scripts/Global_functions.sh b/install-scripts/Global_functions.sh index f522ad5..82dc9da 100755 --- a/install-scripts/Global_functions.sh +++ b/install-scripts/Global_functions.sh @@ -2,126 +2,442 @@ # 💫 https://github.com/JaKooLit 💫 # # Global Functions for Scripts # -set -e +set -euo pipefail +IFS=$'\n\t' -# Set some colors for output messages -OK="$(tput setaf 2)[OK]$(tput sgr0)" -ERROR="$(tput setaf 1)[ERROR]$(tput sgr0)" -NOTE="$(tput setaf 3)[NOTE]$(tput sgr0)" -INFO="$(tput setaf 4)[INFO]$(tput sgr0)" -WARN="$(tput setaf 1)[WARN]$(tput sgr0)" -CAT="$(tput setaf 6)[ACTION]$(tput sgr0)" -MAGENTA="$(tput setaf 5)" -ORANGE="$(tput setaf 214)" -WARNING="$(tput setaf 1)" -YELLOW="$(tput setaf 3)" -GREEN="$(tput setaf 2)" -BLUE="$(tput setaf 4)" -SKY_BLUE="$(tput setaf 6)" -RESET="$(tput sgr0)" +# See first comment of answer in https://stackoverflow.com/a/53183593 +# Get directory of this script +SCRIPT_DIR=$(realpath "$(dirname "${BASH_SOURCE[0]}")") + +PARENT_DIR=$SCRIPT_DIR/.. + +source "$SCRIPT_DIR/colors.sh" || { + echo "Failed to source $SCRIPT_DIR/colors.sh" + exit 1 +} + +source "$SCRIPT_DIR/parse_args.sh" || { + echo "${RED} Failed to source $SCRIPT_DIR/parse_args.sh" + exit 1 +} # Create Directory for Install Logs -if [ ! -d Install-Logs ]; then - mkdir Install-Logs +if [[ $DRY -eq 0 && ! -d "$PARENT_DIR"/Install-Logs ]]; then + mkdir "$PARENT_DIR"/Install-Logs +elif [[ $DRY -eq 1 ]]; then + echo "${NOTE} Not creating directory $PARENT_DIR/Install-Logs" fi +# Print $1 amount of newlines +newlines() { + for ((i = 1; i <= "$1"; i++)); do + printf "\n" + done +} + +# Verbose logging for when using the --verbose or -v option +verbose_log() { + if [[ "$VERBOSE" == 1 ]]; then + echo "${GRAY}[VERBOSE NOTE]${RESET} $1" + fi +} + +# Function to check if the system is Ubuntu +is_ubuntu() { + # Check for 'Ubuntu' in /etc/os-release + if grep -q 'Ubuntu' /etc/os-release; then + return 0 + fi + return 1 +} + +execute_script() { + local script="$1" + local script_path="$SCRIPT_DIR/$script" + if [ -f "$script_path" ]; then + verbose_log "Attempting to change permissions of file to be executable: $script_path" + if [[ $PEDANTIC_DRY -eq 1 ]]; then + echo "${NOTE} I won't make $script_path executable." + else + chmod +x "$script_path" + fi + if [ -x "$script_path" ]; then + verbose_log "Executing file: $script_path" + env "$script_path" + else + echo "${WARN} Failed to make script '$script' executable.${RESET}" | tee -a "$LOG" + fi + else + echo "${WARN} Script '$script' not found in '$SCRIPT_DIR'.${RESET}" | tee -a "$LOG" + fi +} + +# Function to load preset file +load_preset() { + echo "✅ Loading preset: $1" + # shellcheck source=../preset.sh + source "$1" || { + echo "${ERROR} Failed to execute $(realpath "$1")" + exit 1 + } +} + +# List of services to check for active login managers +services=("gdm.service" "gdm3.service" "lightdm.service" "lxdm.service") + +# Function to check if any login services are active +check_services_running() { + active_services=() # Array to store active services + for svc in "${services[@]}"; do + if systemctl is-active --quiet "$svc"; then + verbose_log "Adding $svc as an active service that should be inactive" + active_services+=("$svc") + fi + done + + verbose_log "Active services count: ${#active_services[@]}" + if [ ${#active_services[@]} -gt 0 ]; then + verbose_log "These interfering active services were found: $(printf "%s\n" "${active_services[@]}")" + return 1 + else + verbose_log "No notorious active services were found." + return 0 + fi +} + +# Check if package is installed with apt and friends (returns 0 if so and 1 if not) +check_if_installed_with_apt() { + # Reliable way to check if package is installed, with Perl regex to support lookaheads + apt list "$1" --installed | grep -qP '^[^\/]*(?=.*\[installed)' + return $? +} + # Show progress function show_progress() { local pid=$1 local package_name=$2 - local spin_chars=("●○○○○○○○○○" "○●○○○○○○○○" "○○●○○○○○○○" "○○○●○○○○○○" "○○○○●○○○○" \ - "○○○○○●○○○○" "○○○○○○●○○○" "○○○○○○○●○○" "○○○○○○○○●○" "○○○○○○○○○●") + local spin_chars=("●○○○○○○○○○" "○●○○○○○○○○" "○○●○○○○○○○" "○○○●○○○○○○" "○○○○●○○○○" "○○○○○●○○○○" "○○○○○○●○○○" "○○○○○○○●○○" "○○○○○○○○●○" "○○○○○○○○○●") local i=0 - tput civis + tput civis printf "\r${INFO} Installing ${YELLOW}%s${RESET} ..." "$package_name" - while ps -p "$pid" &> /dev/null; do + while ps -p "$pid" &>/dev/null; do printf "\r${INFO} Installing ${YELLOW}%s${RESET} %s" "$package_name" "${spin_chars[i]}" - i=$(( (i + 1) % 10 )) - sleep 0.3 + i=$(((i + 1) % 10)) + sleep 0.3 done printf "\r${INFO} Installing ${YELLOW}%s${RESET} ... Done!%-20s \n\n" "$package_name" "" - tput cnorm + tput cnorm } - # Function for installing packages with a progress bar -install_package() { - if dpkg -l | grep -q -w "$1" ; then - echo -e "${INFO} ${MAGENTA}$1${RESET} is already installed. Skipping..." - else - ( - stdbuf -oL sudo apt install -y "$1" 2>&1 - ) >> "$LOG" 2>&1 & - PID=$! - show_progress $PID "$1" - - # Double check if the package successfully installed - if dpkg -l | grep -q -w "$1"; then - echo -e "\e[1A\e[K${OK} Package ${YELLOW}$1${RESET} has been successfully installed!" +install_package() { + if check_if_installed_with_apt "$1"; then + echo "${INFO} ${MAGENTA}$1${RESET} is already installed. Skipping..." else - echo -e "\e[1A\e[K${ERROR} ${YELLOW}$1${RESET} failed to install. Please check the install.log. You may need to install it manually. Sorry, I have tried :(" + if [[ $PEDANTIC_DRY -eq 1 ]]; then + echo "${NOTE} I won't install $1 even though it is required." + else + # Install with apt but preserve apt markings. However, --mark-auto does not work, so this regexp workaround has to be used until the bug becomes fixed: https://bugs.launchpad.net/ubuntu/+source/apt/+bug/2100937 + local markauto=0 + apt-mark showauto | grep -qP "^$1(:.+)?$" && { + verbose_log "Preserving apt marking for package $1" + markauto=1 + } + verbose_log "Installing $1 with sudo apt install --assume-yes $1" + ( + # Use stdbuf -oL for line buffering (append as lines go by instead of when it is all done) to the log file + stdbuf -oL sudo apt install --assume-yes "$1" 2>&1 + ) >>"$LOG" 2>&1 & + PID=$! + show_progress $PID "$1" + + # Double check if the package successfully installed + if check_if_installed_with_apt "$1"; then + echo -e "\e[1A\e[K${OK} Package ${YELLOW}$1${RESET} has been successfully installed!" + else + echo -e "\e[1A\e[K${ERROR} ${YELLOW}$1${RESET} failed to install. Please check the install.log. You may need to install it manually. Sorry, I have tried :(" + fi + + [[ $markauto -eq 1 ]] && { + echo "${ACTION}Setting package $1 to auto to preserve its apt-mark status" + ( + sudo apt-mark auto "$1" 2>&1 + ) >>"$LOG" 2>&1 + } + fi fi - fi + verbose_log "Done with install_package $1" } -# Function for build depencies with a progress bar -build_dep() { - echo -e "${INFO} building dependencies for ${MAGENTA}$1${RESET} " - ( - stdbuf -oL sudo apt build-dep -y "$1" 2>&1 - ) >> "$LOG" 2>&1 & - PID=$! - show_progress $PID "$1" +# Short synonym for install_package function +apt_install() { + install_package "$@" +} + +# apt install --no-recommends +apt_install_no_recommends() { + if check_if_installed_with_apt "$1"; then + echo "${INFO} ${MAGENTA}$1${RESET} is already installed. Skipping..." + else + if [[ $PEDANTIC_DRY -eq 1 ]]; then + echo "${NOTE} I won't install $1 even though it is required." + else + # Install with apt but preserve apt markings. However, --mark-auto does not work, so this regexp workaround has to be used until the bug becomes fixed: https://bugs.launchpad.net/ubuntu/+source/apt/+bug/2100937 + local markauto=0 + apt-mark showauto | grep -qP "^$1(:.+)?$" && { + verbose_log "Preserving apt marking for package $1" + markauto=1 + } + verbose_log "Installing $1 with sudo apt install --no-install-recommends --assume-yes $1" + ( + # Use stdbuf -oL for line buffering (append as lines go by instead of when it is all done) to the log file + stdbuf -oL sudo apt install --no-install-recommends --assume-yes "$1" 2>&1 + ) >>"$LOG" 2>&1 & + PID=$! + show_progress $PID "$1" + + # Double check if the package successfully installed + if check_if_installed_with_apt "$1"; then + echo -e "\e[1A\e[K${OK} Package ${YELLOW}$1${RESET} has been successfully installed!" + else + echo -e "\e[1A\e[K${ERROR} ${YELLOW}$1${RESET} failed to install. Please check the install.log. You may need to install it manually. Sorry, I have tried :(" + fi + + [[ $markauto -eq 1 ]] && { + echo "${ACTION}Setting package $1 to auto to preserve its apt-mark status" + ( + sudo apt-mark auto "$1" 2>&1 + ) >>"$LOG" 2>&1 + } + fi + fi +} + +# Function for build dependencies with a progress bar +build_dep() { + echo "${INFO} building dependencies for ${MAGENTA}$1${RESET} " + if [[ $PEDANTIC_DRY -eq 1 ]]; then + echo "${NOTE} I won't install $1 even though it is required." + else + ( + stdbuf -oL sudo apt build-dep --assume-yes "$1" 2>&1 + ) >>"$LOG" 2>&1 & + PID=$! + show_progress $PID "$1" + fi } # Function for cargo install with a progress bar -cargo_install() { - echo -e "${INFO} installing ${MAGENTA}$1${RESET} using cargo..." - ( - stdbuf -oL cargo install "$1" 2>&1 - ) >> "$LOG" 2>&1 & - PID=$! - show_progress $PID "$1" +cargo_install() { + echo "${INFO} installing ${MAGENTA}$1${RESET} using cargo..." + if [[ $PEDANTIC_DRY -eq 1 ]]; then + echo "${NOTE} I won't install $1 using cargo even though it is required." + else + ( + stdbuf -oL cargo install "$1" 2>&1 + ) >>"$LOG" 2>&1 & + PID=$! + show_progress $PID "$1" + fi } # Function for re-installing packages with a progress bar re_install_package() { - ( - stdbuf -oL sudo apt install --reinstall -y "$1" 2>&1 - ) >> "$LOG" 2>&1 & - - PID=$! - show_progress $PID "$1" - - if dpkg -l | grep -q -w "$1"; then - echo -e "\e[1A\e[K${OK} Package ${YELLOW}$1${RESET} has been successfully re-installed!" + if [[ $PEDANTIC_DRY -eq 1 ]]; then + echo "${NOTE} I won't reinstall $1." else - # Package not found, reinstallation failed - echo -e "${ERROR} ${YELLOW}$1${RESET} failed to re-install. Please check the install.log. You may need to install it manually. Sorry, I have tried :(" + ( + stdbuf -oL sudo apt install --reinstall --assume-yes "$1" 2>&1 + ) >>"$LOG" 2>&1 & + + PID=$! + show_progress $PID "$1" + + if dpkg -l | grep -q -w "$1"; then + echo -e "\e[1A\e[K${OK} Package ${YELLOW}$1${RESET} has been successfully re-installed!" + else + # Package not found, reinstallation failed + echo "${ERROR} ${YELLOW}$1${RESET} failed to re-install. Please check the install.log. You may need to install it manually. Sorry, I have tried :(" + fi fi } +# Short synonym for re_install_package function +apt_reinstall() { + re_install_package "$@" +} + # Function for removing packages uninstall_package() { - local pkg="$1" + local pkg="$1" - # Checking if package is installed - if sudo dpkg -l | grep -q -w "^ii $1" ; then - echo -e "${NOTE} removing $pkg ..." - # shellcheck disable=SC2024 - sudo apt autoremove -y "$1" >> "$LOG" 2>&1 | grep -v "error: target not found" - - if ! dpkg -l | grep -q -w "^ii $1" ; then - echo -e "\e[1A\e[K${OK} ${MAGENTA}$1${RESET} removed." + # Checking if package is installed + if sudo dpkg -l | grep -q -w "^ii $1"; then + echo "${NOTE} removing $pkg ..." + if [[ $PURGE -eq 1 ]]; then + if [[ $VERBOSE -eq 1 ]]; then + sudo apt autopurge --assume-yes "$1" | tee -a "$LOG" 2>&1 + else + sudo apt autopurge --assume-yes "$1" | tee -a "$LOG" 2>&1 | grep -v "error: target not found" + fi + else + if [[ $VERBOSE -eq 1 ]]; then + sudo apt autoremove --assume-yes "$1" | tee -a "$LOG" 2>&1 + else + sudo apt autoremove --assume-yes "$1" | tee -a "$LOG" 2>&1 | grep -v "error: target not found" + fi + fi + + if ! dpkg -l | grep -q -w "^ii $1"; then + echo -e "\e[1A\e[K${OK} ${MAGENTA}$1${RESET} removed." + else + echo -e "\e[1A\e[K${ERROR} $pkg Removal failed. No actions required." + return 1 + fi else - echo -e "\e[1A\e[K${ERROR} $pkg Removal failed. No actions required." - return 1 + echo "${INFO} Package $pkg not installed, skipping." fi - else - echo -e "${INFO} Package $pkg not installed, skipping." - fi - return 0 -} \ No newline at end of file + return 0 +} + +# Short synonym for uninstall_package function +apt_remove() { + uninstall_package "$@" +} + +remove_file() { + if [[ -f "$1" ]]; then + if [[ $DRY -eq 1 ]]; then + echo "${NOTE} I am not removing $1" + else + verbose_log "Removing file $1" + if [[ $# -gt 1 && -n $2 ]]; then + rm "$1" 2>&1 | tee -a "$2" + else + rm "$1" 2>&1 + fi + fi + else + verbose_log "File $1 does not exist, so not removing it" + fi +} + +remove_dir() { + # Sanity checker + case $(realpath "$1") in + /) + echo "${ERROR} Attempting to remove root directory $1. Must be a bug in the code. Exiting..." + exit 1 + ;; + /usr | /usr/bin | /usr/local | /usr/local/bin | /etc | /home | /usr/lib | /usr/local/lib) + echo "${ERROR} Attempting to remove system directory $1. Must be a bug in the code. Exiting..." + exit 1 + ;; + *) + verbose_log "Directory $1 is probably safe to remove." + ;; + esac + + if [[ -d "$1" ]]; then + if [[ $DRY -eq 1 ]]; then + echo "${NOTE} I am not removing the directory $1" + else + verbose_log "Forcibly and recursively removing the directory $1" + if [[ $# -gt 1 && -n $2 ]]; then + sudo rm -rf "$1" 2>&1 | tee -a "$2" + else + sudo rm -rf "$1" 2>&1 + fi + fi + else + verbose_log "Directory $1 does not exist, so not removing it" + fi +} + +# Essential function for automating building of repositories from hyprwm +# First arg: release version, second arg: name of repository, third arg: "cmake_build", "hyprland-qt-support", "hyprwayland-scanner", or "meson" build type, fourth arg: "cmake" or "meson" installation type, fifth arg: repository name (defaults to hyprwm) +build_from_git() { + local install_prefix="/usr/local" + # Change install_prefix to --dry-run-dir's value + [[ $DRY -eq 1 ]] && install_prefix=$PARENT_DIR/faux-install-dir + [[ $DRY_RUN_DIR_SET -eq 1 ]] && install_prefix=$DRY_RUN_DIR + + SCRIPT_DIR=$(realpath "$(dirname "${BASH_SOURCE[0]}")") + + # Change the working directory to the parent directory of the script + PARENT_DIR="$SCRIPT_DIR/.." + + #specific branch or release + release="$1" + + cd "$PARENT_DIR" || { + echo "${ERROR} Failed to change directory to $PARENT_DIR" + exit 1 + } + + # Set the name of the log file to include the current date and time + LOG="Install-Logs/install-$(date +%d-%H%M%S)_$2.log" + MLOG="install-$(date +%d-%H%M%S)_$2.log" + + # Check if directory exists and remove it + remove_dir "$2" + + # Clone and build + echo "${INFO} Installing ${YELLOW}$2 $release${RESET} ..." + if [[ $NO_BUILD -eq 1 ]]; then + echo "${NOTE} I am not cloning $2 and building it." + else + local name="hyprwm" + [[ $# -gt 4 && -n $5 ]] && name=$5 + if git clone --recursive -b "$release" "https://github.com/$name/$2.git"; then + cd "$2" || exit 1 + + case "$3" in + cmake_build) + cmake --no-warn-unused-cli -DCMAKE_BUILD_TYPE:STRING=Release -DCMAKE_INSTALL_PREFIX:PATH="$install_prefix" -S . -B ./build + cmake --build ./build --config Release --target "$2" -j"$(nproc 2>/dev/null || getconf _NPROCESSORS_CONF)" + ;; + hyprland-qt-support) + cmake --no-warn-unused-cli -DCMAKE_BUILD_TYPE:STRING=Release -DCMAKE_INSTALL_PREFIX:PATH="$install_prefix" -DINSTALL_QML_PREFIX=/lib/x86_64-linux-gnu/qt6/qml -S . -B ./build + cmake --build ./build --config Release --target all -j"$(nproc 2>/dev/null || getconf _NPROCESSORS_CONF)" + ;; + hyprwayland-scanner) + cmake -DCMAKE_INSTALL_PREFIX="$install_prefix" -B build + cmake --build build -j "$(nproc)" + ;; + meson) + meson setup --prefix="$install_prefix" build + ;; + esac + + case "$4" in + cmake) + sudo cmake --install ./build 2>&1 | tee -a "$MLOG" + ;; + meson) + sudo meson install -C ./build 2>&1 | tee -a "$MLOG" + ;; + esac + + if $?; then + echo "${OK} ${MAGENTA}$2 $release${RESET} installed successfully." 2>&1 | tee -a "$MLOG" + else + echo "${ERROR} Installation failed for ${YELLOW}$2 $release${RESET}" 2>&1 | tee -a "$MLOG" + fi + if [[ $PEDANTIC_DRY -eq 1 ]]; then + echo "${NOTE} Not moving $MLOG to $PARENT_DIR/Install-Logs/ with mv" + else + #moving the addional logs to Install-Logs directory + mv "$MLOG" "$PARENT_DIR"/Install-Logs/ || true + fi + cd .. + else + echo "${ERROR} Download failed for ${YELLOW}$2 $release${RESET}" 2>&1 | tee -a "$LOG" + fi + fi + + newlines 2 +} diff --git a/install-scripts/InputGroup.sh b/install-scripts/InputGroup.sh index afe0fc8..cb8e285 100755 --- a/install-scripts/InputGroup.sh +++ b/install-scripts/InputGroup.sh @@ -3,17 +3,17 @@ # Adding users into input group # ## WARNING: DO NOT EDIT BEYOND THIS LINE IF YOU DON'T KNOW WHAT YOU ARE DOING! ## -SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" -# Change the working directory to the parent directory of the script -PARENT_DIR="$SCRIPT_DIR/.." -cd "$PARENT_DIR" || { echo "${ERROR} Failed to change directory to $PARENT_DIR"; exit 1; } +set -euo pipefail +IFS=$'\n\t' + +SCRIPT_DIR=$(realpath "$(dirname "${BASH_SOURCE[0]}")") # Source the global functions script -if ! source "$(dirname "$(readlink -f "$0")")/Global_functions.sh"; then - echo "Failed to source Global_functions.sh" - exit 1 -fi +source "$SCRIPT_DIR/Global_functions.sh" || { + echo "Failed to source Global_functions.sh" + exit 1 +} # Set the name of the log file to include the current date and time LOG="Install-Logs/install-$(date +%d-%H%M%S)_input.log" @@ -23,12 +23,20 @@ if grep -q '^input:' /etc/group; then echo "${OK} ${MAGENTA}input${RESET} group exists." else echo "${NOTE} ${MAGENTA}input${RESET} group doesn't exist. Creating ${MAGENTA}input${RESET} group..." - sudo groupadd input - echo "${MAGENTA}input${RESET} group created" >> "$LOG" + if [[ $PEDANTIC_DRY -eq 1 ]]; then + echo "${NOTE} Not adding the nonexistent group, input, with sudo groupadd" + else + sudo groupadd input + fi + echo "${MAGENTA}input${RESET} group created" >>"$LOG" fi -# Add the user to the 'input' group -sudo usermod -aG input "$(whoami)" -echo "${OK} ${YELLOW}user${RESET} added to the ${MAGENTA}input${RESET} group. Changes will take effect after you log out and log back in." >> "$LOG" +if [[ $PEDANTIC_DRY -eq 1 ]]; then + echo "${NOTE}Not adding $(whoami) to the input group with sudo usermod -aG" +else + # Add the user to the 'input' group + sudo usermod -aG input "$(whoami)" + echo "${OK} ${YELLOW}user${RESET} added to the ${MAGENTA}input${RESET} group. Changes will take effect after you log out and log back in." >>"$LOG" +fi -printf "\n%.0s" {1..2} \ No newline at end of file +newlines 2 diff --git a/install-scripts/ags.sh b/install-scripts/ags.sh index 9d7b6d5..9d71118 100755 --- a/install-scripts/ags.sh +++ b/install-scripts/ags.sh @@ -3,16 +3,16 @@ # Aylur's GTK Shell # ags=( - node-typescript - npm - meson - libgjs-dev - gjs - libgtk-layer-shell-dev + node-typescript + npm + meson + libgjs-dev + gjs + libgtk-layer-shell-dev libgtk-3-dev - libpam0g-dev - libpulse-dev - libdbusmenu-gtk3-dev + libpam0g-dev + libpulse-dev + libdbusmenu-gtk3-dev libsoup-3.0-dev ) @@ -28,17 +28,24 @@ build_dep=( ags_tag="v1.9.0" ## WARNING: DO NOT EDIT BEYOND THIS LINE IF YOU DON'T KNOW WHAT YOU ARE DOING! ## -SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" -# Change the working directory to the parent directory of the script -PARENT_DIR="$SCRIPT_DIR/.." -cd "$PARENT_DIR" || { echo "${ERROR} Failed to change directory to $PARENT_DIR"; exit 1; } +set -euo pipefail +IFS=$'\n\t' + +SCRIPT_DIR=$(realpath "$(dirname "${BASH_SOURCE[0]}")") + +PARENT_DIR=$SCRIPT_DIR/.. # Source the global functions script -if ! source "$(dirname "$(readlink -f "$0")")/Global_functions.sh"; then - echo "Failed to source Global_functions.sh" - exit 1 -fi +source "$SCRIPT_DIR/Global_functions.sh" || { + echo "Failed to source Global_functions.sh" + exit 1 +} + +cd "$PARENT_DIR" || { + echo "${ERROR} Failed to change directory to $PARENT_DIR" + exit 1 +} # Set the name of the log file to include the current date and time LOG="Install-Logs/install-$(date +%d-%H%M%S)_ags.log" @@ -46,64 +53,76 @@ MLOG="install-$(date +%d-%H%M%S)_ags2.log" # Check if AGS is installed if command -v ags &>/dev/null; then - AGS_VERSION=$(ags -v | awk '{print $NF}') + AGS_VERSION=$(ags -v | awk '{print $NF}') if [[ "$AGS_VERSION" == "1.9.0" ]]; then - printf "${INFO} ${MAGENTA}Aylur's GTK Shell v1.9.0${RESET} is already installed. Skipping installation." - printf "\n%.0s" {1..2} + echo "${INFO} ${MAGENTA}Aylur's GTK Shell v1.9.0${RESET} is already installed. Skipping installation." + newlines 1 exit 0 fi fi # Installation of main components -printf "\n%s - Installing ${SKY_BLUE}Aylur's GTK shell $ags_tag${RESET} Dependencies \n" "${INFO}" +newlines 1 +echo "${INFO} - Installing ${SKY_BLUE}Aylur's GTK shell $ags_tag${RESET} Dependencies" # Installing ags Dependencies for PKG1 in "${ags[@]}"; do - install_package "$PKG1" "$LOG" + install_package "$PKG1" "$LOG" done for force_ags in "${f_ags[@]}"; do - re_install_package "$force_ags" 2>&1 | tee -a "$LOG" - done - -printf "\n%.0s" {1..1} - -for PKG1 in "${build_dep[@]}"; do - build_dep "$PKG1" "$LOG" + re_install_package "$force_ags" 2>&1 | tee -a "$LOG" done -#install typescript by npm -sudo npm install --global typescript 2>&1 | tee -a "$LOG" +newlines 1 + +for PKG1 in "${build_dep[@]}"; do + build_dep "$PKG1" "$LOG" +done + +if [[ $DRY -eq 1 ]]; then + echo "${NOTE} Not installing typescript with npm install --global" | tee -a "$LOG" +else + #install typescript by npm + sudo npm install --global typescript 2>&1 | tee -a "$LOG" +fi # ags v1 -printf "${NOTE} Install and Compiling ${SKY_BLUE}Aylur's GTK shell $ags_tag${RESET}..\n" +echo "${NOTE} Install and Compiling ${SKY_BLUE}Aylur's GTK shell $ags_tag${RESET}.." # Check if directory exists and remove it if [ -d "ags" ]; then - printf "${NOTE} Removing existing ags directory...\n" - rm -rf "ags" + echo "${NOTE} Removing existing ags directory..." + remove_dir "ags" "$LOG" fi -printf "\n%.0s" {1..1} -printf "${INFO} Kindly Standby...cloning and compiling ${SKY_BLUE}Aylur's GTK shell $ags_tag${RESET}...\n" -printf "\n%.0s" {1..1} -# Clone repository with the specified tag and capture git output into MLOG -if git clone --depth=1 https://github.com/JaKooLit/ags_v1.9.0.git; then - cd ags_v1.9.0 || exit 1 - npm install - meson setup build - if sudo meson install -C build 2>&1 | tee -a "$MLOG"; then - printf "\n${OK} ${YELLOW}Aylur's GTK shell $ags_tag${RESET} installed successfully.\n" 2>&1 | tee -a "$MLOG" - else - echo -e "\n${ERROR} ${YELLOW}Aylur's GTK shell $ags_tag${RESET} Installation failed\n " 2>&1 | tee -a "$MLOG" - fi - # Move logs to Install-Logs directory - mv "$MLOG" ../Install-Logs/ || true - cd .. +newlines 1 +echo "${INFO} Kindly Standby...cloning and compiling ${SKY_BLUE}Aylur's GTK shell $ags_tag${RESET}..." +newlines 1 + +if [[ $NO_BUILD -eq 1 ]]; then + echo "${NOTE} Not cloning or building ags" else - echo -e "\n${ERROR} Failed to download ${YELLOW}Aylur's GTK shell $ags_tag${RESET} Please check your connection\n" 2>&1 | tee -a "$LOG" - mv "$MLOG" ../Install-Logs/ || true - exit 1 + # Clone repository with the specified tag and capture git output into MLOG + if git clone --depth=1 https://github.com/JaKooLit/ags_v1.9.0.git; then + cd "$PARENT_DIR"/ags_v1.9.0 || exit 1 + npm install + meson setup build + if sudo meson install -C build 2>&1 | tee -a "$MLOG"; then + newlines 1 + echo "${OK} ${YELLOW}Aylur's GTK shell $ags_tag${RESET} installed successfully." 2>&1 | tee -a "$MLOG" + else + newlines 1 + echo "${ERROR} ${YELLOW}Aylur's GTK shell $ags_tag${RESET} Installation failed" 2>&1 | tee -a "$MLOG" + fi + # Move logs to Install-Logs directory + mv "$MLOG" "$PARENT_DIR"/Install-Logs/ || true + cd .. + else + echo -e "\n${ERROR} Failed to download ${YELLOW}Aylur's GTK shell $ags_tag${RESET} Please check your connection\n" 2>&1 | tee -a "$LOG" + mv "$MLOG" "$PARENT_DIR"/Install-Logs/ || true + exit 1 + fi fi -printf "\n%.0s" {1..2} \ No newline at end of file +newlines 2 diff --git a/install-scripts/aquamarine.sh b/install-scripts/aquamarine.sh index 201471d..42d8df3 100755 --- a/install-scripts/aquamarine.sh +++ b/install-scripts/aquamarine.sh @@ -2,51 +2,20 @@ # 💫 https://github.com/JaKooLit 💫 # # aquamarine # - #specific branch or release -lang_tag="v0.8.0" +aquamarine_tag="v0.8.0" ## WARNING: DO NOT EDIT BEYOND THIS LINE IF YOU DON'T KNOW WHAT YOU ARE DOING! ## -SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" -# Change the working directory to the parent directory of the script -PARENT_DIR="$SCRIPT_DIR/.." -cd "$PARENT_DIR" || { echo "${ERROR} Failed to change directory to $PARENT_DIR"; exit 1; } +set -euo pipefail +IFS=$'\n\t' + +SCRIPT_DIR=$(realpath "$(dirname "${BASH_SOURCE[0]}")") # Source the global functions script -if ! source "$(dirname "$(readlink -f "$0")")/Global_functions.sh"; then - echo "Failed to source Global_functions.sh" - exit 1 -fi +source "$SCRIPT_DIR/Global_functions.sh" || { + echo "Failed to source Global_functions.sh" + exit 1 +} -# Set the name of the log file to include the current date and time -LOG="Install-Logs/install-$(date +%d-%H%M%S)_aquamarine.log" -MLOG="install-$(date +%d-%H%M%S)_aquamarine2.log" - -# Installation of dependencies -printf "\n%s - Installing ${YELLOW}aquamarine dependencies${RESET} .... \n" "${INFO}" - -# Check if aquamarine directory exists and remove it -if [ -d "aquamarine" ]; then - rm -rf "aquamarine" -fi - -# Clone and build -printf "${INFO} Installing ${YELLOW}aquamarine $lang_tag${RESET} ...\n" -if git clone --recursive -b $lang_tag https://github.com/hyprwm/aquamarine.git; then - cd aquamarine || exit 1 - cmake --no-warn-unused-cli -DCMAKE_BUILD_TYPE:STRING=Release -DCMAKE_INSTALL_PREFIX:PATH=/usr -S . -B ./build - cmake --build ./build --config Release --target aquamarine -j"$(nproc 2>/dev/null || getconf _NPROCESSORS_CONF)" - if sudo cmake --install ./build 2>&1 | tee -a "$MLOG" ; then - printf "${OK} ${MAGENTA}aquamarine $lang_tag${RESET} installed successfully.\n" 2>&1 | tee -a "$MLOG" - else - echo -e "${ERROR} Installation failed for ${YELLOW}aquamarine $lang_tag${RESET}" 2>&1 | tee -a "$MLOG" - fi - #moving the addional logs to Install-Logs directory - mv "$MLOG" ../Install-Logs/ || true - cd .. -else - echo -e "${ERROR} Download failed for ${YELLOW}aquamarine $lang_tag${RESET}" 2>&1 | tee -a "$LOG" -fi - -printf "\n%.0s" {1..2} +build_from_git $aquamarine_tag "aquamarine" "cmake_build" "cmake" diff --git a/install-scripts/bluetooth.sh b/install-scripts/bluetooth.sh index f342210..2d5b968 100755 --- a/install-scripts/bluetooth.sh +++ b/install-scripts/bluetooth.sh @@ -3,33 +3,44 @@ # Bluetooth # blue=( - bluez - blueman + bluez + blueman ) ## WARNING: DO NOT EDIT BEYOND THIS LINE IF YOU DON'T KNOW WHAT YOU ARE DOING! ## -SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" -# Change the working directory to the parent directory of the script -PARENT_DIR="$SCRIPT_DIR/.." -cd "$PARENT_DIR" || { echo "${ERROR} Failed to change directory to $PARENT_DIR"; exit 1; } +set -euo pipefail +IFS=$'\n\t' + +SCRIPT_DIR=$(realpath "$(dirname "${BASH_SOURCE[0]}")") + +PARENT_DIR=$SCRIPT_DIR/.. # Source the global functions script -if ! source "$(dirname "$(readlink -f "$0")")/Global_functions.sh"; then - echo "Failed to source Global_functions.sh" - exit 1 -fi +source "$SCRIPT_DIR/Global_functions.sh" || { + echo "Failed to source Global_functions.sh" + exit 1 +} + +cd "$PARENT_DIR" || { + echo "${ERROR} Failed to change directory to $PARENT_DIR" + exit 1 +} # Set the name of the log file to include the current date and time -LOG="Install-Logs/install-$(date +%d-%H%M%S)_bluetooth.log" +LOG="$PARENT_DIR/Install-Logs/install-$(date +%d-%H%M%S)_bluetooth.log" # Bluetooth -printf "${NOTE} Installing ${SKY_BLUE}Bluetooth${RESET} Packages...\n" - for BLUE in "${blue[@]}"; do - install_package "$BLUE" "$LOG" - done +echo "${NOTE} Installing ${SKY_BLUE}Bluetooth${RESET} Packages..." +for BLUE in "${blue[@]}"; do + install_package "$BLUE" "$LOG" +done -printf " Activating ${YELLOW}Bluetooth${RESET} Services...\n" -sudo systemctl enable --now bluetooth.service 2>&1 | tee -a "$LOG" +echo " Activating ${YELLOW}Bluetooth${RESET} Services..." +if [[ $PEDANTIC_DRY -eq 1 ]]; then + echo "${NOTE} Not enabling service bluetooth.service with systemctl enable --now" +else + sudo systemctl enable --now bluetooth.service 2>&1 | tee -a "$LOG" +fi -printf "\n%.0s" {1..2} +newlines 2 diff --git a/install-scripts/colors.sh b/install-scripts/colors.sh new file mode 100755 index 0000000..138e78d --- /dev/null +++ b/install-scripts/colors.sh @@ -0,0 +1,29 @@ +#!/bin/bash +# shellcheck disable=SC2155 + +set -a + +# Header guard because it is useless to execute the rest of this so many times +[[ -v SOURCED_COLORS ]] && return +SOURCED_COLORS= + +# Set some colors for output messages +MAGENTA="$(tput setaf 5)" +YELLOW="$(tput setaf 226)" +RED="$(tput setaf 1)" +ORANGE="$(tput setaf 3)" +GREEN="$(tput setaf 2)" +BLUE="$(tput setaf 4)" +SKY_BLUE="$(tput setaf 12)" +GRAY="$(tput setaf 251)" +GREY=$GRAY +WARNING=$ORANGE +RESET="$(tput sgr0)" +OK="${GREEN}[OK]${RESET}" +ERROR="${RED}[ERROR]${RESET}" +NOTE="${GRAY}[NOTE]${RESET}" +INFO="${BLUE}[INFO]${RESET}" +WARN="${WARNING}[WARN]${RESET}" +CAT="${SKY_BLUE}[ACTION]${RESET}" + +set +a diff --git a/install-scripts/dotfiles-branch.sh b/install-scripts/dotfiles-branch.sh index b1baac3..fb3e432 100755 --- a/install-scripts/dotfiles-branch.sh +++ b/install-scripts/dotfiles-branch.sh @@ -6,35 +6,48 @@ dots_tag="Deb-Untu-Dots" ## WARNING: DO NOT EDIT BEYOND THIS LINE IF YOU DON'T KNOW WHAT YOU ARE DOING! ## -SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" + +SCRIPT_DIR=$(realpath "$(dirname "${BASH_SOURCE[0]}")") # Change the working directory to the parent directory of the script PARENT_DIR="$SCRIPT_DIR/.." -cd "$PARENT_DIR" || { echo "${ERROR} Failed to change directory to $PARENT_DIR"; exit 1; } + +cd "$PARENT_DIR" || { + echo "${ERROR} Failed to change directory to $PARENT_DIR" + exit 1 +} # Source the global functions script -if ! source "$(dirname "$(readlink -f "$0")")/Global_functions.sh"; then - echo "Failed to source Global_functions.sh" - exit 1 -fi +source "$SCRIPT_DIR/Global_functions.sh" || { + echo "Failed to source $SCRIPT_DIR/Global_functions.sh" + exit 1 +} # Check if Hyprland-Dots exists -printf "${NOTE} Cloning and Installing ${SKY_BLUE}KooL's Hyprland Dots for Debian${RESET}....\n" +echo "${NOTE} Cloning and Installing ${SKY_BLUE}KooL's Hyprland Dots for Debian${RESET}...." # Check if Hyprland-Dots exists if [ -d Hyprland-Dots-Debian ]; then - cd Hyprland-Dots-Debian || exit - git stash && git pull - chmod +x copy.sh - ./copy.sh + cd Hyprland-Dots-Debian || exit + if [[ $PEDANTIC_DRY -eq 1 ]]; then + echo "${NOTE} I am not stashing and pulling the already existing $PARENT_DIR/Hyprland-Dots-Debian directory or copying KooL's Hyprland Dots." + else + git stash && git pull + chmod +x copy.sh + ./copy.sh + fi else - if git clone --depth=1 -b $dots_tag https://github.com/JaKooLit/Hyprland-Dots Hyprland-Dots-Debian; then - cd Hyprland-Dots-Debian || exit 1 - chmod +x copy.sh - ./copy.sh - else - echo -e "$ERROR Can't download ${YELLOW}KooL's Hyprland-Dots-Debian${RESET}" - fi + if [[ $PEDANTIC_DRY -eq 1 ]]; then + echo "${NOTE} I am not fetching KooL's Hyprland-Dots-Debian repository or copying those files." + else + if git clone --depth=1 -b $dots_tag https://github.com/JaKooLit/Hyprland-Dots Hyprland-Dots-Debian; then + cd Hyprland-Dots-Debian || exit 1 + chmod +x copy.sh + ./copy.sh + else + echo -e "$ERROR Can't download ${YELLOW}KooL's Hyprland-Dots-Debian${RESET}" + fi + fi fi -printf "\n%.0s" {1..2} +newlines 2 diff --git a/install-scripts/fonts.sh b/install-scripts/fonts.sh index af29604..e02b84a 100755 --- a/install-scripts/fonts.sh +++ b/install-scripts/fonts.sh @@ -3,38 +3,45 @@ # Fonts Required # fonts=( - fonts-firacode - fonts-font-awesome - fonts-noto - fonts-noto-cjk - fonts-noto-color-emoji + fonts-firacode + fonts-font-awesome + fonts-noto + fonts-noto-cjk + fonts-noto-color-emoji ) ## WARNING: DO NOT EDIT BEYOND THIS LINE IF YOU DON'T KNOW WHAT YOU ARE DOING! ## -SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" -# Change the working directory to the parent directory of the script -PARENT_DIR="$SCRIPT_DIR/.." -cd "$PARENT_DIR" || { echo "${ERROR} Failed to change directory to $PARENT_DIR"; exit 1; } +set -euo pipefail +IFS=$'\n\t' + +SCRIPT_DIR=$(realpath "$(dirname "${BASH_SOURCE[0]}")") + +PARENT_DIR=$SCRIPT_DIR/.. # Source the global functions script -if ! source "$(dirname "$(readlink -f "$0")")/Global_functions.sh"; then - echo "Failed to source Global_functions.sh" - exit 1 -fi +source "$SCRIPT_DIR/Global_functions.sh" || { + echo "Failed to source Global_functions.sh" + exit 1 +} + +cd "$PARENT_DIR" || { + echo "${ERROR} Failed to change directory to $PARENT_DIR" + exit 1 +} # Set the name of the log file to include the current date and time -LOG="Install-Logs/install-$(date +%d-%H%M%S)_fonts.log" - +LOG="$PARENT_DIR/Install-Logs/install-$(date +%d-%H%M%S)_fonts.log" # Installation of main components -printf "\n%s - Installing necessary ${SKY_BLUE}fonts${RESET}.... \n" "${NOTE}" +newlines 1 +echo "${NOTE} - Installing necessary ${SKY_BLUE}fonts${RESET}...." for PKG1 in "${fonts[@]}"; do - install_package "$PKG1" "$LOG" + install_package "$PKG1" "$LOG" done -printf "\n%.0s" {1..2} +newlines 2 # jetbrains nerd font. Necessary for waybar DOWNLOAD_URL="https://github.com/ryanoasis/nerd-fonts/releases/latest/download/JetBrainsMono.tar.xz" @@ -47,34 +54,46 @@ for ((ATTEMPT = 1; ATTEMPT <= MAX_ATTEMPTS; ATTEMPT++)); do done # Check if the JetBrainsMono directory exists and delete it if it does -if [ -d ~/.local/share/fonts/JetBrainsMonoNerd ]; then - rm -rf ~/.local/share/fonts/JetBrainsMonoNerd 2>&1 | tee -a "$LOG" -fi +remove_dir ~/.local/share/fonts/JetBrainsMonoNerd "$LOG" -mkdir -p ~/.local/share/fonts/JetBrainsMonoNerd 2>&1 | tee -a "$LOG" -# Extract the new files into the JetBrainsMono directory and log the output -tar -xJkf JetBrainsMono.tar.xz -C ~/.local/share/fonts/JetBrainsMonoNerd 2>&1 | tee -a "$LOG" - -# Fantasque Mono Nerd Font -if wget -q https://github.com/ryanoasis/nerd-fonts/releases/download/v3.3.0/FantasqueSansMono.zip; then - mkdir -p "$HOME/.local/share/fonts/FantasqueSansMonoNerd" && unzip -o -q "FantasqueSansMono.zip" -d "$HOME/.local/share/fonts/FantasqueSansMono" && echo "FantasqueSansMono installed successfully" | tee -a "$LOG" +if [[ $PEDANTIC_DRY -eq 1 ]]; then + echo "${NOTE}Not creating ~/.local/share/fonts/JetBrainsMonoNerd or extracting $PARENT_DIR/JetBrainsMonoNerd.tar.xz to that directory." else - echo -e "\n${ERROR} Failed to download ${YELLOW}Fantasque Sans Mono Nerd Font${RESET} Please check your connection\n" | tee -a "$LOG" + mkdir -p ~/.local/share/fonts/JetBrainsMonoNerd 2>&1 | tee -a "$LOG" + # Extract the new files into the JetBrainsMono directory and log the output + tar -xJkf "$PARENT_DIR"/JetBrainsMono.tar.xz -C ~/.local/share/fonts/JetBrainsMonoNerd 2>&1 | tee -a "$LOG" fi -# Victor Mono-Font -if wget -q https://rubjo.github.io/victor-mono/VictorMonoAll.zip; then - mkdir -p "$HOME/.local/share/fonts/VictorMono" && unzip -o -q "VictorMonoAll.zip" -d "$HOME/.local/share/fonts/VictorMono" && echo "Victor Font installed successfully" | tee -a "$LOG" +if [[ $PEDANTIC_DRY -eq 1 ]]; then + echo "${NOTE} Not installing Fantasque Mono Nerd Font." else - echo -e "\n${ERROR} Failed to download ${YELLOW}Victor Mono Font${RESET} Please check your connection\n" | tee -a "$LOG" + # Fantasque Mono Nerd Font + if wget -q https://github.com/ryanoasis/nerd-fonts/releases/download/v3.3.0/FantasqueSansMono.zip; then + mkdir -p "$HOME/.local/share/fonts/FantasqueSansMonoNerd" && unzip -o -q "FantasqueSansMono.zip" -d "$HOME/.local/share/fonts/FantasqueSansMono" && echo "FantasqueSansMono installed successfully" | tee -a "$LOG" + else + echo -e "\n${ERROR} Failed to download ${YELLOW}Fantasque Sans Mono Nerd Font${RESET} Please check your connection\n" | tee -a "$LOG" + fi fi -# Update font cache and log the output -fc-cache -v 2>&1 | tee -a "$LOG" - -# clean up -if [ -d "JetBrainsMono.tar.xz" ]; then - rm -r JetBrainsMono.tar.xz 2>&1 | tee -a "$LOG" +if [[ $PEDANTIC_DRY -eq 1 ]]; then + echo "${NOTE} Not installing Victor Mono-Font" +else + # Victor Mono-Font + if wget -q https://rubjo.github.io/victor-mono/VictorMonoAll.zip; then + mkdir -p "$HOME/.local/share/fonts/VictorMono" && unzip -o -q "VictorMonoAll.zip" -d "$HOME/.local/share/fonts/VictorMono" && echo "Victor Font installed successfully" | tee -a "$LOG" + else + echo -e "\n${ERROR} Failed to download ${YELLOW}Victor Mono Font${RESET} Please check your connection\n" | tee -a "$LOG" + fi fi -printf "\n%.0s" {1..2} +if [[ $PEDANTIC_DRY -eq 1 ]]; then + echo "${NOTE}Not updating the font cache with fc-cache" +else + # Update font cache and log the output + fc-cache -v 2>&1 | tee -a "$LOG" +fi + +# clean up +remove_file "$PARENT_DIR"/JetBrainsMono.tar.xz "$LOG" + +newlines 2 diff --git a/install-scripts/gtk_themes.sh b/install-scripts/gtk_themes.sh index d740485..e7ff396 100755 --- a/install-scripts/gtk_themes.sh +++ b/install-scripts/gtk_themes.sh @@ -8,43 +8,56 @@ engine=( ) ## WARNING: DO NOT EDIT BEYOND THIS LINE IF YOU DON'T KNOW WHAT YOU ARE DOING! ## -SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" + +set -euo pipefail +IFS=$'\n\t' + +SCRIPT_DIR=$(realpath "$(dirname "${BASH_SOURCE[0]}")") # Change the working directory to the parent directory of the script PARENT_DIR="$SCRIPT_DIR/.." -cd "$PARENT_DIR" || { echo "${ERROR} Failed to change directory to $PARENT_DIR"; exit 1; } # Source the global functions script -if ! source "$(dirname "$(readlink -f "$0")")/Global_functions.sh"; then - echo "Failed to source Global_functions.sh" - exit 1 -fi +source "$SCRIPT_DIR/Global_functions.sh" || { + echo "Failed to source Global_functions.sh" + exit 1 +} + +cd "$PARENT_DIR" || { + echo "${ERROR} Failed to change directory to $PARENT_DIR" + exit 1 +} # Set the name of the log file to include the current date and time LOG="Install-Logs/install-$(date +%d-%H%M%S)_themes.log" - # installing engine needed for gtk themes +verbose_log "Installing dependencies for gtk themes" for PKG1 in "${engine[@]}"; do install_package "$PKG1" "$LOG" done # Check if the directory exists and delete it if present -if [ -d "GTK-themes-icons" ]; then - echo "$NOTE GTK themes and Icons directory exist..deleting..." 2>&1 | tee -a "$LOG" - rm -rf "GTK-themes-icons" 2>&1 | tee -a "$LOG" -fi +remove_dir "GTK-themes-icons" echo "$NOTE Cloning ${SKY_BLUE}GTK themes and Icons${RESET} repository..." 2>&1 | tee -a "$LOG" -if git clone --depth=1 https://github.com/JaKooLit/GTK-themes-icons.git ; then - ( - cd GTK-themes-icons || exit 1 - chmod +x auto-extract.sh - ./auto-extract.sh - ) - echo "$OK Extracted GTK Themes & Icons to ~/.icons & ~/.themes directories" 2>&1 | tee -a "$LOG" +if [[ $NO_BUILD -eq 1 ]]; then + echo "${NOTE} Not cloning or building https://github.com/JaKooLit/GTK-themes-icons.git" else - echo "$ERROR Download failed for GTK themes and Icons.." 2>&1 | tee -a "$LOG" + if git clone --depth=1 https://github.com/JaKooLit/GTK-themes-icons.git; then + ( + cd GTK-themes-icons || exit 1 + if [[ $PEDANTIC_DRY -eq 1 ]]; then + echo "${NOTE} Not running auto-extract.sh or setting it to be executable as we do not want to modify files" + else + chmod +x auto-extract.sh + ./auto-extract.sh + fi + ) + echo "$OK Extracted GTK Themes & Icons to ~/.icons & ~/.themes directories" 2>&1 | tee -a "$LOG" + else + echo "$ERROR Download failed for GTK themes and Icons.." 2>&1 | tee -a "$LOG" + fi fi -printf "\n%.0s" {1..2} \ No newline at end of file +newlines 2 diff --git a/install-scripts/hyprcursor.sh b/install-scripts/hyprcursor.sh index a693d22..a8e9fd1 100755 --- a/install-scripts/hyprcursor.sh +++ b/install-scripts/hyprcursor.sh @@ -2,51 +2,23 @@ # 💫 https://github.com/JaKooLit 💫 # # hyprcursor # - #specific branch or release -lang_tag="v0.1.12" +hyprcursor_tag="v0.1.12" ## WARNING: DO NOT EDIT BEYOND THIS LINE IF YOU DON'T KNOW WHAT YOU ARE DOING! ## -SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" -# Change the working directory to the parent directory of the script -PARENT_DIR="$SCRIPT_DIR/.." -cd "$PARENT_DIR" || { echo "${ERROR} Failed to change directory to $PARENT_DIR"; exit 1; } +set -euo pipefail +IFS=$'\n\t' + +SCRIPT_DIR=$(realpath "$(dirname "${BASH_SOURCE[0]}")") # Source the global functions script -if ! source "$(dirname "$(readlink -f "$0")")/Global_functions.sh"; then - echo "Failed to source Global_functions.sh" - exit 1 -fi +source "$SCRIPT_DIR/Global_functions.sh" || { + echo "Failed to source Global_functions.sh" + exit 1 +} -# Set the name of the log file to include the current date and time -LOG="Install-Logs/install-$(date +%d-%H%M%S)_hyprcursor.log" -MLOG="install-$(date +%d-%H%M%S)_hyprcursor2.log" +execute_script "hyprlang.sh" # Depends on hyprutils +sleep 1 -# Installation of dependencies -printf "\n%s - Installing ${YELLOW}hyprcursor dependencies${RESET} .... \n" "${INFO}" - -# Check if hyprcursor directory exists and remove it -if [ -d "hyprcursor" ]; then - rm -rf "hyprcursor" -fi - -# Clone and build -printf "${INFO} Installing ${YELLOW}hyprcursor $lang_tag${RESET} ...\n" -if git clone --recursive -b $lang_tag https://github.com/hyprwm/hyprcursor.git; then - cd hyprcursor || exit 1 - cmake --no-warn-unused-cli -DCMAKE_BUILD_TYPE:STRING=Release -DCMAKE_INSTALL_PREFIX:PATH=/usr -S . -B ./build - cmake --build ./build --config Release --target all -j"$(nproc 2>/dev/null || getconf _NPROCESSORS_CONF)" - if sudo cmake --install ./build 2>&1 | tee -a "$MLOG" ; then - printf "${OK} ${MAGENTA}hyprcursor $lang_tag${RESET} installed successfully.\n" 2>&1 | tee -a "$MLOG" - else - echo -e "${ERROR} Installation failed for ${YELLOW}hyprcursor $lang_tag${RESET}" 2>&1 | tee -a "$MLOG" - fi - #moving the addional logs to Install-Logs directory - mv "$MLOG" ../Install-Logs/ || true - cd .. -else - echo -e "${ERROR} Download failed for ${YELLOW}hyprcursor $lang_tag${RESET}" 2>&1 | tee -a "$LOG" -fi -rm -rf "hyprcursor" # Cleanup -printf "\n%.0s" {1..2} +build_from_git $hyprcursor_tag "hyprcursor" "cmake_build" "cmake" diff --git a/install-scripts/hyprgraphics.sh b/install-scripts/hyprgraphics.sh index 7212fd3..7ae4b7e 100755 --- a/install-scripts/hyprgraphics.sh +++ b/install-scripts/hyprgraphics.sh @@ -2,51 +2,20 @@ # 💫 https://github.com/JaKooLit 💫 # # hyprgraphics # - #specific branch or release -lang_tag="v0.1.3" +hyprgraphics_tag="v0.1.3" ## WARNING: DO NOT EDIT BEYOND THIS LINE IF YOU DON'T KNOW WHAT YOU ARE DOING! ## -SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" -# Change the working directory to the parent directory of the script -PARENT_DIR="$SCRIPT_DIR/.." -cd "$PARENT_DIR" || { echo "${ERROR} Failed to change directory to $PARENT_DIR"; exit 1; } +set -euo pipefail +IFS=$'\n\t' + +SCRIPT_DIR=$(realpath "$(dirname "${BASH_SOURCE[0]}")") # Source the global functions script -if ! source "$(dirname "$(readlink -f "$0")")/Global_functions.sh"; then - echo "Failed to source Global_functions.sh" - exit 1 -fi +source "$SCRIPT_DIR/Global_functions.sh" || { + echo "Failed to source Global_functions.sh" + exit 1 +} -# Set the name of the log file to include the current date and time -LOG="Install-Logs/install-$(date +%d-%H%M%S)_hyprgraphics.log" -MLOG="install-$(date +%d-%H%M%S)_hyprgraphics2.log" - -# Installation of dependencies -printf "\n%s - Installing ${YELLOW}hyprgraphics dependencies${RESET} .... \n" "${INFO}" - -# Check if hyprgraphics directory exists and remove it -if [ -d "hyprgraphics" ]; then - rm -rf "hyprgraphics" -fi - -# Clone and build -printf "${INFO} Installing ${YELLOW}hyprgraphics $lang_tag${RESET} ...\n" -if git clone --recursive -b $lang_tag https://github.com/hyprwm/hyprgraphics.git; then - cd hyprgraphics || exit 1 - cmake --no-warn-unused-cli -DCMAKE_BUILD_TYPE:STRING=Release -DCMAKE_INSTALL_PREFIX:PATH=/usr -S . -B ./build - cmake --build ./build --config Release --target hyprgraphics -j"$(nproc 2>/dev/null || getconf _NPROCESSORS_CONF)" - if sudo cmake --install ./build 2>&1 | tee -a "$MLOG" ; then - printf "${OK} ${MAGENTA}hyprgraphics $lang_tag${RESET} installed successfully.\n" 2>&1 | tee -a "$MLOG" - else - echo -e "${ERROR} Installation failed for ${YELLOW}hyprgraphics $lang_tag${RESET}" 2>&1 | tee -a "$MLOG" - fi - #moving the addional logs to Install-Logs directory - mv "$MLOG" ../Install-Logs/ || true - cd .. -else - echo -e "${ERROR} Download failed for ${YELLOW}hyprgraphics $lang_tag${RESET}" 2>&1 | tee -a "$LOG" -fi -rm -rf "hyprgraphics" # Cleanup -printf "\n%.0s" {1..2} +build_from_git $hyprgraphics_tag "hyprgraphics" "cmake_build" "cmake" diff --git a/install-scripts/hypridle.sh b/install-scripts/hypridle.sh index bc2570c..f5b3814 100755 --- a/install-scripts/hypridle.sh +++ b/install-scripts/hypridle.sh @@ -7,57 +7,33 @@ idle=( ) #specific branch or release -idle_tag="v0.1.6" +hypridle_tag="v0.1.6" ## WARNING: DO NOT EDIT BEYOND THIS LINE IF YOU DON'T KNOW WHAT YOU ARE DOING! ## -SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" -# Change the working directory to the parent directory of the script -PARENT_DIR="$SCRIPT_DIR/.." -cd "$PARENT_DIR" || { echo "${ERROR} Failed to change directory to $PARENT_DIR"; exit 1; } +set -euo pipefail +IFS=$'\n\t' + +SCRIPT_DIR=$(realpath "$(dirname "${BASH_SOURCE[0]}")") # Source the global functions script -if ! source "$(dirname "$(readlink -f "$0")")/Global_functions.sh"; then - echo "Failed to source Global_functions.sh" - exit 1 -fi +source "$SCRIPT_DIR/Global_functions.sh" || { + echo "Failed to source Global_functions.sh" + exit 1 +} # Set the name of the log file to include the current date and time -LOG="Install-Logs/install-$(date +%d-%H%M%S)_hypridle.log" -MLOG="install-$(date +%d-%H%M%S)_hypridle2.log" +LOG="Install-Logs/install-$(date +%d-%H%M%S)_hypridle_install_dependencies.log" # Installation of dependencies printf "\n%s - Installing ${YELLOW}hypridle dependencies${RESET} .... \n" "${INFO}" for PKG1 in "${idle[@]}"; do - re_install_package "$PKG1" 2>&1 | tee -a "$LOG" - if [ $? -ne 0 ]; then - echo -e "\e[1A\e[K${ERROR} - ${YELLOW}$PKG1${RESET} Package installation failed, Please check the installation logs" - exit 1 - fi + re_install_package "$PKG1" 2>&1 | tee -a "$LOG" + if ! re_install_package "$PKG1" 2>&1 | tee -a "$LOG"; then + echo -e "\e[1A\e[K${ERROR} - ${YELLOW}$PKG1${RESET} Package installation failed, Please check the installation logs" + exit 1 + fi done -# Check if hypridle directory exists and remove it -if [ -d "hypridle" ]; then - rm -rf "hypridle" -fi - -# Clone and build -printf "${INFO} Installing ${YELLOW}hypridle $idle_tag${RESET} ...\n" -if git clone --recursive -b $idle_tag https://github.com/hyprwm/hypridle.git; then - cd hypridle || exit 1 - cmake --no-warn-unused-cli -DCMAKE_BUILD_TYPE:STRING=Release -S . -B ./build - cmake --build ./build --config Release --target hypridle -j"$(nproc 2>/dev/null || getconf NPROCESSORS_CONF)" - if sudo cmake --install ./build 2>&1 | tee -a "$MLOG" ; then - printf "${OK} ${MAGENTA}hypridle $idle_tag${RESET} installed successfully.\n" 2>&1 | tee -a "$MLOG" - else - echo -e "${ERROR} Installation failed for ${YELLOW}hypridle $idle_tag${RESET}" 2>&1 | tee -a "$MLOG" - fi - #moving the addional logs to Install-Logs directory - mv "$MLOG" ../Install-Logs/ || true - cd .. -else - echo -e "${ERROR} Download failed for ${YELLOW}hypridle $idle_tag${RESET}" 2>&1 | tee -a "$LOG" -fi -rm -rf "hypridle" # Cleanup -printf "\n%.0s" {1..2} +build_from_git $hypridle_tag "hypridle" "cmake_build" "cmake" diff --git a/install-scripts/hyprland-protocols.sh b/install-scripts/hyprland-protocols.sh index 69af7cd..4b4b6d5 100755 --- a/install-scripts/hyprland-protocols.sh +++ b/install-scripts/hyprland-protocols.sh @@ -2,50 +2,20 @@ # 💫 https://github.com/JaKooLit 💫 # # hyprland-protocols # - #specific branch or release -lang_tag="v0.6.4" +hyprland_protocols_tag="v0.6.4" ## WARNING: DO NOT EDIT BEYOND THIS LINE IF YOU DON'T KNOW WHAT YOU ARE DOING! ## -SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" -# Change the working directory to the parent directory of the script -PARENT_DIR="$SCRIPT_DIR/.." -cd "$PARENT_DIR" || { echo "${ERROR} Failed to change directory to $PARENT_DIR"; exit 1; } +set -euo pipefail +IFS=$'\n\t' + +SCRIPT_DIR=$(realpath "$(dirname "${BASH_SOURCE[0]}")") # Source the global functions script -if ! source "$(dirname "$(readlink -f "$0")")/Global_functions.sh"; then - echo "Failed to source Global_functions.sh" - exit 1 -fi +source "$SCRIPT_DIR/Global_functions.sh" || { + echo "Failed to source Global_functions.sh" + exit 1 +} -# Set the name of the log file to include the current date and time -LOG="Install-Logs/install-$(date +%d-%H%M%S)_hyprland-protocols.log" -MLOG="install-$(date +%d-%H%M%S)_hyprland-protocols2.log" - -# Installation of dependencies -printf "\n%s - Installing ${YELLOW}hyprland-protocols dependencies${RESET} .... \n" "${INFO}" - -# Check if hyprland-protocols directory exists and remove it -if [ -d "hyprland-protocols" ]; then - rm -rf "hyprland-protocols" -fi - -# Clone and build -printf "${INFO} Installing ${YELLOW}hyprland-protocols $lang_tag${RESET} ...\n" -if git clone --recursive -b $lang_tag https://github.com/hyprwm/hyprland-protocols.git; then - cd hyprland-protocols || exit 1 - meson setup build - if sudo meson install -C ./build 2>&1 | tee -a "$MLOG" ; then - printf "${OK} ${MAGENTA}hyprland-protocols $lang_tag${RESET} installed successfully.\n" 2>&1 | tee -a "$MLOG" - else - echo -e "${ERROR} Installation failed for ${YELLOW}hyprland-protocols $lang_tag${RESET}" 2>&1 | tee -a "$MLOG" - fi - #moving the addional logs to Install-Logs directory - mv "$MLOG" ../Install-Logs/ || true - cd .. -else - echo -e "${ERROR} Download failed for ${YELLOW}hyprland-protocols $lang_tag${RESET}" 2>&1 | tee -a "$LOG" -fi -rm -rf "hyprland-protocols" # Cleanup -printf "\n%.0s" {1..2} +build_from_git $hyprland_protocols_tag "hyprland-protocols" "meson" "meson" diff --git a/install-scripts/hyprland-qt-support.sh b/install-scripts/hyprland-qt-support.sh index 276a505..4aaadb4 100755 --- a/install-scripts/hyprland-qt-support.sh +++ b/install-scripts/hyprland-qt-support.sh @@ -2,51 +2,20 @@ # 💫 https://github.com/JaKooLit 💫 # # hyprland-qt-support # - #specific branch or release -lang_tag="v0.1.0" +hyprland_qt_support="v0.1.0" ## WARNING: DO NOT EDIT BEYOND THIS LINE IF YOU DON'T KNOW WHAT YOU ARE DOING! ## -SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" -# Change the working directory to the parent directory of the script -PARENT_DIR="$SCRIPT_DIR/.." -cd "$PARENT_DIR" || { echo "${ERROR} Failed to change directory to $PARENT_DIR"; exit 1; } +set -euo pipefail +IFS=$'\n\t' + +SCRIPT_DIR=$(realpath "$(dirname "${BASH_SOURCE[0]}")") # Source the global functions script -if ! source "$(dirname "$(readlink -f "$0")")/Global_functions.sh"; then - echo "Failed to source Global_functions.sh" - exit 1 -fi +source "$SCRIPT_DIR/Global_functions.sh" || { + echo "Failed to source Global_functions.sh" + exit 1 +} -# Set the name of the log file to include the current date and time -LOG="Install-Logs/install-$(date +%d-%H%M%S)_hyprland-qt-support.log" -MLOG="install-$(date +%d-%H%M%S)_hyprland-qt-support2.log" - -# Installation of dependencies -printf "\n%s - Installing ${YELLOW}hyprland-qt-support dependencies${RESET} .... \n" "${INFO}" - -# Check if hyprland-qt-support directory exists and remove it -if [ -d "hyprland-qt-support" ]; then - rm -rf "hyprland-qt-support" -fi - -# Clone and build -printf "${INFO} Installing ${YELLOW}hyprland-qt-support $lang_tag${RESET} ...\n" -if git clone --recursive -b $lang_tag https://github.com/hyprwm/hyprland-qt-support.git; then - cd hyprland-qt-support || exit 1 - cmake --no-warn-unused-cli -DCMAKE_BUILD_TYPE:STRING=Release -DCMAKE_INSTALL_PREFIX:PATH=/usr -DINSTALL_QML_PREFIX=/usr/lib/x86_64-linux-gnu/qt6/qml -S . -B ./build - cmake --build ./build --config Release --target all -j"$(nproc 2>/dev/null || getconf _NPROCESSORS_CONF)" - if sudo cmake --install ./build 2>&1 | tee -a "$MLOG" ; then - printf "${OK} ${MAGENTA}hyprland-qt-support $lang_tag${RESET} installed successfully.\n" 2>&1 | tee -a "$MLOG" - else - echo -e "${ERROR} Installation failed for ${YELLOW}hyprland-qt-support $lang_tag${RESET}" 2>&1 | tee -a "$MLOG" - fi - #moving the addional logs to Install-Logs directory - mv "$MLOG" ../Install-Logs/ || true - cd .. -else - echo -e "${ERROR} Download failed for ${YELLOW}hyprland-qt-support $lang_tag${RESET}" 2>&1 | tee -a "$LOG" -fi -rm -rf "hyprland-qt-support" # Cleanup -printf "\n%.0s" {1..2} +build_from_git $hyprland_qt_support "hyprland-qt-support" "hyprland-qt-support" "cmake" diff --git a/install-scripts/hyprland-qtutils.sh b/install-scripts/hyprland-qtutils.sh index 636a976..a58331a 100755 --- a/install-scripts/hyprland-qtutils.sh +++ b/install-scripts/hyprland-qtutils.sh @@ -2,51 +2,23 @@ # 💫 https://github.com/JaKooLit 💫 # # hyprland-qtutils # - #specific branch or release -lang_tag="v0.1.4" +hyprland_qtutils_tag="v0.1.4" ## WARNING: DO NOT EDIT BEYOND THIS LINE IF YOU DON'T KNOW WHAT YOU ARE DOING! ## -SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" + +set -euo pipefail +IFS=$'\n\t' + +SCRIPT_DIR=$(realpath "$(dirname "${BASH_SOURCE[0]}")") # Change the working directory to the parent directory of the script PARENT_DIR="$SCRIPT_DIR/.." -cd "$PARENT_DIR" || { echo "${ERROR} Failed to change directory to $PARENT_DIR"; exit 1; } # Source the global functions script -if ! source "$(dirname "$(readlink -f "$0")")/Global_functions.sh"; then - echo "Failed to source Global_functions.sh" - exit 1 -fi +source "$SCRIPT_DIR/Global_functions.sh" || { + echo "Failed to source Global_functions.sh" + exit 1 +} -# Set the name of the log file to include the current date and time -LOG="Install-Logs/install-$(date +%d-%H%M%S)_hyprland-qtutils.log" -MLOG="install-$(date +%d-%H%M%S)_hyprland-qtutils2.log" - -# Installation of dependencies -printf "\n%s - Installing ${YELLOW}hyprland-qtutils dependencies${RESET} .... \n" "${INFO}" - -# Check if hyprland-qtutils directory exists and remove it -if [ -d "hyprland-qtutils" ]; then - rm -rf "hyprland-qtutils" -fi - -# Clone and build -printf "${INFO} Installing ${YELLOW}hyprland-qtutils $lang_tag${RESET} ...\n" -if git clone --recursive -b $lang_tag https://github.com/hyprwm/hyprland-qtutils.git; then - cd hyprland-qtutils || exit 1 - cmake --no-warn-unused-cli -DCMAKE_BUILD_TYPE:STRING=Release -DCMAKE_INSTALL_PREFIX:PATH=/usr -S . -B ./build - cmake --build ./build --config Release --target all -j"$(nproc 2>/dev/null || getconf _NPROCESSORS_CONF)" - if sudo cmake --install ./build 2>&1 | tee -a "$MLOG" ; then - printf "${OK} ${MAGENTA}hyprland-qtutils $lang_tag${RESET} installed successfully.\n" 2>&1 | tee -a "$MLOG" - else - echo -e "${ERROR} Installation failed for ${YELLOW}hyprland-qtutils $lang_tag${RESET}" 2>&1 | tee -a "$MLOG" - fi - #moving the addional logs to Install-Logs directory - mv "$MLOG" ../Install-Logs/ || true - cd .. -else - echo -e "${ERROR} Download failed for ${YELLOW}hyprland-qtutils $lang_tag${RESET}" 2>&1 | tee -a "$LOG" -fi -rm -rf "hyprland-qtutils" # Cleanup -printf "\n%.0s" {1..2} +build_from_git $hyprland_qtutils_tag "hyprland-qtutils" "cmake_build" "cmake" diff --git a/install-scripts/hyprland.sh b/install-scripts/hyprland.sh index f75db6b..9177662 100755 --- a/install-scripts/hyprland.sh +++ b/install-scripts/hyprland.sh @@ -2,51 +2,40 @@ # 💫 https://github.com/JaKooLit 💫 # # hyprland # - #specific branch or release -lang_tag="v0.49.0" +hyprland_tag="v0.49.0" ## WARNING: DO NOT EDIT BEYOND THIS LINE IF YOU DON'T KNOW WHAT YOU ARE DOING! ## -SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" -# Change the working directory to the parent directory of the script -PARENT_DIR="$SCRIPT_DIR/.." -cd "$PARENT_DIR" || { echo "${ERROR} Failed to change directory to $PARENT_DIR"; exit 1; } +set -euo pipefail +IFS=$'\n\t' + +SCRIPT_DIR=$(realpath "$(dirname "${BASH_SOURCE[0]}")") # Source the global functions script -if ! source "$(dirname "$(readlink -f "$0")")/Global_functions.sh"; then - echo "Failed to source Global_functions.sh" - exit 1 -fi +source "$SCRIPT_DIR/Global_functions.sh" || { + echo "Failed to source Global_functions.sh" + exit 1 +} -# Set the name of the log file to include the current date and time -LOG="Install-Logs/install-$(date +%d-%H%M%S)_hyprland.log" -MLOG="install-$(date +%d-%H%M%S)_hyprland2.log" +verbose_log "Need to build hyprland dependencies from source first." +# Dependencies +execute_script "hyprcursor.sh" # Depends on hyprlang +sleep 1 +execute_script "hyprgraphics.sh" +sleep 1 +execute_script "hyprland-qt-support.sh" +sleep 1 +execute_script "hyprland-qtutils.sh" +sleep 1 +execute_script "hyprwayland-scanner.sh" +sleep 1 +execute_script "aquamarine.sh" +sleep 1 +execute_script "hyprland-protocols.sh" +sleep 1 +execute_script "hypridle.sh" +sleep 1 +execute_script "hyprlock.sh" -# Installation of dependencies -printf "\n%s - Installing ${YELLOW}hyprland dependencies${RESET} .... \n" "${INFO}" - -# Check if hyprland directory exists and remove it -if [ -d "hyprland" ]; then - rm -rf "hyprland" -fi - -# Clone and build -printf "${INFO} Installing ${YELLOW}hyprland $lang_tag${RESET} ...\n" -if git clone --recursive -b $lang_tag https://github.com/hyprwm/hyprland.git; then - cd hyprland || exit 1 - cmake --no-warn-unused-cli -DCMAKE_BUILD_TYPE:STRING=Release -DCMAKE_INSTALL_PREFIX:PATH=/usr -S . -B ./build - cmake --build ./build --config Release --target all -j"$(nproc 2>/dev/null || getconf _NPROCESSORS_CONF)" - if sudo cmake --install ./build 2>&1 | tee -a "$MLOG" ; then - printf "${OK} ${MAGENTA}hyprland $lang_tag${RESET} installed successfully.\n" 2>&1 | tee -a "$MLOG" - else - echo -e "${ERROR} Installation failed for ${YELLOW}hyprland $lang_tag${RESET}" 2>&1 | tee -a "$MLOG" - fi - #moving the addional logs to Install-Logs directory - mv "$MLOG" ../Install-Logs/ || true - cd .. -else - echo -e "${ERROR} Download failed for ${YELLOW}hyprland $lang_tag${RESET}" 2>&1 | tee -a "$LOG" -fi -rm -rf "hyprland" # Cleanup -printf "\n%.0s" {1..2} +build_from_git $hyprland_tag "hyprland" "cmake_build" "cmake" diff --git a/install-scripts/hyprlang.sh b/install-scripts/hyprlang.sh index 9913f24..42c7913 100755 --- a/install-scripts/hyprlang.sh +++ b/install-scripts/hyprlang.sh @@ -2,51 +2,23 @@ # 💫 https://github.com/JaKooLit 💫 # # hyprlang # - #specific branch or release -lang_tag="v0.6.3" +hyprlang_tag="v0.6.3" ## WARNING: DO NOT EDIT BEYOND THIS LINE IF YOU DON'T KNOW WHAT YOU ARE DOING! ## -SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" -# Change the working directory to the parent directory of the script -PARENT_DIR="$SCRIPT_DIR/.." -cd "$PARENT_DIR" || { echo "${ERROR} Failed to change directory to $PARENT_DIR"; exit 1; } +set -euo pipefail +IFS=$'\n\t' + +SCRIPT_DIR=$(realpath "$(dirname "${BASH_SOURCE[0]}")") # Source the global functions script -if ! source "$(dirname "$(readlink -f "$0")")/Global_functions.sh"; then - echo "Failed to source Global_functions.sh" - exit 1 -fi +source "$SCRIPT_DIR/Global_functions.sh" || { + echo "Failed to source Global_functions.sh" + exit 1 +} -# Set the name of the log file to include the current date and time -LOG="Install-Logs/install-$(date +%d-%H%M%S)_hyprlang.log" -MLOG="install-$(date +%d-%H%M%S)_hyprlang2.log" +execute_script "hyprutils.sh" # Order is very specific for dependencies are scattered +sleep 1 -# Installation of dependencies -printf "\n%s - Installing ${YELLOW}hyprlang dependencies${RESET} .... \n" "${INFO}" - -# Check if hyprlang directory exists and remove it -if [ -d "hyprlang" ]; then - rm -rf "hyprlang" -fi - -# Clone and build -printf "${INFO} Installing ${YELLOW}hyprlang $lang_tag${RESET} ...\n" -if git clone --recursive -b $lang_tag https://github.com/hyprwm/hyprlang.git; then - cd hyprlang || exit 1 - cmake --no-warn-unused-cli -DCMAKE_BUILD_TYPE:STRING=Release -DCMAKE_INSTALL_PREFIX:PATH=/usr -S . -B ./build - cmake --build ./build --config Release --target hyprlang -j"$(nproc 2>/dev/null || getconf _NPROCESSORS_CONF)" - if sudo cmake --install ./build 2>&1 | tee -a "$MLOG" ; then - printf "${OK} ${MAGENTA}hyprlang $lang_tag${RESET} installed successfully.\n" 2>&1 | tee -a "$MLOG" - else - echo -e "${ERROR} Installation failed for ${YELLOW}hyprlang $lang_tag${RESET}" 2>&1 | tee -a "$MLOG" - fi - #moving the addional logs to Install-Logs directory - mv "$MLOG" ../Install-Logs/ || true - cd .. -else - echo -e "${ERROR} Download failed for ${YELLOW}hyprlang $lang_tag${RESET}" 2>&1 | tee -a "$LOG" -fi -rm -rf "hyprlang" # Cleanup -printf "\n%.0s" {1..2} +build_from_git $hyprlang_tag "hyprlang" "cmake_build" "cmake" diff --git a/install-scripts/hyprlock.sh b/install-scripts/hyprlock.sh index c1d7bdc..ba73f56 100755 --- a/install-scripts/hyprlock.sh +++ b/install-scripts/hyprlock.sh @@ -3,61 +3,45 @@ # hyprlock # lock=( - libpam0g-dev - libgbm-dev - libdrm-dev + libpam0g-dev + libgbm-dev + libdrm-dev libmagic-dev libsdbus-c++-dev ) #specific branch or release -lock_tag="v0.8.2" +hyprlock_tag="v0.8.2" ## WARNING: DO NOT EDIT BEYOND THIS LINE IF YOU DON'T KNOW WHAT YOU ARE DOING! ## -SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" + +set -euo pipefail +IFS=$'\n\t' + +SCRIPT_DIR=$(realpath "$(dirname "${BASH_SOURCE[0]}")") # Change the working directory to the parent directory of the script PARENT_DIR="$SCRIPT_DIR/.." -cd "$PARENT_DIR" || { echo "${ERROR} Failed to change directory to $PARENT_DIR"; exit 1; } # Source the global functions script -if ! source "$(dirname "$(readlink -f "$0")")/Global_functions.sh"; then - echo "Failed to source Global_functions.sh" - exit 1 -fi +source "$SCRIPT_DIR/Global_functions.sh" || { + echo "Failed to source Global_functions.sh" + exit 1 +} + +cd "$PARENT_DIR" || { + echo "${ERROR} Failed to change directory to $PARENT_DIR" + exit 1 +} # Set the name of the log file to include the current date and time -LOG="Install-Logs/install-$(date +%d-%H%M%S)_hyprlock.log" -MLOG="install-$(date +%d-%H%M%S)_hyprlock2.log" +LOG="Install-Logs/install-$(date +%d-%H%M%S)_hyprlock_install_dependencies.log" # Installation of dependencies printf "\n%s - Installing ${YELLOW}hyprlock dependencies${RESET} .... \n" "${INFO}" for PKG1 in "${lock[@]}"; do - re_install_package "$PKG1" "$LOG" + re_install_package "$PKG1" "$LOG" done -# Check if hyprlock directory exists and remove it -if [ -d "hyprlock" ]; then - rm -rf "hyprlock" -fi - -# Clone and build hyprlock -printf "${INFO} Installing ${YELLOW}hyprlock $lock_tag${RESET} ...\n" -if git clone --recursive -b $lock_tag https://github.com/hyprwm/hyprlock.git; then - cd hyprlock || exit 1 - cmake --no-warn-unused-cli -DCMAKE_BUILD_TYPE:STRING=Release -S . -B ./build - cmake --build ./build --config Release --target hyprlock -j"$(nproc 2>/dev/null || getconf _NPROCESSORS_CONF)" - if sudo cmake --install build 2>&1 | tee -a "$MLOG" ; then - printf "${OK} ${YELLOW}hyprlock $lock_tag${RESET} installed successfully.\n" 2>&1 | tee -a "$MLOG" - else - echo -e "${ERROR} Installation failed for ${YELLOW}hyprlock $lock_tag${RESET}" 2>&1 | tee -a "$MLOG" - fi - #moving the addional logs to Install-Logs directory - mv "$MLOG" ../Install-Logs/ || true - cd .. -else - echo -e "${ERROR} Download failed for ${YELLOW}hyprlock $lock_tag${RESET}" 2>&1 | tee -a "$LOG" -fi -rm -rf "hyprlock" # Cleanup -printf "\n%.0s" {1..2} +build_from_git $hyprlock_tag "hyprlock" "cmake_build" "cmake" diff --git a/install-scripts/hyprutils.sh b/install-scripts/hyprutils.sh index 3929392..7f7269e 100755 --- a/install-scripts/hyprutils.sh +++ b/install-scripts/hyprutils.sh @@ -2,51 +2,20 @@ # 💫 https://github.com/JaKooLit 💫 # # hyprutils # - #specific branch or release -lang_tag="v0.7.1" +hyprutils_tag="v0.7.1" ## WARNING: DO NOT EDIT BEYOND THIS LINE IF YOU DON'T KNOW WHAT YOU ARE DOING! ## -SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" -# Change the working directory to the parent directory of the script -PARENT_DIR="$SCRIPT_DIR/.." -cd "$PARENT_DIR" || { echo "${ERROR} Failed to change directory to $PARENT_DIR"; exit 1; } +set -euo pipefail +IFS=$'\n\t' + +SCRIPT_DIR=$(realpath "$(dirname "${BASH_SOURCE[0]}")") # Source the global functions script -if ! source "$(dirname "$(readlink -f "$0")")/Global_functions.sh"; then - echo "Failed to source Global_functions.sh" - exit 1 -fi +source "$SCRIPT_DIR/Global_functions.sh" || { + echo "Failed to source Global_functions.sh" + exit 1 +} -# Set the name of the log file to include the current date and time -LOG="Install-Logs/install-$(date +%d-%H%M%S)_hyprutils.log" -MLOG="install-$(date +%d-%H%M%S)_hyprutils2.log" - -# Installation of dependencies -printf "\n%s - Installing ${YELLOW}hyprutils dependencies${RESET} .... \n" "${INFO}" - -# Check if hyprutils directory exists and remove it -if [ -d "hyprutils" ]; then - rm -rf "hyprutils" -fi - -# Clone and build -printf "${INFO} Installing ${YELLOW}hyprutils $lang_tag${RESET} ...\n" -if git clone --recursive -b $lang_tag https://github.com/hyprwm/hyprutils.git; then - cd hyprutils || exit 1 - cmake --no-warn-unused-cli -DCMAKE_BUILD_TYPE:STRING=Release -DCMAKE_INSTALL_PREFIX:PATH=/usr -S . -B ./build - cmake --build ./build --config Release --target hyprutils -j"$(nproc 2>/dev/null || getconf _NPROCESSORS_CONF)" - if sudo cmake --install ./build 2>&1 | tee -a "$MLOG" ; then - printf "${OK} ${MAGENTA}hyprutils $lang_tag${RESET} installed successfully.\n" 2>&1 | tee -a "$MLOG" - else - echo -e "${ERROR} Installation failed for ${YELLOW}hyprutils $lang_tag${RESET}" 2>&1 | tee -a "$MLOG" - fi - #moving the addional logs to Install-Logs directory - mv "$MLOG" ../Install-Logs/ || true - cd .. -else - echo -e "${ERROR} Download failed for ${YELLOW}hyprutils $lang_tag${RESET}" 2>&1 | tee -a "$LOG" -fi -rm -rf "hyprutils" # Cleanup -printf "\n%.0s" {1..2} +build_from_git $hyprutils_tag "hyprutils" "cmake_build" "cmake" diff --git a/install-scripts/hyprwayland-scanner.sh b/install-scripts/hyprwayland-scanner.sh index 02f4363..2613307 100755 --- a/install-scripts/hyprwayland-scanner.sh +++ b/install-scripts/hyprwayland-scanner.sh @@ -2,51 +2,20 @@ # 💫 https://github.com/JaKooLit 💫 # # hyprwayland-scanner # - #specific branch or release -lang_tag="v0.4.4" +hyprwayland_scanner_tag="v0.4.4" ## WARNING: DO NOT EDIT BEYOND THIS LINE IF YOU DON'T KNOW WHAT YOU ARE DOING! ## -SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" -# Change the working directory to the parent directory of the script -PARENT_DIR="$SCRIPT_DIR/.." -cd "$PARENT_DIR" || { echo "${ERROR} Failed to change directory to $PARENT_DIR"; exit 1; } +set -euo pipefail +IFS=$'\n\t' + +SCRIPT_DIR=$(realpath "$(dirname "${BASH_SOURCE[0]}")") # Source the global functions script -if ! source "$(dirname "$(readlink -f "$0")")/Global_functions.sh"; then - echo "Failed to source Global_functions.sh" - exit 1 -fi +source "$SCRIPT_DIR/Global_functions.sh" || { + echo "Failed to source Global_functions.sh" + exit 1 +} -# Set the name of the log file to include the current date and time -LOG="Install-Logs/install-$(date +%d-%H%M%S)_hyprwayland-scanner.log" -MLOG="install-$(date +%d-%H%M%S)_hyprwayland-scanner2.log" - -# Installation of dependencies -printf "\n%s - Installing ${YELLOW}hyprwayland-scanner dependencies${RESET} .... \n" "${INFO}" - -# Check if hyprwayland-scanner directory exists and remove it -if [ -d "hyprwayland-scanner" ]; then - rm -rf "hyprwayland-scanner" -fi - -# Clone and build -printf "${INFO} Installing ${YELLOW}hyprwayland-scanner $lang_tag${RESET} ...\n" -if git clone --recursive -b $lang_tag https://github.com/hyprwm/hyprwayland-scanner.git; then - cd hyprwayland-scanner || exit 1 - cmake -DCMAKE_INSTALL_PREFIX=/usr -B build - cmake --build build -j "$(nproc)" - if sudo cmake --install ./build 2>&1 | tee -a "$MLOG" ; then - printf "${OK} ${MAGENTA}hyprwayland-scanner $lang_tag${RESET} installed successfully.\n" 2>&1 | tee -a "$MLOG" - else - echo -e "${ERROR} Installation failed for ${YELLOW}hyprwayland-scanner $lang_tag${RESET}" 2>&1 | tee -a "$MLOG" - fi - #moving the addional logs to Install-Logs directory - mv "$MLOG" ../Install-Logs/ || true - cd .. -else - echo -e "${ERROR} Download failed for ${YELLOW}hyprwayland-scanner $lang_tag${RESET}" 2>&1 | tee -a "$LOG" -fi -rm -rf "hyprwayland-scanner" # Cleanup -printf "\n%.0s" {1..2} +build_from_git $hyprwayland_scanner_tag "hyprwayland-scanner" "hyprwayland-scanner" "cmake" diff --git a/install-scripts/nvidia.sh b/install-scripts/nvidia.sh index 401adf2..cbf4443 100755 --- a/install-scripts/nvidia.sh +++ b/install-scripts/nvidia.sh @@ -4,53 +4,81 @@ # UBUNTU USERS, FOLLOW README! nvidia_pkg=( - nvidia-driver - firmware-misc-nonfree - nvidia-kernel-dkms - linux-headers-"$(uname -r)" - libnvidia-egl-wayland1 - libva-wayland2 - libnvidia-egl-wayland1 - nvidia-vaapi-driver + nvidia-driver + firmware-misc-nonfree + nvidia-kernel-dkms + linux-headers-"$(uname -r)" + libnvidia-egl-wayland1 + libva-wayland2 + libnvidia-egl-wayland1 + nvidia-vaapi-driver ) ## WARNING: DO NOT EDIT BEYOND THIS LINE IF YOU DON'T KNOW WHAT YOU ARE DOING! ## -SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" + +set -euo pipefail +IFS=$'\n\t' + +SCRIPT_DIR=$(realpath "$(dirname "${BASH_SOURCE[0]}")") # Change the working directory to the parent directory of the script PARENT_DIR="$SCRIPT_DIR/.." -cd "$PARENT_DIR" || { echo "${ERROR} Failed to change directory to $PARENT_DIR"; exit 1; } # Source the global functions script -if ! source "$(dirname "$(readlink -f "$0")")/Global_functions.sh"; then - echo "Failed to source Global_functions.sh" - exit 1 -fi +source "$SCRIPT_DIR/Global_functions.sh" || { + echo "Failed to source Global_functions.sh" + exit 1 +} + +cd "$PARENT_DIR" || { + echo "${ERROR} Failed to change directory to $PARENT_DIR" + exit 1 +} # Set the name of the log file to include the current date and time LOG="Install-Logs/install-$(date +%d-%H%M%S)_nvidia.log" MLOG="install-$(date +%d-%H%M%S)_nvidia2.log" -## adding the deb source for nvidia driver -# Create a backup of the sources.list file -sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup 2>&1 | tee -a "$LOG" +if [[ $DRY -eq 1 ]]; then + echo "Not creating /etc/apt/sources.list.d/sid.sources to fetch packages from Debian Sid (unstable)" +else + ## adding the deb source for nvidia driver + # Create a backup of the sources.list file + if [[ -f /etc/apt/sources.list.d/sid.sources ]]; then + verbose_log "Copying /etc/apt/sources.list.d/sid.sources to /etc/apt/sources.list.d/sid.sources.backup with sudo cp -a since /etc/apt/sources.list.d/sid.sources exists" + sudo cp -a /etc/apt/sources.list.d/sid.sources /etc/apt/sources.list.d/sid.sources.backup 2>&1 | tee -a "$LOG" + else + verbose_log "/etc/apt/sources.list.d/sid.sources nonexistent, so not backing up with cp" + fi -## UBUNTU - NVIDIA (comment this two by adding # you dont need this!) -# Add the comment and repository entry to sources.list -echo "## for nvidia" | sudo tee -a /etc/apt/sources.list 2>&1 | tee -a "$LOG" -echo "deb http://deb.debian.org/debian/ trixie main contrib non-free non-free-firmware" | sudo tee -a /etc/apt/sources.list 2>&1 | tee -a "$LOG" + ## UBUNTU - NVIDIA (comment this nine by adding # you don't need this!) + # Add the comment and repository entry to sources.list + echo "## for nvidia" | sudo tee -a /etc/apt/sources.list.d/sid.sources 2>&1 | tee -a "$LOG" + cat "/etc/apt/sources.list.d/sid.sources" <> '$config_file'" + if [[ $DRY -eq 1 ]]; then + echo "${NOTE} Not adding $value to $config_file" + else + sudo sh -c "echo '$value' >> '$config_file'" + fi else echo "$value is already present in $config_file." fi @@ -58,52 +86,68 @@ add_to_file() { # Install additional Nvidia packages printf "${YELLOW} Installing ${SKY_BLUE}Nvidia packages${RESET} ...\n" - for NVIDIA in "${nvidia_pkg[@]}"; do +for NVIDIA in "${nvidia_pkg[@]}"; do install_package "$NVIDIA" "$LOG" - done +done # adding additional nvidia-stuff printf "${YELLOW} adding ${SKY_BLUE}nvidia-stuff${RESET} to /etc/default/grub..." - # Additional options to add to GRUB_CMDLINE_LINUX - additional_options="rd.driver.blacklist=nouveau modprobe.blacklist=nouveau nvidia-drm.modeset=1 rcutree.rcu_idle_gp_delay=1" +# Additional options to add to GRUB_CMDLINE_LINUX +additional_options="rd.driver.blacklist=nouveau modprobe.blacklist=nouveau nvidia-drm.modeset=1 rcutree.rcu_idle_gp_delay=1" - # Check if additional options are already present in GRUB_CMDLINE_LINUX - if grep -q "GRUB_CMDLINE_LINUX.*$additional_options" /etc/default/grub; then +# Check if additional options are already present in GRUB_CMDLINE_LINUX +if grep -q "GRUB_CMDLINE_LINUX.*$additional_options" /etc/default/grub; then echo "GRUB_CMDLINE_LINUX already contains the additional options" - else - # Append the additional options to GRUB_CMDLINE_LINUX - sudo sed -i "s/GRUB_CMDLINE_LINUX=\"/GRUB_CMDLINE_LINUX=\"$additional_options /" /etc/default/grub - echo "Added the additional options to GRUB_CMDLINE_LINUX" - fi +else + if [[ $DRY -eq 1 ]]; then + echo "${NOTE} Not adding 'rd.driver.blacklist=nouveau modprobe.blacklist=nouveau nvidia-drm.modeset=1 rcutree.rcu_idle_gp_delay=1' to GRUB_CMDLINE_LINUX in /etc/default/grub" + else + # Append the additional options to GRUB_CMDLINE_LINUX + sudo sed -i "s/GRUB_CMDLINE_LINUX=\"/GRUB_CMDLINE_LINUX=\"$additional_options /" /etc/default/grub + echo "Added the additional options to GRUB_CMDLINE_LINUX" + fi +fi - # Update GRUB configuration - sudo update-grub 2>&1 | tee -a "$LOG" - - # Define the configuration file and the line to add - config_file="/etc/modprobe.d/nvidia.conf" - line_to_add=""" +if [[ $DRY -eq 1 ]]; then + echo "${NOTE} Not updating GRUB configuration with sudo update-grub" +else + # Update GRUB configuration + sudo update-grub 2>&1 | tee -a "$LOG" +fi + +# Define the configuration file and the line to add +config_file="/etc/modprobe.d/nvidia.conf" +line_to_add=""" options nvidia-drm modeset=1 fbdev=1 options nvidia NVreg_PreserveVideoMemoryAllocations=1 """ - # Check if the config file exists - if [ ! -e "$config_file" ]; then - echo "Creating $config_file" +# Check if the config file exists +if [ ! -e "$config_file" ]; then + echo "Creating $config_file" + if [[ $DRY -eq 1 ]]; then + echo "${NOTE} Not creating $config_file with touch" + else sudo touch "$config_file" 2>&1 | tee -a "$LOG" fi +fi - add_to_file "$config_file" "$line_to_add" +add_to_file "$config_file" "$line_to_add" - # Add NVIDIA modules to initramfs configuration - modules_to_add="nvidia nvidia_modeset nvidia_uvm nvidia_drm" - modules_file="/etc/initramfs-tools/modules" +# Add NVIDIA modules to initramfs configuration +modules_to_add="nvidia nvidia_modeset nvidia_uvm nvidia_drm" +modules_file="/etc/initramfs-tools/modules" - if [ -e "$modules_file" ]; then +if [ -e "$modules_file" ]; then add_to_file "$modules_file" "$modules_to_add" 2>&1 | tee -a "$LOG" - sudo update-initramfs -u 2>&1 | tee -a "$LOG" - else + if [[ $DRY -eq 1 ]]; then + echo "${NOTE} Not updating initramfs with sudo update-initramfs -uk all" + else + sudo update-initramfs -uk all 2>&1 | tee -a "$LOG" + fi +else echo "Modules file ($modules_file) not found." 2>&1 | tee -a "$LOG" - fi +fi -printf "\n%.0s" {1..2} +newlines 2 diff --git a/install-scripts/parse_args.sh b/install-scripts/parse_args.sh new file mode 100755 index 0000000..536721f --- /dev/null +++ b/install-scripts/parse_args.sh @@ -0,0 +1,254 @@ +#!/bin/bash +# Helper file for parsing arguments, exposing only the parse_args function and important argument variables +# Argument parsing is for install.sh though + +set -aeuo pipefail +IFS=$'\n\t' + +# Header guard since this should be executed only once +[[ -v SOURCED_PARSE_ARGS ]] && return +SOURCED_PARSE_ARGS= + +SCRIPT_DIR=$(realpath "$(dirname "${BASH_SOURCE[0]}")") + +source "$SCRIPT_DIR/colors.sh" || { + echo "Failed to source colors.sh" + exit 1 +} + +# Define main argument variables + +if [[ ! -v VERBOSE ]]; then + VERBOSE=0 + DRY=0 + DRY_RUN_DIR_SET=0 + DRY_RUN_DIR="" + PEDANTIC_DRY=0 + NO_BUILD=0 + PRESET="" + PRESET_ENABLED=0 + PURGE=0 +fi + +# Parse arguments by passing "$@" to this for ./install.sh +parse_args() { + # Are there no arguments? If so, this is a useless function + if [[ $# -eq 0 ]]; then return; fi + + # Define argument parsing options + LONGOPTS=help,verbose,dry-run,dry-run-dir:,pedantic-dry-run,no-build,preset: + SHORTOPTS=hvd:p: + + # Print help message + print_help() { + echo "Usage: $0 [-hv] [-d DRY_RUN_DIR] [-p PRESET] [--dry-run] [--dry-run-dir DRY_RUN_DIR] [--pedantic-dry-run] [--help] [--verbose]" + echo "[--preset PRESET]" + echo "Run the install script for KooL's automated install of Hyprland for Debian Trixie/Sid." + echo + echo "${WARNING}Please be sure to backup your system before running this script as it will" + echo "FORCIBLY INSTALL AND REMOVE packages WITHOUT user intervention.${RESET}" + echo "PLEASE NOTE: Run this script from the directory this script is in." + echo + echo " -h, --help display this help message and exit successfully" + echo " -v, --verbose be loud and verbose; output many debugging messages" + echo + echo "The following section is intended for developers:" + echo "Additionally, they are designed to try not to modify files outside this script's directory." + echo " --dry-run do a dry run by installing to a test dir, specified with" + echo "the --dry-run-dir option; aka don't possibly break your system. Do note, apt packages will be" + echo "installed for this script, but the Install-Logs directory will not be created if nonexistent." + echo " -d, --dry-run-dir=DRY_RUN_DIR specify directory to do the dry run installation into;" + echo "defaults to this script's directory's faux-install-dir directory, which will be" + echo "automatically created. Specify DRY_RUN_DIR to install there instead, but you have to create the" + echo "directory yourself. Can only be used when using the --dry-run option" + echo " --pedantic-dry-run absolutely do not install apt packages, so assuming you have" + echo "them all. Also do not synchronize package index files with sudo apt update. Attempts to not modify" + echo "any file except for building. Overrides --dry-run" + echo "option, and the same rules for --dry-run-dir or -d applies." + echo " --no-build don't build anything from source. Can only be used with either" + echo "the --dry-run/-d or --pedantic-dry-run options. This will probably cause the script to fail." + echo + echo + echo " -p, --preset=PRESET specify preset file, which can be, for example, preset.sh in" + echo "the Debian-Hyprland directory. See that preset.sh file for details." + echo " --purge When removing packages, purge (delete all configuration files)" + echo "them. Dangerous if you want to keep them. This also purges autoremoved packages." + echo + echo "Hint: You do not have to specify the whole argument name as getopt tries to fill the rest in, unless" + echo "what was entered is ambiguous. Example: --pedantic-dr is synonymous with --pedantic-dry-run." + echo + echo "View repository and complain about bugs to: " + } + + # Function to test if GNU's enhanced getopt works + parse_args_setup() { + ENHANCED_GETOPT=1 + + # Temporarily disable Bash from exiting if command has error + set +e + # Test if GNU's enhanced getopt exists + getopt --test 2>/dev/null + if [[ $? -ne 4 ]]; then + echo "${GRAY}I require GNU's enhanced getopt to parse arguments." + echo "You can continue without parsing arguments or install util-linux," + echo "which should have been installed on Debian.${RESET}" + ENHANCED_GETOPT=0 + fi + # Back to being strict + set -e + + if [[ "$ENHANCED_GETOPT" == 0 ]]; then + read -rp "Would you like to continue without parsing arguments? [y/N]: " confirm + case "$confirm" in + [yY][eE][sS] | [yY]) + echo "${OK} Ignoring arguments and continuing installation..." + ;; + *) + echo "${NOTE} You chose not to continue. Exiting..." + exit 1 + ;; + esac + fi + } + + # Specfically check for help and verbose argument first to allow verbosity for everything even if option is not in order + parse_first_args() { + if [[ "$ENHANCED_GETOPT" == 1 ]]; then + if ! PARSED=$(getopt --options "${SHORTOPTS}" --longoptions "${LONGOPTS}" --name "$0" -- "$@"); then + echo "${ERROR} Failed to use getopt to parse arguments! Exiting with atypical error code 2..." + exit 2 + fi + + eval set -- "${PARSED}" + + while [[ $# -gt 0 ]]; do + case $1 in + -h | --help) + print_help + exit 0 + ;; + -v | --verbose) + VERBOSE=1 + echo "${CAT} Enabled verbose mode." + ;; + esac + shift + done + fi + } + + # Check validity and saneness of arguments + check_sane_arguments() { + if [[ $DRY -eq 1 && $PEDANTIC_DRY -eq 1 ]]; then + echo "${INFO} --pedantic-dry-run overrides the --dry-run option, so also enabling dry run mode." + DRY=1 + fi + + # When dry and pedantic dry are both disabled + if [[ $DRY -eq 0 && $PEDANTIC_DRY -eq 0 ]]; then + if [[ $DRY_RUN_DIR_SET -eq 1 ]]; then + echo "${WARN} Ignoring --dry-run-dir option as the --dry-run or --pedantic-dry-run option is not enabled." + DRY_RUN_DIR_SET=0 + elif [[ $NO_BUILD -eq 1 ]]; then + echo "${WARN} Ignoring --no-build option as the --dry-run or --pedantic-dry-run option is not enabled." + NO_BUILD=0 + fi + fi + + if [[ $DRY -eq 1 && $DRY_RUN_DIR_SET -eq 0 ]]; then + echo "${WARN} Using ${WORKING_DIR}/faux-install-dir since --dry-run-dir was not set." + DRY_RUN_DIR="$WORKING_DIR"/faux-install-dir + verbose_log "DRY_RUN_DIR is now ${DRY_RUN_DIR}" + fi + + # If DRY_RUN_DIR_SET is 1, which means --dry-run-dir or -d was passed as an argument, and DRY_RUN_DIR is not a directory + if [[ $DRY_RUN_DIR_SET -eq 1 && (! -d "$DRY_RUN_DIR") ]]; then + echo "${ERROR} --dry-run-dir option set to $DRY_RUN_DIR is not a valid directory. Exiting..." + exit 1 + fi + + # If PRESET_ENABLED is 1, which means --preset or -p was passed as an argument, and PRESET is a file that does not exist + if [[ $PRESET_ENABLED -eq 1 ]]; then + if [[ ! -f "$PRESET" ]]; then + PRESET_ENABLED=0 + echo "${WARN} ⚠️ Preset file not found or invalid: $PRESET. Using default values." + else + PRESET_ENABLED=1 + verbose_log "PRESET_ENABLED set to 1 as PRESET, $PRESET, is a file that exists." + fi + else + verbose_log "Not using preset since --preset was not specified" + fi + + if [[ $DRY -eq 1 && $PURGE -eq 1 ]]; then + echo "${WARN} Purge mode will not have any real effect with dry or pedantic dry mode." + fi + } + + parse_args_setup + + # Time to handle arguments (or not if system does not support GNU's enhanced getopt or no arguments were passed) + if [[ $ENHANCED_GETOPT -eq 1 ]]; then + parse_first_args "$@" + + if ! PARSED=$(getopt --options "${SHORTOPTS}" --longoptions "${LONGOPTS}" --name "$0" -- "$@"); then + echo "${ERROR} Failed to use getopt to parse arguments! Exiting with atypical error code 2..." + exit 2 + fi + verbose_log "Parsed with getopt: $PARSED" + + eval set -- "${PARSED}" + + while [[ $# -gt 0 ]]; do + verbose_log "Met argument $1" + case $1 in + -h | --help) + # Already handled in parse_first_args local function, so this is a noop for reference + ;; + -v | --verbose) + # Already handled in parse_first_args local function, so this is a noop for reference + ;; + --dry-run) + DRY=1 + verbose_log "Using dry run mode (does not install to system but to custom directory)" + ;; + -d | --dry-run-dir) + shift 1 + DRY_RUN_DIR_SET=1 + DRY_RUN_DIR="$(realpath "$1")" + verbose_log "Setting DRY_RUN_DIR to $(realpath "$1")" + ;; + --pedantic-dry-run) + PEDANTIC_DRY=1 + echo "${NOTE} Using pedantic dry run mode, which will ${RED}NOT${RESET} install any packages but only build from source, even if you are missing apt packages. Use the --help or -h option for more info." + ;; + --no-build) + NO_BUILD=1 + echo "${NOTE} Using no build mode, which ${RED}DISABLES${RESET} building anything from source." + ;; + -p | --preset) + shift 1 + PRESET_ENABLED=1 + PRESET="$(realpath "$1")" + verbose_log "Setting PRESET to $(realpath "$1")" + ;; + --purge) + shift 1 + PURGE=1 + verbose_log + ;; + --) + # For some reason, this option is always present when using getopt, so this is a noop + ;; + *) + echo "${WARN} Ignoring positional argument: $1" + ;; + esac + shift # Move to next argument + done + + check_sane_arguments + fi + # End of arguments complaining and shenanigans with https://gist.github.com/mcnesium/bbfe60e4f43554cbc2880f2e7085956d used for help +} +set +a diff --git a/install-scripts/sddm.sh b/install-scripts/sddm.sh index fd79030..c804c39 100755 --- a/install-scripts/sddm.sh +++ b/install-scripts/sddm.sh @@ -4,81 +4,110 @@ # installing with NO-recommends sddm1=( - sddm + sddm ) sddm2=( - qt6-5compat-dev - qml6-module-qt5compat-graphicaleffects - qt6-declarative-dev - qt6-svg-dev + qt6-5compat-dev + qml6-module-qt5compat-graphicaleffects + qt6-declarative-dev + qt6-svg-dev ) # login managers to attempt to disable login=( - lightdm - gdm3 - gdm - lxdm - lxdm-gtk3 + lightdm + gdm3 + gdm + lxdm + lxdm-gtk3 ) ## WARNING: DO NOT EDIT BEYOND THIS LINE IF YOU DON'T KNOW WHAT YOU ARE DOING! ## -SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" + +set -euo pipefail +IFS=$'\n\t' + +SCRIPT_DIR=$(realpath "$(dirname "${BASH_SOURCE[0]}")") # Change the working directory to the parent directory of the script PARENT_DIR="$SCRIPT_DIR/.." -cd "$PARENT_DIR" || { echo "${ERROR} Failed to change directory to $PARENT_DIR"; exit 1; } # Source the global functions script -if ! source "$(dirname "$(readlink -f "$0")")/Global_functions.sh"; then - echo "Failed to source Global_functions.sh" - exit 1 -fi +source "$SCRIPT_DIR/Global_functions.sh" || { + echo "Failed to source Global_functions.sh" + exit 1 +} + +cd "$PARENT_DIR" || { + echo "${ERROR} Failed to change directory to $PARENT_DIR" + exit 1 +} # Set the name of the log file to include the current date and time LOG="Install-Logs/install-$(date +%d-%H%M%S)_sddm.log" - # Install SDDM (no-recommends) printf "\n%s - Installing ${SKY_BLUE}SDDM and dependencies${RESET} .... \n" "${NOTE}" -for PKG1 in "${sddm1[@]}" ; do - sudo apt install --no-install-recommends -y "$PKG1" | tee -a "$LOG" +for PKG1 in "${sddm1[@]}"; do + apt_install_no_recommends "$PKG1" done # Installation of additional sddm stuff for PKG2 in "${sddm2[@]}"; do - install_package "$PKG2" "$LOG" + install_package "$PKG2" "$LOG" done # Check if other login managers are installed and disable their service before enabling SDDM for login_manager in "${login[@]}"; do - if dpkg -l | grep -q "^ii $login_manager"; then - echo "Disabling $login_manager..." - # shellcheck disable=SC2024 - sudo systemctl disable "$login_manager.service" >> "$LOG" 2>&1 || echo "Failed to disable $login_manager" >> "$LOG" - echo "$login_manager disabled." - fi + if dpkg -l | grep -q "^ii $login_manager"; then + echo "Disabling $login_manager..." + if [[ $PEDANTIC_DRY -eq 1 ]]; then + echo "${NOTE} Not disabling $login_manager.service with systemctl disable" + else + sudo systemctl disable "$login_manager.service" | tee -a "$LOG" 2>&1 || echo "Failed to disable $login_manager" >>"$LOG" + fi + echo "$login_manager disabled." + fi done # Double check with systemctl for manager in "${login[@]}"; do - if systemctl is-active --quiet "$manager.service" > /dev/null 2>&1; then - echo "$manager.service is active, disabling it..." >> "$LOG" 2>&1 - # shellcheck disable=SC2024 - sudo systemctl disable "$manager.service" --now >> "$LOG" 2>&1 || echo "Failed to disable $manager.service" >> "$LOG" - else - echo "$manager.service is not active" >> "$LOG" 2>&1 - fi + if systemctl is-active --quiet "$manager.service" >/dev/null 2>&1; then + echo "$manager.service is active, disabling it..." >>"$LOG" 2>&1 + if [[ $DRY -eq 1 ]]; then + echo "${NOTE} Not disabling \"$manager.service\" with systemctl disable --now" >>"$LOG" 2>&1 + else + sudo systemctl disable "$manager.service" --now | tee -a "$LOG" 2>&1 || echo "Failed to disable $manager.service" >>"$LOG" + fi + else + echo "$manager.service is not active" >>"$LOG" 2>&1 + fi done -printf "\n%.0s" {1..1} -printf "${INFO} Activating sddm service........\n" -sudo systemctl set-default graphical.target 2>&1 | tee -a "$LOG" -sudo systemctl enable sddm.service 2>&1 | tee -a "$LOG" +newlines 1 +echo "${INFO} Activating sddm service........" +if [[ $PEDANTIC_DRY -eq 1 ]]; then + echo "${NOTE} Not setting graphical.target to be default or enabling sddm.service" +else + sudo systemctl set-default graphical.target 2>&1 | tee -a "$LOG" + sudo systemctl enable sddm.service 2>&1 | tee -a "$LOG" +fi wayland_sessions_dir=/usr/share/wayland-sessions -[ ! -d "$wayland_sessions_dir" ] && { printf "$CAT - $wayland_sessions_dir not found, creating...\n"; sudo mkdir -p "$wayland_sessions_dir" 2>&1 | tee -a "$LOG"; } -sudo cp assets/hyprland.desktop "$wayland_sessions_dir/" 2>&1 | tee -a "$LOG" +[ ! -d "$wayland_sessions_dir" ] && { + echo "$CAT - $wayland_sessions_dir not found, creating..." + if [[ $DRY -eq 1 ]]; then + echo "${NOTE} Not making directory $wayland_sessions_dir with mkdir -p" + else + sudo mkdir -p "$wayland_sessions_dir" 2>&1 | tee -a "$LOG" + fi +} -printf "\n%.0s" {1..2} \ No newline at end of file +if [[ $DRY -eq 1 ]]; then + echo "${NOTE} Not copying assets/hyprland.desktop to $wayland_sessions_dir/ with cp" +else + sudo cp assets/hyprland.desktop "$wayland_sessions_dir/" 2>&1 | tee -a "$LOG" +fi + +newlines 2 diff --git a/install-scripts/wallust.sh b/install-scripts/wallust.sh index c8affdf..e8e205d 100755 --- a/install-scripts/wallust.sh +++ b/install-scripts/wallust.sh @@ -3,23 +3,28 @@ # wallust - pywal colors replacement # wallust=( - wallust + wallust ) ## WARNING: DO NOT EDIT BEYOND THIS LINE IF YOU DON'T KNOW WHAT YOU ARE DOING! ## -SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" -# Change the working directory to the parent directory of the script -PARENT_DIR="$SCRIPT_DIR/.." -cd "$PARENT_DIR" || { echo "${ERROR} Failed to change directory to $PARENT_DIR"; exit 1; } +set -euo pipefail +IFS=$'\n\t' + +SCRIPT_DIR=$(realpath "$(dirname "${BASH_SOURCE[0]}")") # Source the global functions script -if ! source "$(dirname "$(readlink -f "$0")")/Global_functions.sh"; then - echo "Failed to source Global_functions.sh" - exit 1 -fi +source "$SCRIPT_DIR/Global_functions.sh" || { + echo "Failed to source Global_functions.sh" + exit 1 +} + +cd "$PARENT_DIR" || { + echo "${ERROR} Failed to change directory to $PARENT_DIR" + exit 1 +} # Set the name of the log file to include the current date and time -LOG="Install-Logs/install-$(date +%d-%H%M%S)_wallust.log" +LOG="$PARENT_DIR/Install-Logs/install-$(date +%d-%H%M%S)_wallust.log" # Create log directory if it doesn't exist mkdir -p "$(dirname "$LOG")" @@ -27,29 +32,29 @@ mkdir -p "$(dirname "$LOG")" # Install up-to-date Rust echo "${INFO} Installing most ${YELLOW}up to date Rust compiler${RESET} ..." curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y 2>&1 | tee -a "$LOG" +# shellcheck disable=SC1091 source "$HOME/.cargo/env" -printf "\n%.0s" {1..2} +newlines 2 # Remove any existing Wallust binary if [[ -f "/usr/local/bin/wallust" ]]; then echo "Removing existing Wallust binary..." 2>&1 | tee -a "$LOG" - sudo rm "/usr/local/bin/wallust" + remove_file "/usr/local/bin/wallust" fi -printf "\n%.0s" {1..2} +newlines 2 # Install Wallust using Cargo for WALL in "${wallust[@]}"; do - cargo_install "$WALL" "$LOG" - if [ $? -eq 0 ]; then + if cargo_install "$WALL" "$LOG"; then echo "${OK} ${MAGENTA}Wallust${RESET} installed successfully." | tee -a "$LOG" else echo "${ERROR} Installation of ${MAGENTA}$WALL${RESET} failed. Check the log file $LOG for details." | tee -a "$LOG" exit 1 fi done -printf "\n%.0s" {1..1} +newlines 1 # Move the newly compiled binary to /usr/local/bin echo "Moving Wallust binary to /usr/local/bin..." | tee -a "$LOG" if sudo mv "$HOME/.cargo/bin/wallust" /usr/local/bin 2>&1 | tee -a "$LOG"; then @@ -59,5 +64,4 @@ else exit 1 fi - -printf "\n%.0s" {1..2} \ No newline at end of file +printf "\n%.0s" {1..2} diff --git a/install-scripts/zsh.sh b/install-scripts/zsh.sh index 3660912..9efd6a8 100755 --- a/install-scripts/zsh.sh +++ b/install-scripts/zsh.sh @@ -3,100 +3,100 @@ # Zsh and Oh my Zsh + Optional Pokemon ColorScripts# zsh=( - lsd - zsh - mercurial - zplug + lsd + zsh + mercurial + zplug ) ## WARNING: DO NOT EDIT BEYOND THIS LINE IF YOU DON'T KNOW WHAT YOU ARE DOING! ## -SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" -# Change the working directory to the parent directory of the script -PARENT_DIR="$SCRIPT_DIR/.." -cd "$PARENT_DIR" || { echo "${ERROR} Failed to change directory to $PARENT_DIR"; exit 1; } +set -euo pipefail +IFS=$'\n\t' + +SCRIPT_DIR=$(realpath "$(dirname "${BASH_SOURCE[0]}")") # Source the global functions script -if ! source "$(dirname "$(readlink -f "$0")")/Global_functions.sh"; then - echo "Failed to source Global_functions.sh" - exit 1 -fi +source "$SCRIPT_DIR/Global_functions.sh" || { + echo "Failed to source Global_functions.sh" + exit 1 +} # Set the name of the log file to include the current date and time -LOG="Install-Logs/install-$(date +%d-%H%M%S)_zsh.log" +LOG="$PARENT_DIR/Install-Logs/install-$(date +%d-%H%M%S)_zsh.log" # Check if the log file already exists, if yes, append a counter to make it unique COUNTER=1 while [ -f "$LOG" ]; do - LOG="Install-Logs/install-$(date +%d-%H%M%S)_${COUNTER}_zsh.log" - ((COUNTER++)) + LOG="$PARENT_DIR/Install-Logs/install-$(date +%d-%H%M%S)_${COUNTER}_zsh.log" + ((COUNTER++)) done # Installing zsh packages -printf "${NOTE} Installing core zsh packages...${RESET}\n" +echo "${NOTE} Installing core zsh packages..." for ZSHP in "${zsh[@]}"; do - install_package "$ZSHP" + install_package "$ZSHP" done -printf "\n%.0s" {1..1} +newlines 1 # Install Oh My Zsh, plugins, and set zsh as default shell if command -v zsh >/dev/null; then - printf "${NOTE} Installing ${SKY_BLUE}Oh My Zsh and plugins${RESET} ...\n" - if [ ! -d "$HOME/.oh-my-zsh" ]; then - sh -c "$(curl -fsSL https://install.ohmyz.sh)" "" --unattended - else - echo "${INFO} Directory .oh-my-zsh already exists. Skipping re-installation." 2>&1 | tee -a "$LOG" - fi - - # Check if the directories exist before cloning the repositories - if [ ! -d "$HOME/.oh-my-zsh/custom/plugins/zsh-autosuggestions" ]; then - git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/plugins/zsh-autosuggestions - else - echo "${INFO} Directory zsh-autosuggestions already exists. Cloning Skipped." 2>&1 | tee -a "$LOG" - fi + echo "${NOTE} Installing ${SKY_BLUE}Oh My Zsh and plugins${RESET} ..." + if [ ! -d "$HOME/.oh-my-zsh" ]; then + sh -c "$(curl -fsSL https://install.ohmyz.sh)" "" --unattended + else + echo "${INFO} Directory .oh-my-zsh already exists. Skipping re-installation." 2>&1 | tee -a "$LOG" + fi - if [ ! -d "$HOME/.oh-my-zsh/custom/plugins/zsh-syntax-highlighting" ]; then - git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting - else - echo "${INFO} Directory zsh-syntax-highlighting already exists. Cloning Skipped." 2>&1 | tee -a "$LOG" - fi - - # Check if ~/.zshrc and .zprofile exists, create a backup, and copy the new configuration - if [ -f "$HOME/.zshrc" ]; then - cp -b "$HOME/.zshrc" "$HOME/.zshrc-backup" || true - fi + # Check if the directories exist before cloning the repositories + if [ ! -d "$HOME/.oh-my-zsh/custom/plugins/zsh-autosuggestions" ]; then + git clone https://github.com/zsh-users/zsh-autosuggestions "${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}"/plugins/zsh-autosuggestions + else + echo "${INFO} Directory zsh-autosuggestions already exists. Cloning Skipped." 2>&1 | tee -a "$LOG" + fi - if [ -f "$HOME/.zprofile" ]; then - cp -b "$HOME/.zprofile" "$HOME/.zprofile-backup" || true - fi - - # Copying the preconfigured zsh themes and profile - cp -r 'assets/.zshrc' ~/ - cp -r 'assets/.zprofile' ~/ + if [ ! -d "$HOME/.oh-my-zsh/custom/plugins/zsh-syntax-highlighting" ]; then + git clone https://github.com/zsh-users/zsh-syntax-highlighting.git "${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}"/plugins/zsh-syntax-highlighting + else + echo "${INFO} Directory zsh-syntax-highlighting already exists. Cloning Skipped." 2>&1 | tee -a "$LOG" + fi - # Check if the current shell is zsh - current_shell=$(basename "$SHELL") - if [ "$current_shell" != "zsh" ]; then - printf "${NOTE} Changing default shell to ${MAGENTA}zsh${RESET}..." - printf "\n%.0s" {1..2} + # Check if ~/.zshrc and .zprofile exists, create a backup, and copy the new configuration + if [ -f "$HOME/.zshrc" ]; then + cp -b "$HOME/.zshrc" "$HOME/.zshrc-backup" || true + fi - # Loop to ensure the chsh command succeeds - while ! chsh -s "$(command -v zsh)"; do - echo "${ERROR} Authentication failed. Please enter the correct password." 2>&1 | tee -a "$LOG" - sleep 1 - done + if [ -f "$HOME/.zprofile" ]; then + cp -b "$HOME/.zprofile" "$HOME/.zprofile-backup" || true + fi - printf "${INFO} Shell changed successfully to ${MAGENTA}zsh${RESET}" 2>&1 | tee -a "$LOG" - else - echo "${NOTE} Your shell is already set to ${MAGENTA}zsh${RESET}." - fi + # Copying the preconfigured zsh themes and profile + cp -r 'assets/.zshrc' ~/ + cp -r 'assets/.zprofile' ~/ + + # Check if the current shell is zsh + current_shell=$(basename "$SHELL") + if [ "$current_shell" != "zsh" ]; then + echo "${NOTE} Changing default shell to ${MAGENTA}zsh${RESET}..." + newlines 1 + + # Loop to ensure the chsh command succeeds + while ! chsh -s "$(command -v zsh)"; do + echo "${ERROR} Authentication failed. Please enter the correct password." 2>&1 | tee -a "$LOG" + sleep 1 + done + + echo "${INFO} Shell changed successfully to ${MAGENTA}zsh${RESET}" 2>&1 | tee -a "$LOG" + else + echo "${NOTE} Your shell is already set to ${MAGENTA}zsh${RESET}." + fi fi # copy additional oh-my-zsh themes from assets if [ -d "$HOME/.oh-my-zsh/themes" ]; then - cp -r assets/add_zsh_theme/* ~/.oh-my-zsh/themes >> "$LOG" 2>&1 + cp -r "$PARENT_DIR"/assets/add_zsh_theme/* ~/.oh-my-zsh/themes >>"$LOG" 2>&1 fi -printf "\n%.0s" {1..2} +newlines 2 diff --git a/install.sh b/install.sh index 8562fc5..4cbb261 100755 --- a/install.sh +++ b/install.sh @@ -1,87 +1,104 @@ #!/bin/bash # https://github.com/JaKooLit -clear +# Do not complain about the following message in this file: +# Don't use variables in the printf format string. Use printf "..%s.." "$foo". +# Rationale: I want nice color formatting in printf. +# shellcheck disable=2059 -# Set some colors for output messages -OK="$(tput setaf 2)[OK]$(tput sgr0)" -ERROR="$(tput setaf 1)[ERROR]$(tput sgr0)" -NOTE="$(tput setaf 3)[NOTE]$(tput sgr0)" -INFO="$(tput setaf 4)[INFO]$(tput sgr0)" -WARN="$(tput setaf 1)[WARN]$(tput sgr0)" -CAT="$(tput setaf 6)[ACTION]$(tput sgr0)" -MAGENTA="$(tput setaf 5)" -ORANGE="$(tput setaf 214)" -WARNING="$(tput setaf 1)" -YELLOW="$(tput setaf 3)" -GREEN="$(tput setaf 2)" -BLUE="$(tput setaf 4)" -SKY_BLUE="$(tput setaf 6)" -RESET="$(tput sgr0)" +# Let's be safer when programming in Bash +set -euo pipefail +IFS=$'\n\t' + +PARENT_DIR=$(realpath "$(dirname "${BASH_SOURCE[0]}")") + +cd "$PARENT_DIR" || (echo "Failed to change directory to $PARENT_DIR, so exitting with error code 1." && exit 1) + +# Set the name of the log file to include the current date and time +LOG="$PARENT_DIR/Install-Logs/01-Hyprland-Install-Scripts-$(date +%d-%H%M%S).log" + +restore_cursor() { + tput cnorm + [[ $(type -t verbose_log) == "function" && -v VERBOSE ]] && verbose_log "Exiting, so restoring cursor in case 'tput civis' was executed." +} + +cleanup() { + restore_cursor + echo -e "\n\n$1" | tee -a "$LOG" + exit 1 +} + +# In case user interrupts, switch back to old directory. Manually set colors for compatibility. +trap 'restore_cursor' EXIT +trap 'cleanup "$(tput setaf 4)[INFO]$(tput sgr0) Exiting by error encountered. (ERR)...\n$(tput setaf 251)[NOTE]$(tput sgr0) If you did not press Ctrl+D, check the most recent files in $PARENT_DIR/Install-Logs for possible reasons for such an early exit."' ERR +trap 'cleanup "$(tput setaf 12)[ACTION]$(tput sgr0) Exiting due to user-interrupt. (SIGINT)..."' SIGINT +trap 'cleanup "$(tput setaf 1)[ERROR]$(tput sgr0) Exiting due to abort signal. A critical error may have occurred internally. (SIGABRT)..."' SIGABRT + +source "$PARENT_DIR/install-scripts/colors.sh" || { + echo "$(tput setaf 1)[ERROR]$(tput sgr0) Failed to source $PARENT_DIR/install-scripts/colors.sh" | tee -a "$LOG" + exit 1 +} + +# Check if running as root. If root, script will exit +if [[ $EUID -eq 0 ]]; then + echo "${ERROR} This script should ${RED}NOT${RESET} be executed as root!! Exiting......." | tee -a "$LOG" + printf "\n%.0s" {1..2} + exit 1 +fi + +source "$PARENT_DIR/install-scripts/Global_functions.sh" || { + echo "${ERROR} Failed to source $PARENT_DIR/install-scripts/Global_functions.sh" | tee -a "$LOG" + exit 1 +} + +parse_args "$@" # Display warning message -echo -e "${WARNING}NOTE:${RESET} Hyprland on Repo is extremely outdated and will not be supported anymore." -echo -e "Use this at your own risk." -echo -e "${WARNING}Any issues will not be dealt with${RESET}" -echo +echo "${WARNING}WARNING:${RESET} Hyprland on Repo is extremely outdated and will not be supported anymore." +echo "Use this at your own risk." +echo "${RED}Any issues will not be dealt with${RESET}" +newlines 1 # Prompt user to continue or exit read -rp "Do you want to continue with the installation? [y/N]: " confirm case "$confirm" in - [yY][eE][sS]|[yY]) - echo -e "${OK} Continuing with installation..." - ;; - *) - echo -e "${NOTE} You chose not to continue. Exiting..." - exit 1 - ;; -esac - -# Create Directory for Install Logs -if [ ! -d Install-Logs ]; then - mkdir Install-Logs -fi - -# Set the name of the log file to include the current date and time -LOG="Install-Logs/01-Hyprland-Install-Scripts-$(date +%d-%H%M%S).log" - -# Check if running as root. If root, script will exit -if [[ $EUID -eq 0 ]]; then - echo "${ERROR} This script should ${WARNING}NOT${RESET} be executed as root!! Exiting......." | tee -a "$LOG" - printf "\n%.0s" {1..2} +[yY][eE][sS] | [yY]) + echo "${OK} Continuing with installation..." + ;; +*) + echo "${INFO} You chose not to continue. Exiting..." exit 1 -fi - -# Function to check if the system is Ubuntu -is_ubuntu() { - # Check for 'Ubuntu' in /etc/os-release - if grep -q 'Ubuntu' /etc/os-release; then - return 0 - fi - return 1 -} + ;; +esac # Check if the system is Ubuntu if is_ubuntu; then - echo "${WARN}This script is ${WARNING}NOT intended for Ubuntu / Ubuntu Based${RESET}. Refer to ${YELLOW}README for the correct link for Ubuntu-Hyprland project${RESET}" | tee -a "$LOG" + echo "${WARN}This script is ${RED}NOT intended for an Ubuntu / Ubuntu-based distribution${RESET}. Refer to ${YELLOW}README for the correct link for the Ubuntu-Hyprland project${RESET}" | tee -a "$LOG" exit 1 +else + verbose_log "You are not using an Ubuntu / Ubuntu-based distribution." fi # install whiptails if detected not installed. Necessary for this version if ! command -v whiptail >/dev/null; then - echo "${NOTE} - whiptail is not installed. Installing..." | tee -a "$LOG" - sudo apt install -y whiptail - printf "\n%.0s" {1..1} + if [[ $PEDANTIC_DRY -eq 1 ]]; then + echo "${NOTE} I won't install whiptail even though it is required." | tee -a "$LOG" + else + echo "${NOTE} - whiptail is not installed. Installing..." | tee -a "$LOG" + apt_install whiptail + fi + newlines 1 +else + verbose_log "whiptail already installed, not installing." fi - -printf "\n%.0s" {1..2} +newlines 2 echo -e "\e[35m ╦╔═┌─┐┌─┐╦ ╦ ╦┬ ┬┌─┐┬─┐┬ ┌─┐┌┐┌┌┬┐ ╠╩╗│ ││ │║ ╠═╣└┬┘├─┘├┬┘│ ├─┤│││ ││ 2025 ╩ ╩└─┘└─┘╩═╝ ╩ ╩ ┴ ┴ ┴└─┴─┘┴ ┴┘└┘─┴┘ Debian Trixie / SiD \e[0m" -printf "\n%.0s" {1..1} +newlines 1 # Welcome message using whiptail (for displaying information) whiptail --title "KooL Debian-Hyprland Trixie-SID (2025) Install Script" \ @@ -93,95 +110,57 @@ NOTE: If you are installing on a VM, ensure to enable 3D acceleration else Hyprl # Ask if the user wants to proceed if ! whiptail --title "Proceed with Installation?" \ --yesno "VERY IMPORTANT!!!\n\nYou must be able to install from source by uncommenting deb-src on /etc/apt/sources.list else script may fail to install Hyprland.\n\n\nShall we proceed?" 15 60; then - echo -e "\n" + newlines 2 echo "❌ ${INFO} You 🫵 chose ${YELLOW}NOT${RESET} to proceed. ${YELLOW}Exiting...${RESET}" | tee -a "$LOG" - echo -e "\n" + newlines 2 exit 1 fi -echo "👌 ${OK} 🇵🇭 ${MAGENTA}KooL..${RESET} ${SKY_BLUE}lets continue with the installation...${RESET}" | tee -a "$LOG" +echo "👌 ${OK} 🇵🇭 ${MAGENTA}KooL..${RESET} ${SKY_BLUE}let's continue with the installation...${RESET}" | tee -a "$LOG" sleep 1 -printf "\n%.0s" {1..1} +newlines 1 # install pciutils if detected not installed. Necessary for detecting GPU -if ! dpkg -l | grep -w pciutils > /dev/null; then - echo "pciutils is not installed. Installing..." | tee -a "$LOG" - sudo apt install -y pciutils - printf "\n%.0s" {1..1} -fi - - -# Path to the install-scripts directory -script_directory=install-scripts - -# Function to execute a script if it exists and make it executable -execute_script() { - local script="$1" - local script_path="$script_directory/$script" - if [ -f "$script_path" ]; then - chmod +x "$script_path" - if [ -x "$script_path" ]; then - env "$script_path" - else - echo "Failed to make script '$script' executable." | tee -a "$LOG" - fi +if ! dpkg -l | grep -w pciutils >/dev/null; then + if [[ $PEDANTIC_DRY -eq 1 ]]; then + echo "${NOTE} I won't install whiptail even though it is required." | tee -a "$LOG" else - echo "Script '$script' not found in '$script_directory'." | tee -a "$LOG" + echo "pciutils is not installed. Installing..." | tee -a "$LOG" + apt_install pciutils fi -} + newlines 1 +else + verbose_log "pciutils already installed, not installing." +fi ################# -## Default values for the options (will be overwritten by preset file if available) -gtk_themes="OFF" -bluetooth="OFF" -thunar="OFF" -ags="OFF" -sddm="OFF" -sddm_theme="OFF" -xdph="OFF" -zsh="OFF" -pokemon="OFF" -rog="OFF" -dots="OFF" -input_group="OFF" -nvidia="OFF" +## Default values for the options (will be overwritten by preset file if --preset is used with a valid file) +export gtk_themes="OFF" +export bluetooth="OFF" +export thunar="OFF" +export ags="OFF" +export sddm="OFF" +export sddm_theme="OFF" +export xdph="OFF" +export zsh="OFF" +export pokemon="OFF" +export rog="OFF" +export dots="OFF" +export input_group="OFF" +export nvidia="OFF" -# Function to load preset file -load_preset() { - if [ -f "$1" ]; then - echo "✅ Loading preset: $1" - source "$1" - else - echo "⚠️ Preset file not found: $1. Using default values." - fi -} - -# Check if --preset argument is passed -if [[ "$1" == "--preset" && -n "$2" ]]; then - load_preset "$2" +# Load preset if PRESET_ENABLED is 1, which is only if PRESET is a valid file and set as an argument +if [[ $PRESET_ENABLED -eq 1 ]]; then + # shellcheck disable=SC2153 + load_preset "$PRESET" fi -# List of services to check for active login managers -services=("gdm.service" "gdm3.service" "lightdm.service" "lxdm.service") +check_services_running +# shellcheck disable=SC2034 +NON_SDDM_SERVICES_RUNNING=$? -# Function to check if any login services are active -check_services_running() { - active_services=() # Array to store active services - for svc in "${services[@]}"; do - if systemctl is-active --quiet "$svc"; then - active_services+=("$svc") - fi - done - - if [ ${#active_services[@]} -gt 0 ]; then - return 0 - else - return 1 - fi -} - -if check_services_running; then +if [[ $NON_SDDM_SERVICES_RUNNING -eq 1 ]]; then active_list=$(printf "%s\n" "${active_services[@]}") # Display the active login manager(s) in the whiptail message box @@ -191,9 +170,12 @@ fi # Check if NVIDIA GPU is detected nvidia_detected=false -if lspci | grep -i "nvidia" &> /dev/null; then +if lspci | grep -i "nvidia" &>/dev/null; then + verbose_log "NVIDIA GPU detected." nvidia_detected=true whiptail --title "NVIDIA GPU Detected" --msgbox "NVIDIA GPU detected in your system.\n\nNOTE: The script will install nvidia-dkms, nvidia-utils, and nvidia-settings if you choose to configure." 12 60 +else + verbose_log "NVIDIA GPU not detected." fi # Initialize the options array for whiptail checklist @@ -203,6 +185,7 @@ options_command=( # Add NVIDIA options if detected if [ "$nvidia_detected" == "true" ]; then + verbose_log "Adding nvidia option to selection list" options_command+=( "nvidia" "Do you want script to configure NVIDIA GPU?" "OFF" ) @@ -211,25 +194,30 @@ fi # Check if user is already in the 'input' group input_group_detected=false if ! groups "$(whoami)" | grep -q '\binput\b'; then + verbose_log "You are not in the input group." input_group_detected=true whiptail --title "Input Group" --msgbox "You are not currently in the input group.\n\nAdding you to the input group might be necessary for the Waybar keyboard-state functionality." 12 60 +else + verbose_log "You are already in the input group." fi # Add 'input_group' option if user is not in input group -if [ "$input_group_detected" == "true" ]; then +if [[ "$input_group_detected" == "true" ]]; then + verbose_log "Adding input_group option to selection list" options_command+=( "input_group" "Add your USER to input group for some waybar functionality?" "OFF" ) fi # Conditionally add SDDM and SDDM theme options if no active login manager is found -if ! check_services_running; then +if [[ $NON_SDDM_SERVICES_RUNNING -eq 0 ]]; then options_command+=( "sddm" "Install & configure SDDM login manager?" "OFF" "sddm_theme" "Download & Install Additional SDDM theme?" "OFF" ) fi +verbose_log "Adding remaining gtk_themes, bluetooth, thunar, ags, xdph, zsh, pokemon, rog, and dots options to selection" # Add the remaining static options options_command+=( "gtk_themes" "Install GTK themes (required for Dark/Light function)" "OFF" @@ -245,31 +233,31 @@ options_command+=( # Capture the selected options before the while loop starts while true; do - selected_options=$("${options_command[@]}" 3>&1 1>&2 2>&3) - # Check if the user pressed Cancel (exit status 1) - if [ $? -ne 0 ]; then - echo -e "\n" + if ! selected_options=$("${options_command[@]}" 3>&1 1>&2 2>&3); then + newlines 2 echo "❌ ${INFO} You 🫵 cancelled the selection. ${YELLOW}Goodbye!${RESET}" | tee -a "$LOG" - exit 0 # Exit the script if Cancel is pressed + exit 0 # Exit the script if Cancel is pressed fi # If no option was selected, notify and restart the selection if [ -z "$selected_options" ]; then + verbose_log "No options selected." whiptail --title "Warning" --msgbox "No options were selected. Please select at least one option." 10 60 - continue # Return to selection if no options selected + continue # Return to selection if no options selected fi # Strip the quotes and trim spaces if necessary (sanitize the input) selected_options=$(echo "$selected_options" | tr -d '"' | tr -s ' ') # Convert selected options into an array (preserving spaces in values) - IFS=' ' read -r -a options <<< "$selected_options" + IFS=' ' read -r -a options <<<"$selected_options" # Check if the "dots" option was selected dots_selected="OFF" for option in "${options[@]}"; do if [[ "$option" == "dots" ]]; then + verbose_log "dots option selected" dots_selected="ON" break fi @@ -279,14 +267,14 @@ while true; do if [[ "$dots_selected" == "OFF" ]]; then # Show a note about not selecting the "dots" option if ! whiptail --title "KooL Hyprland Dot Files" --yesno \ - "You have not selected to install the pre-configured KooL Hyprland dotfiles.\n\nKindly NOTE that if you proceed without Dots, Hyprland will start with default vanilla Hyprland configuration and I won't be able to give you support.\n\nWould you like to continue install without KooL Hyprland Dots or return to choices/options?" \ - --yes-button "Continue" --no-button "Return" 15 90; then + "You have not selected to install the pre-configured KooL Hyprland dotfiles.\n\nKindly NOTE that if you proceed without Dots, Hyprland will start with default vanilla Hyprland configuration and I won't be able to give you support.\n\nWould you like to continue install without KooL Hyprland Dots or return to choices/options?" \ + --yes-button "Continue" --no-button "Return" 15 90; then echo "🔙 Returning to options..." | tee -a "$LOG" continue else # User chose to continue echo "${INFO} ⚠️ Continuing WITHOUT the dotfiles installation..." | tee -a "$LOG" - printf "\n%.0s" {1..1} + newlines 1 fi fi @@ -299,19 +287,23 @@ while true; do # Confirmation prompt if ! whiptail --title "Confirm Your Choices" --yesno "$(printf "%s" "$confirm_message")" 25 80; then - echo -e "\n" + newlines 2 echo "❌ ${SKY_BLUE}You're not 🫵 happy${RESET}. ${YELLOW}Returning to options...${RESET}" | tee -a "$LOG" - continue + continue fi echo "👌 ${OK} You confirmed your choices. Proceeding with ${SKY_BLUE}KooL 🇵🇭 Hyprland Installation...${RESET}" | tee -a "$LOG" - break + break done -printf "\n%.0s" {1..1} +newlines 1 -echo "${INFO} Running a ${SKY_BLUE}full system update...${RESET}" | tee -a "$LOG" -sudo apt update +if [[ $PEDANTIC_DRY -eq 1 ]]; then + echo "${NOTE} I won't synchronize your package index files." | tee -a "$LOG" +else + echo "${INFO} ${SKY_BLUE}Synchronizing${RESET} package index files with apt update..." | tee -a "$LOG" + sudo apt update +fi sleep 1 # execute pre clean up @@ -329,28 +321,6 @@ echo "${INFO} Installing ${SKY_BLUE}KooL Hyprland packages...${RESET}" | tee -a sleep 1 execute_script "01-hypr-pkgs.sh" sleep 1 -execute_script "hyprutils.sh" # Order is very specific for dependencies are scattered -sleep 1 -execute_script "hyprlang.sh" -sleep 1 -execute_script "hyprcursor.sh" -sleep 1 -execute_script "hyprgraphics.sh" -sleep 1 -execute_script "hyprland-qt-support.sh" -sleep 1 -execute_script "hyprland-qtutils.sh" -sleep 1 -execute_script "hyprwayland-scanner.sh" -sleep 1 -execute_script "aquamarine.sh" -sleep 1 -execute_script "hyprland-protocols.sh" -sleep 1 -execute_script "hypridle.sh" -sleep 1 -execute_script "hyprlock.sh" -sleep 1 execute_script "hyprland.sh" sleep 1 execute_script "wallust.sh" @@ -367,130 +337,148 @@ sleep 1 selected_options=$(echo "$selected_options" | tr -d '"' | tr -s ' ') # Convert selected options into an array (splitting by spaces) -IFS=' ' read -r -a options <<< "$selected_options" +IFS=' ' read -r -a options <<<"$selected_options" # Loop through selected options for option in "${options[@]}"; do case "$option" in - sddm) - if check_services_running; then - active_list=$(printf "%s\n" "${active_services[@]}") - whiptail --title "Error" --msgbox "One of the following login services is running:\n$active_list\n\nPlease stop & disable it or DO not choose SDDM." 12 60 - exec "$0" - else - echo "${INFO} Installing and configuring ${SKY_BLUE}SDDM...${RESET}" | tee -a "$LOG" - execute_script "sddm.sh" - fi - ;; - nvidia) - echo "${INFO} Configuring ${SKY_BLUE}nvidia stuff${RESET}" | tee -a "$LOG" - execute_script "nvidia.sh" - ;; - gtk_themes) - echo "${INFO} Installing ${SKY_BLUE}GTK themes...${RESET}" | tee -a "$LOG" - execute_script "gtk_themes.sh" - ;; - input_group) - echo "${INFO} Adding user into ${SKY_BLUE}input group...${RESET}" | tee -a "$LOG" - execute_script "InputGroup.sh" - ;; - ags) - echo "${INFO} Installing ${SKY_BLUE}AGS v1 for Desktop Overview...${RESET}" | tee -a "$LOG" - execute_script "ags.sh" - ;; - xdph) - echo "${INFO} Installing ${SKY_BLUE}xdg-desktop-portal-hyprland...${RESET}" | tee -a "$LOG" - execute_script "xdph.sh" - ;; - bluetooth) - echo "${INFO} Configuring ${SKY_BLUE}Bluetooth...${RESET}" | tee -a "$LOG" - execute_script "bluetooth.sh" - ;; - thunar) - echo "${INFO} Installing ${SKY_BLUE}Thunar file manager...${RESET}" | tee -a "$LOG" - execute_script "thunar.sh" - execute_script "thunar_default.sh" - ;; - sddm_theme) - echo "${INFO} Downloading & Installing ${SKY_BLUE}Additional SDDM theme...${RESET}" | tee -a "$LOG" - execute_script "sddm_theme.sh" - ;; - zsh) - echo "${INFO} Installing ${SKY_BLUE}zsh with Oh-My-Zsh...${RESET}" | tee -a "$LOG" - execute_script "zsh.sh" - ;; - pokemon) - echo "${INFO} Adding ${SKY_BLUE}Pokemon color scripts to terminal...${RESET}" | tee -a "$LOG" - execute_script "zsh_pokemon.sh" - ;; - rog) - echo "${INFO} Installing ${SKY_BLUE}ROG laptop packages...${RESET}" | tee -a "$LOG" - execute_script "rog.sh" - ;; - dots) - echo "${INFO} Installing pre-configured ${SKY_BLUE}KooL Hyprland dotfiles...${RESET}" | tee -a "$LOG" - execute_script "dotfiles-branch.sh" - ;; - *) - echo "Unknown option: $option" | tee -a "$LOG" - ;; + sddm) + if check_services_running; then + active_list=$(printf "%s\n" "${active_services[@]}") + whiptail --title "Error" --msgbox "One of the following login services is running:\n$active_list\n\nPlease stop & disable it or DO not choose SDDM." 12 60 + exec "$0" + else + echo "${INFO} Installing and configuring ${SKY_BLUE}SDDM...${RESET}" | tee -a "$LOG" + execute_script "sddm.sh" + fi + ;; + nvidia) + echo "${INFO} Configuring ${SKY_BLUE}nvidia stuff${RESET}" | tee -a "$LOG" + execute_script "nvidia.sh" + ;; + gtk_themes) + echo "${INFO} Installing ${SKY_BLUE}GTK themes...${RESET}" | tee -a "$LOG" + execute_script "gtk_themes.sh" + ;; + input_group) + echo "${INFO} Adding user into ${SKY_BLUE}input group...${RESET}" | tee -a "$LOG" + execute_script "InputGroup.sh" + ;; + ags) + echo "${INFO} Installing ${SKY_BLUE}AGS v1 for Desktop Overview...${RESET}" | tee -a "$LOG" + execute_script "ags.sh" + ;; + xdph) + echo "${INFO} Installing ${SKY_BLUE}xdg-desktop-portal-hyprland...${RESET}" | tee -a "$LOG" + execute_script "xdph.sh" + ;; + bluetooth) + echo "${INFO} Configuring ${SKY_BLUE}Bluetooth...${RESET}" | tee -a "$LOG" + execute_script "bluetooth.sh" + ;; + thunar) + echo "${INFO} Installing ${SKY_BLUE}Thunar file manager...${RESET}" | tee -a "$LOG" + execute_script "thunar.sh" + execute_script "thunar_default.sh" + ;; + sddm_theme) + echo "${INFO} Downloading & Installing ${SKY_BLUE}Additional SDDM theme...${RESET}" | tee -a "$LOG" + execute_script "sddm_theme.sh" + ;; + zsh) + echo "${INFO} Installing ${SKY_BLUE}zsh with Oh-My-Zsh...${RESET}" | tee -a "$LOG" + execute_script "zsh.sh" + ;; + pokemon) + echo "${INFO} Adding ${SKY_BLUE}Pokemon color scripts to terminal...${RESET}" | tee -a "$LOG" + execute_script "zsh_pokemon.sh" + ;; + rog) + echo "${INFO} Installing ${SKY_BLUE}ROG laptop packages...${RESET}" | tee -a "$LOG" + execute_script "rog.sh" + ;; + dots) + echo "${INFO} Installing pre-configured ${SKY_BLUE}KooL Hyprland dotfiles...${RESET}" | tee -a "$LOG" + execute_script "dotfiles-branch.sh" + ;; + *) + echo "Unknown option: $option" | tee -a "$LOG" + ;; esac done # Perform cleanup printf "\n${OK} Performing some clean up.\n" +verbose_log "Checking to remove files $WORKING_DIR/JetBrainsMono.tar.xz, $WORKING_DIR/VictorMonoAll.zip, and $WORKING_DIR/FantasqueSansMono.zip" files_to_delete=("JetBrainsMono.tar.xz" "VictorMonoAll.zip" "FantasqueSansMono.zip") for file in "${files_to_delete[@]}"; do if [ -e "$file" ]; then - echo "$file found. Deleting..." | tee -a "$LOG" - rm "$file" - echo "$file deleted successfully." | tee -a "$LOG" + if [[ $DRY -eq 1 ]]; then + echo "I am not deleting $file even though it should be cleaned up. Manually use 'rm $file' instead." | tee -a "$LOG" + else + echo "$file found. Deleting..." | tee -a "$LOG" + rm "$file" + echo "$file deleted successfully." | tee -a "$LOG" + fi fi done - -clear +# clear # copy fastfetch config if debian is not present if [ ! -f "$HOME/.config/fastfetch/debian.png" ]; then - cp -r assets/fastfetch "$HOME/.config/" + if [[ $DRY -eq 1 ]]; then + echo "${NOTE} I am not copying $WORKING_DIR/assets/fastfetch to $HOME/.config" | tee -a "$LOG" + else + verbose_log "Copying $WORKING_DIR/assets/fastfetch to $HOME/.config/ since $HOME/.config/fastfetch/debian.png is not present" + cp -r assets/fastfetch "$HOME/.config/" + fi fi -printf "\n%.0s" {1..2} +newlines 2 # final check essential packages if it is installed execute_script "03-Final-Check.sh" -printf "\n%.0s" {1..1} +newlines 1 -# Check if either hyprland or hyprland-git is installed -if dpkg -l | grep -qw hyprland; then +# Check if hyprland is installed, either by apt, which is installing via apt is not supported and therefore impossible, or by building from source, which is to check if some other possible location exists with command -v +if check_if_installed_with_apt "hyprland" || command -v Hyprland >/dev/null; then + if check_if_installed_with_apt "hyprland"; then + verbose_log "hyprland is installed with apt" + else + verbose_log "hyprland is not installed with apt, but since the command, Hyprland, exists, I assume hyprland was built and installed from source" + fi printf "\n ${OK} 👌 Hyprland is installed. However, some essential packages may not be installed. Please see above!" printf "\n${CAT} Ignore this message if it states ${YELLOW}All essential packages${RESET} are installed as per above\n" sleep 2 - printf "\n%.0s" {1..2} + newlines 2 printf "${SKY_BLUE}Thank you${RESET} 🫰 for using 🇵🇭 ${MAGENTA}KooL's Hyprland Dots${RESET}. ${YELLOW}Enjoy and Have a good day!${RESET}" - printf "\n%.0s" {1..2} + newlines 2 - printf "\n${NOTE} You can start Hyprland by typing ${SKY_BLUE}Hyprland${RESET} (IF SDDM is not installed) (note the capital H!).\n" + printf "\n${NOTE} You can start Hyprland by typing ${SKY_BLUE}Hyprland${RESET} or ${SKY_BLUE}hyprland${RESET} (IF SDDM is not installed).\n" printf "\n${NOTE} However, it is ${YELLOW}highly recommended to reboot${RESET} your system.\n\n" while true; do echo -n "${CAT} Would you like to reboot now? (y/n): " - read HYP + read -r HYP HYP=$(echo "$HYP" | tr '[:upper:]' '[:lower:]') if [[ "$HYP" == "y" || "$HYP" == "yes" ]]; then - echo "${INFO} Rebooting now..." - systemctl reboot + if [[ $PEDANTIC_DRY -eq 1 ]]; then + echo "${NOTE} Not rebooting, even with user confirmation, since pedantic dry run mode is enabled. However, you can still manually reboot with 'systemctl reboot'." | tee -a "$LOG" + break + fi + echo "${INFO} Rebooting now..." | tee -a "$LOG" + systemctl reboot break elif [[ "$HYP" == "n" || "$HYP" == "no" ]]; then - echo "👌 ${OK} You chose NOT to reboot" - printf "\n%.0s" {1..1} + echo "👌 ${OK} You chose NOT to reboot" | tee -a "$LOG" + newlines 1 # Check if NVIDIA GPU is present - if lspci | grep -i "nvidia" &> /dev/null; then - echo "${INFO} HOWEVER ${YELLOW}NVIDIA GPU${RESET} detected. Reminder that you must REBOOT your SYSTEM..." - printf "\n%.0s" {1..1} + if lspci | grep -i "nvidia" &>/dev/null; then + echo "${INFO} HOWEVER ${YELLOW}NVIDIA GPU${RESET} detected. Reminder that you must REBOOT your SYSTEM..." | tee -a "$LOG" + newlines 1 fi break else @@ -499,10 +487,10 @@ if dpkg -l | grep -qw hyprland; then done else # Print error message if neither package is installed - printf "\n${WARN} Hyprland is NOT installed. Please check 00_CHECK-time_installed.log and other files in the Install-Logs/ directory..." - printf "\n%.0s" {1..3} + printf "\n${WARN} Hyprland is NOT installed. Please check 00_CHECK-time_installed.log and other files in the Install-Logs/ directory..." | tee -a "$LOG" + newlines 3 + verbose_log "I shall exit with error code 1 since hyprland is probably not installed based on checking apt and /usr/bin for hyprland" exit 1 fi -printf "\n%.0s" {1..2} - +newlines 2 diff --git a/preset.sh b/preset.sh index 679f836..b90e132 100644 --- a/preset.sh +++ b/preset.sh @@ -1,46 +1,50 @@ +#!/bin/bash # 💫 https://github.com/JaKooLit 💫 # # Define the options you want to preselect (either ON or OFF) # IMPORTANT: answer should be inside "" +# Remember to use the --preset option when calling install.sh so this is executed, such as +# ./install.sh --preset preset.sh + ### Script will install nvidia-dkms nvidia-utils & nvidia-settings ###-Would you like script to Configure NVIDIA for you? -nvidia="OFF" +export nvidia="OFF" ###-Install GTK themes (required for Dark/Light function)? -gtk_themes="ON" +export gtk_themes="ON" ###-Do you want to configure Bluetooth? -bluetooth="ON" +export bluetooth="ON" ###-Do you want to install Thunar file manager? -thunar="ON" +export thunar="ON" ### Adding user to the 'input' group might be necessary for waybar keyboard-state functionality -input_group="ON" +export input_group="ON" ### Desktop overview Demo Link in README ### Desktop overview Demo Link in README -### Install AGS (aylur's GTK shell) v1 for Desktop-Like Overview?" -ags="ON" +### Install AGS (aylur's GTK shell) v1 for Desktop-Like Overview?" +export ags="ON" ###-Install & configure SDDM log-in Manager -sddm="ON" +export sddm="ON" ### install and download SDDM themes -sddm_theme="ON" +export sddm_theme="ON" ###-Install XDG-DESKTOP-PORTAL-HYPRLAND? (For proper Screen Share ie OBS) -xdph="ON" +export xdph="ON" ### Shell extension. Bash alternative ###-Install zsh, oh-my-zsh -zsh="ON" -### add Pokemon color scripts to terminal -pokemon="ON" +export zsh="ON" +### add Pokemon color scripts to terminal +export pokemon="ON" ### This will install ASUSCTL & SUPERGFXCTL ###-Installing on Asus ROG Laptops? -rog="OFF" +export rog="OFF" ###-Download and Add pre-configured Hyprland dotfiles? -dots="ON" +export dots="ON" diff --git a/uninstall.sh b/uninstall.sh index 2a99359..7a06e91 100755 --- a/uninstall.sh +++ b/uninstall.sh @@ -2,23 +2,10 @@ # 💫 https://github.com/JaKooLit 💫 # # KooL Debian-Hyprland uninstall script # -clear +# Suddenly clearing is invasive to terminal +# clear -# Set some colors for output messages -OK="$(tput setaf 2)[OK]$(tput sgr0)" -ERROR="$(tput setaf 1)[ERROR]$(tput sgr0)" -NOTE="$(tput setaf 3)[NOTE]$(tput sgr0)" -INFO="$(tput setaf 4)[INFO]$(tput sgr0)" -WARN="$(tput setaf 1)[WARN]$(tput sgr0)" -CAT="$(tput setaf 6)[ACTION]$(tput sgr0)" -MAGENTA="$(tput setaf 5)" -ORANGE="$(tput setaf 214)" -WARNING="$(tput setaf 1)" -YELLOW="$(tput setaf 3)" -GREEN="$(tput setaf 2)" -BLUE="$(tput setaf 4)" -SKY_BLUE="$(tput setaf 6)" -RESET="$(tput sgr0)" +source "colors.sh" printf "\n%.0s" {1..2} echo -e "\e[35m

*V8k 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 NXZr#G00004Sy~|DgCGC^ diff --git a/assets/yad_7.2-1_amd64.deb b/assets/yad_7.2-1_amd64.deb new file mode 100644 index 0000000000000000000000000000000000000000..7e30eaf2d598c8ae66ccfdaec7c7055af6785051 GIT binary patch literal 189520 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