diff --git a/CHANGELOGS.md b/CHANGELOGS.md index 2209976..d448276 100644 --- a/CHANGELOGS.md +++ b/CHANGELOGS.md @@ -1,5 +1,14 @@ ## Changelogs +## 06 Feb 2025 +- added semi-unattended function. +- move all the initial questions at the beginning + +## 04 Feb 2025 +- Re-coded for better visibility +- Offered a new SDDM theme. +- script will automatically detect if you have nvidia but script still offer if you want to set up for user + ## 30 Jan 2025 - AGS (aylur's GTK shell) v1 for desktop overview is now optional diff --git a/Debian-Install.png b/Debian-Install.png index b52bc45..f0e62cd 100644 Binary files a/Debian-Install.png and b/Debian-Install.png differ diff --git a/README.md b/README.md index a5b3f63..5dea704 100644 --- a/README.md +++ b/README.md @@ -29,7 +29,7 @@

-
 Hyprland-Dots Debian repo 
   +
 Hyprland-Dots Debian repo 
  
 Youtube 
  
 Wiki 
  
 Keybinds 
   @@ -149,7 +149,7 @@ sudo nano /etc/apt/sources.list - inside the install-scripts directory, you can edit 01-hypr-pkgs.sh. Do not edit 00-dependencies.sh unless you know what you are doing. Care though as the Hyprland Dots may not work properly! #### 💫 SDDM and GTK Themes offered -- If you opted to install SDDM theme, here's the [`LINK`](https://github.com/JaKooLit/simple-sddm) +- If you opted to install SDDM theme, here's the [`LINK`](https://codeberg.org/JaKooLit/sddm-sequoia) which is a fork of [`LINK`](https://codeberg.org/minMelody/sddm-sequoia) - If you opted to install GTK Themes, Icons, here's the [`LINK`](https://github.com/JaKooLit/GTK-themes-icons). This also includes Bibata Modern Ice cursor. #### 🔔 NOTICE TO NVIDIA OWNERS ### @@ -173,6 +173,24 @@ chmod +x install.sh

+ +### 🤟 semi-unattended installation (new for 2025) +- edit preset.sh to modify what packages you want. Make sure to change only with Y or N +- to use preset instead of usual `./install.sh` you can ran like this + +```bash +./install.sh --preset +``` + +- if you have nvidia you can add --nvidia argument + +```bash +./install.sh --preset --nvidia +``` + +- its called semi-unattended it is because you still have to answer some questions when installing KooL's Hyprland Dots + + #### ✨ for ZSH and OH-MY-ZSH installation > installer should auto change your default shell to zsh. However, if it does not, do this ```bash @@ -248,6 +266,9 @@ source ~/.zshrc #### 🛣️ Roadmap: - [ ] possibly adding gruvbox themes, cursors, icons +### ⁉️ KNOWN ISSUE +- [ ] hypridle wont build (Feb 2025) + #### ❗ some known issues for nvidia - reports from members of my discord, states that some users of nvidia are getting stuck on sddm login. credit to @Kenni Fix stated was ``` @@ -271,6 +292,7 @@ env = WLR_RENDERER_ALLOW_SOFTWARE,1 ``` #### ❗ other known issues + > [!NOTE] > Auto start of Hyprland after login (no SDDM or GDM or any login managers) - This was disabled a few days ago. (19 May 2024). This was because some users, after they used the Distro-Hyprland scripts with other DE (gnome-wayland or plasma-wayland), if they choose to login into gnome-wayland for example, Hyprland is starting. diff --git a/assets/sddm.png b/assets/sddm.png new file mode 100644 index 0000000..c42ae06 Binary files /dev/null and b/assets/sddm.png differ diff --git a/install-scripts/00-dependencies.sh b/install-scripts/00-dependencies.sh index 948ed01..ca0b030 100755 --- a/install-scripts/00-dependencies.sh +++ b/install-scripts/00-dependencies.sh @@ -1,8 +1,6 @@ #!/bin/bash # 💫 https://github.com/JaKooLit 💫 # # main dependencies # -# 22 Aug 2024 - NOTE will trim this more down - # packages neeeded dependencies=( @@ -18,6 +16,31 @@ dependencies=( golang hwdata jq + libmpdclient-dev + libnl-3-dev + libasound2-dev + libstartup-notification0-dev + libwayland-client++1 + libwayland-dev + libcairo-5c-dev + libcairo2-dev + libsdbus-c++-bin + libegl-dev + libegl1-mesa-dev + libpango1.0-dev + libgdk-pixbuf-2.0-dev + libxcb-keysyms1-dev + libwayland-client0 + libxcb-ewmh-dev + libxcb-cursor-dev + libxcb-icccm4-dev + libxcb-randr0-dev + libxcb-render-util0-dev + libxcb-util-dev + libxcb-xkb-dev + libxcb-xinerama0-dev + libxkbcommon-dev + libxkbcommon-x11-dev meson ninja-build openssl @@ -29,13 +52,17 @@ dependencies=( python3-pyquery qt6-base-dev spirv-tools - vulkan-validationlayers + #vulkan-validationlayers vulkan-utility-libraries-dev wayland-protocols xdg-desktop-portal xwayland ) +build_dep=( + wlroots +) + ## WARNING: DO NOT EDIT BEYOND THIS LINE IF YOU DON'T KNOW WHAT YOU ARE DOING! ## # Determine the directory where the script is located SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" @@ -50,14 +77,17 @@ source "$(dirname "$(readlink -f "$0")")/Global_functions.sh" LOG="Install-Logs/install-$(date +%d-%H%M%S)_dependencies.log" # Installation of main dependencies -printf "\n%s - Installing main dependencies.... \n" "${NOTE}" +printf "\n%s - Installing ${SKY_BLUE}main dependencies....${RESET} \n" "${NOTE}" -for PKG1 in "${dependencies[@]}"; do - install_package "$PKG1" 2>&1 | tee -a "$LOG" - if [ $? -ne 0 ]; then - echo -e "\e[1A\e[K${ERROR} - $PKG1 Package installation failed, Please check the installation logs" - exit 1 - fi + +for PKG in "${dependencies[@]}"; do + install_package "$PKG" "$LOG" done -clear +printf "\n%.0s" {1..1} + +for PKG1 in "${build_dep[@]}"; do + build_dep "$PKG1" "$LOG" +done + +printf "\n%.0s" {1..2} diff --git a/install-scripts/01-hypr-pkgs.sh b/install-scripts/01-hypr-pkgs.sh index 9c00800..063119e 100755 --- a/install-scripts/01-hypr-pkgs.sh +++ b/install-scripts/01-hypr-pkgs.sh @@ -24,6 +24,7 @@ hypr_package=( pavucontrol playerctl polkit-kde-agent-1 + pkexec python3-requests python3-pip qt5ct @@ -85,40 +86,54 @@ source "$(dirname "$(readlink -f "$0")")/Global_functions.sh" # 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" -# Installation of main components -printf "\n%s - Installing hyprland packages.... \n" "${NOTE}" - -for PKG1 in "${hypr_package[@]}" "${hypr_package_2[@]}" "${Extra[@]}"; do - install_package "$PKG1" 2>&1 | tee -a "$LOG" - if [ $? -ne 0 ]; then - echo -e "\e[1A\e[K${ERROR} - $PKG1 Package installation failed, Please check the installation logs" - exit 1 - fi -done - -printf "\n%s - Uninstalling some packages inorder for dots to work properly \n" "${NOTE}" +# 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 - echo -e "\e[1A\e[K${ERROR} - $PKG uninstallation had failed, please check the log" - exit 1 + overall_failed=1 fi done +if [ $overall_failed -ne 0 ]; then + echo -e "${ERROR} Some packages failed to uninstall. Please check the log." +fi + +printf "\n%.0s" {1..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" +done + for PKG2 in "${force[@]}"; do - re_install_package "$PKG2" 2>&1 | tee -a "$LOG" - if [ $? -ne 0 ]; then - echo -e "\e[1A\e[K${ERROR} - Force reinstall of $PKG2 failed" - exit 1 - fi + re_install_package "$PKG2" "$LOG" done +printf "\n%.0s" {1..1} + +# install YAD from assets. NOTE This is downloaded from SID 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 ..." +fi + +printf "\n%.0s" {1..2} + # Install up-to-date Rust -echo "Installing most up to date Rust compiler..." +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" source "$HOME/.cargo/env" ## making brightnessctl work sudo chmod +s $(which brightnessctl) 2>&1 | tee -a "$LOG" || true -clear +printf "\n%.0s" {1..2} diff --git a/install-scripts/02-pre-cleanup.sh b/install-scripts/02-pre-cleanup.sh index c876574..4d3d473 100644 --- a/install-scripts/02-pre-cleanup.sh +++ b/install-scripts/02-pre-cleanup.sh @@ -43,8 +43,7 @@ for PKG_NAME in "${PACKAGES[@]}"; do # 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 done +printf "\n%.0s" {1..2} \ No newline at end of file diff --git a/install-scripts/Global_functions.sh b/install-scripts/Global_functions.sh index 92a48a2..d48f7d6 100755 --- a/install-scripts/Global_functions.sh +++ b/install-scripts/Global_functions.sh @@ -2,81 +2,115 @@ # 💫 https://github.com/JaKooLit 💫 # # Global Functions for Scripts # -# Create Directory for Install Logs -if [ ! -d Install-Logs ]; then - mkdir Install-Logs -fi - set -e # 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) -WARNING=$(tput setaf 1) -YELLOW=$(tput setaf 3) -RESET=$(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)" +# Create Directory for Install Logs +if [ ! -d Install-Logs ]; then + mkdir Install-Logs +fi -# Function for installing packages -install_package() { - # Checking if package is already installed - if sudo dpkg -l | grep -q -w "$1" ; then - echo -e "${OK} $1 is already installed. Skipping..." - else - # Package not installed - echo -e "${NOTE} Installing $1 ..." - sudo apt-get install -y "$1" 2>&1 | tee -a "$LOG" - # Making sure the package is installed - if sudo dpkg -l | grep -q -w "$1" ; then - echo -e "\e[1A\e[K${OK} Package ${YELLOW}$1${RESET} has been successfully installed!" - else - # Something is missing, exiting to review the log - echo -e "\e[1A\e[K${ERROR} $1 failed to install :( , please check the install.log. You may need to install manually! Sorry, I have tried :(" - exit 1 - fi - fi +# Show progress function +show_progress() { + local pid=$1 + local package_name=$2 + local spin_chars=("●○○○○○○○○○" "○●○○○○○○○○" "○○●○○○○○○○" "○○○●○○○○○○" "○○○○●○○○○" \ + "○○○○○●○○○○" "○○○○○○●○○○" "○○○○○○○●○○" "○○○○○○○○●○" "○○○○○○○○○●") + local i=0 + + tput civis + printf "\r${INFO} Installing ${YELLOW}%s${RESET} ..." "$package_name" + + 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 + done + + printf "\r${INFO} Installing ${YELLOW}%s${RESET} ... Done!%-20s \n\n" "$package_name" "" + tput cnorm } -# Function for re-installing packages -re_install_package() { - echo -e "${NOTE} Force installing $1 ..." + +# 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" - # Try to reinstall the package - if sudo apt-get install --reinstall -y "$1" 2>&1 | tee -a "$LOG"; then - # Check if the package was installed successfully - if dpkg -l | grep -q -w "$1"; then - echo -e "\e[1A\e[K${OK} Package ${YELLOW}$1${RESET} has been successfully installed!" - else - # Package was not found, installation failed - echo -e "${ERROR} $1 failed to install. Please check the install.log. You may need to install it manually. Sorry, I have tried :(" - exit 1 - fi + # 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!" else - # Installation command failed - echo -e "${ERROR} Failed to reinstall $1. Please check the install.log. You may need to install it manually. Sorry, I have tried :(" - exit 1 - fi -} - -uninstall_package() { - # Check if package is installed - if sudo dpkg -l | grep -q -w "^ii $1" ; then - # Package is installed, attempt to uninstall - echo -e "${NOTE} Uninstalling $1 ..." - - # Attempt to uninstall the package and its configuration files - sudo apt-get autoremove -y "$1" >> "$LOG" 2>&1 - - # Check if the package is still installed after removal attempt - if ! dpkg -l | grep -q -w "^ii $1" ; then - echo -e "\e[1A\e[K${OK} $1 was uninstalled." - else - echo -e "\e[1A\e[K${ERROR} $1 failed to uninstall. Please check the uninstall.log." - exit 1 + 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 fi } + +# Function for build depencies with a progress bar +build_dep() { + echo -e "${INFO} building dependencies for ${MAGENTA}$1${RESET} " + ( + stdbuf -oL sudo build-dep -y "$1" 2>&1 + ) >> "$LOG" 2>&1 & + PID=$! + show_progress $PID "$1" +} + +# 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!" + 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 :(" + fi +} + +# Function for removing packages +uninstall_package() { + local pkg="$1" + + # Checking if package is installed + if sudo dpkg -l | grep -q -w "^ii $1" ; then + echo -e "${NOTE} removing $pkg ..." + 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." + else + echo -e "\e[1A\e[K${ERROR} $pkg Removal failed. No actions required." + return 1 + fi + else + echo -e "${INFO} Package $pkg not installed, skipping." + fi + return 0 +} \ No newline at end of file diff --git a/install-scripts/InputGroup.sh b/install-scripts/InputGroup.sh index b2bc142..71f9459 100755 --- a/install-scripts/InputGroup.sh +++ b/install-scripts/InputGroup.sh @@ -1,6 +1,6 @@ #!/bin/bash # 💫 https://github.com/JaKooLit 💫 # -# Adding user in input group for waybar keyboard state module # +# Adding users into input group # ## WARNING: DO NOT EDIT BEYOND THIS LINE IF YOU DON'T KNOW WHAT YOU ARE DOING! ## # Determine the directory where the script is located @@ -15,40 +15,17 @@ source "$(dirname "$(readlink -f "$0")")/Global_functions.sh" # 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" -while true; do - echo "${WARN} This script will add your user to the 'input' group." - echo "${NOTE} Please note that adding yourself to the 'input' group might be necessary for waybar keyboard-state functionality." +# Check if the 'input' group exists +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" +fi - printf "\n%.0s" {1..2} - - read -p "${YELLOW}Do you want to proceed? (y/n): ${RESET}" choice +# 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 [[ $choice == "y" || $choice == "Y" ]]; then - # Check if the 'input' group exists - if grep -q '^input:' /etc/group; then - echo "${OK} 'input' group exists." 2>&1 | tee -a "$LOG" - else - echo "${NOTE} 'input' group doesn't exist. Creating 'input' group..." 2>&1 | tee -a "$LOG" - sudo groupadd input - - # Log the creation of the 'input' group - echo "${NOTE} 'input' group created" 2>&1 | tee -a "$LOG" - fi - - # Add the user to the input group - sudo usermod -aG input "$(whoami)" - echo "${OK} User added to the 'input' group. Changes will take effect after you log out and log back in." 2>&1 | tee -a "$LOG" - - # Log the addition of the user to the 'input' group - echo "${NOTE} - User added to 'input' group" 2>&1 | tee -a "$LOG" - break # Break out of the loop if 'yes' is chosen - - elif [[ $choice == "n" || $choice == "N" ]]; then - echo "${NOTE} No changes made. Exiting the script." 2>&1 | tee -a "$LOG" - break # Break out of the loop if 'no' is chosen - else - echo "${ERROR} Invalid choice. Please enter 'y' for yes or 'n' for no." - fi -done - -clear \ No newline at end of file +printf "\n%.0s" {1..2} \ No newline at end of file diff --git a/install-scripts/ags.sh b/install-scripts/ags.sh index 2d2906f..498e268 100755 --- a/install-scripts/ags.sh +++ b/install-scripts/ags.sh @@ -16,6 +16,14 @@ ags=( libsoup-3.0-dev ) +f_ags=( + npm +) + +build_dep=( + pam +) + # specific tags to download ags_tag="v1.9.0" @@ -33,21 +41,38 @@ source "$(dirname "$(readlink -f "$0")")/Global_functions.sh" LOG="Install-Logs/install-$(date +%d-%H%M%S)_ags.log" 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}') + if [[ "$AGS_VERSION" == "1.9.0" ]]; then + printf "${INFO} ${MAGENTA}Aylur's GTK Shell v1.9.0${RESET} is already installed. Skipping installation." + exit 0 + fi +fi + +# Installation of main components +printf "\n%s - Installing ${SKY_BLUE}Aylur's GTK shell $ags_tag${RESET} Dependencies \n" "${INFO}" + # Installing ags Dependencies for PKG1 in "${ags[@]}"; do - install_package "$PKG1" 2>&1 | tee -a "$LOG" - if [ $? -ne 0 ]; then - echo -e "\033[1A\033[K${ERROR} - $PKG1 Package installation failed, Please check the installation logs" - exit 1 - fi + 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" done #install typescript by npm sudo npm install --global typescript 2>&1 | tee -a "$LOG" # ags - -printf "${NOTE} Install and Compiling Aylurs GTK shell $ags_tag.. \n" +printf "${INFO} Install and Compiling ${SKY_BLUE}Aylur's GTK shell $ags_tag${RESET} .. \n" # Check if folder exists and remove it if [ -d "ags" ]; then @@ -62,17 +87,18 @@ if git clone --recursive -b "$ags_tag" --depth 1 https://github.com/Aylur/ags.gi npm install meson setup build if sudo meson install -C build 2>&1 | tee -a "$MLOG"; then - printf "${OK} ags installed successfully.\n" 2>&1 | tee -a "$MLOG" + printf "${OK} ${YELLOW}Aylur's GTK shell $ags_tag${RESET} installed successfully.\n" 2>&1 | tee -a "$MLOG" else - echo -e "${ERROR} Installation failed for ags" 2>&1 | tee -a "$MLOG" + echo -e "${ERROR} Installation failed for ${YELLOW}Aylur's GTK shell $ags_tag${RESET}" 2>&1 | tee -a "$MLOG" fi # Move logs to Install-Logs directory mv "$MLOG" ../Install-Logs/ || true cd .. else - echo -e "${ERROR} Failed to download ags Please check your connection" 2>&1 | tee -a "$LOG" + echo -e "${ERROR} Failed to download ${YELLOW}Aylur's GTK shell $ags_tag${RESET} . Please check your connection" 2>&1 | tee -a "$LOG" mv "$MLOG" ../Install-Logs/ || true exit 1 fi +printf "\n%.0s" {1..2} \ No newline at end of file diff --git a/install-scripts/bluetooth.sh b/install-scripts/bluetooth.sh index 4fb2920..574c24f 100755 --- a/install-scripts/bluetooth.sh +++ b/install-scripts/bluetooth.sh @@ -21,13 +21,12 @@ source "$(dirname "$(readlink -f "$0")")/Global_functions.sh" LOG="Install-Logs/install-$(date +%d-%H%M%S)_bluetooth.log" # Bluetooth -printf "${NOTE} Installing Bluetooth Packages...\n" +printf "${NOTE} Installing ${SKY_BLUE}Bluetooth${RESET} Packages...\n" for BLUE in "${blue[@]}"; do - install_package "$BLUE" 2>&1 | tee -a "$LOG" - [ $? -ne 0 ] && { echo -e "\e[1A\e[K${ERROR} - $BLUE Package installation failed, Please check the installation logs"; exit 1; } + install_package "$BLUE" "$LOG" done -printf " Activating Bluetooth Services...\n" +printf " Activating ${YELLOW}Bluetooth${RESET} Services...\n" sudo systemctl enable --now bluetooth.service 2>&1 | tee -a "$LOG" -clear +printf "\n%.0s" {1..2} diff --git a/install-scripts/dotfiles-branch.sh b/install-scripts/dotfiles-branch.sh index 3d21eab..943ad0a 100644 --- a/install-scripts/dotfiles-branch.sh +++ b/install-scripts/dotfiles-branch.sh @@ -3,15 +3,16 @@ # Hyprland-Dots to download from main # #specific branch or release -dots_tag="Deb-Untu-old-v-Hyprland" +dots_tag="Deb-Untu-Dots" ## WARNING: DO NOT EDIT BEYOND THIS LINE IF YOU DON'T KNOW WHAT YOU ARE DOING! ## source "$(dirname "$(readlink -f "$0")")/Global_functions.sh" # Check if Hyprland-Dots exists -printf "${NOTE} Downloading KooL's Hyprland Dots for Debian....\n" +printf "${NOTE} Cloning and Installing ${SKY_BLUE}KooL's Hyprland Dots for Debian${RESET}....\n" +# Check if Hyprland-Dots exists if [ -d Hyprland-Dots-Debian ]; then cd Hyprland-Dots-Debian git stash @@ -25,8 +26,8 @@ else chmod +x copy.sh ./copy.sh else - echo -e "$ERROR Can't download Hyprland-Dots-Debian" + echo -e "$ERROR Can't download ${YELLOW}KooL's Hyprland-Dots-Debian${RESET}" fi fi -clear +printf "\n%.0s" {1..2} diff --git a/install-scripts/fonts.sh b/install-scripts/fonts.sh index 2ead805..514a3df 100755 --- a/install-scripts/fonts.sh +++ b/install-scripts/fonts.sh @@ -23,25 +23,23 @@ source "$(dirname "$(readlink -f "$0")")/Global_functions.sh" # 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" + # Installation of main components -printf "\n%s - Installing fonts.... \n" "${NOTE}" +printf "\n%s - Installing necessary ${SKY_BLUE}fonts${RESET}.... \n" "${NOTE}" for PKG1 in "${fonts[@]}"; do - install_package "$PKG1" 2>&1 | tee -a "$LOG" - if [ $? -ne 0 ]; then - echo -e "\e[1A\e[K${ERROR} - $PKG1 Package installation failed, Please check the installation logs" - exit 1 - fi + install_package "$PKG1" "$LOG" done +printf "\n%.0s" {1..2} + # jetbrains nerd font. Necessary for waybar -printf "\n%s - Downloading and Extracting Jetbrains Mono Nerd Font.... \n" "${NOTE}" DOWNLOAD_URL="https://github.com/ryanoasis/nerd-fonts/releases/latest/download/JetBrainsMono.tar.xz" # Maximum number of download attempts -MAX_ATTEMPTS=3 +MAX_ATTEMPTS=2 for ((ATTEMPT = 1; ATTEMPT <= MAX_ATTEMPTS; ATTEMPT++)); do curl -OL "$DOWNLOAD_URL" 2>&1 | tee -a "$LOG" && break - echo "Download attempt $ATTEMPT failed. Retrying in 2 seconds..." 2>&1 | tee -a "$LOG" + echo "Download ${YELLOW}DOWNLOAD_URL${RESET} attempt $ATTEMPT failed. Retrying in 2 seconds..." 2>&1 | tee -a "$LOG" sleep 2 done @@ -50,12 +48,16 @@ if [ -d ~/.local/share/fonts/JetBrainsMonoNerd ]; then rm -rf ~/.local/share/fonts/JetBrainsMonoNerd 2>&1 | tee -a "$LOG" fi -mkdir -p ~/.local/share/fonts/JetBrainsMonoNerd - +mkdir -p ~/.local/share/fonts/JetBrainsMonoNerd 2>&1 | tee -a "$LOG" # Extract the new files into the JetBrainsMono folder and log the output tar -xJkf JetBrainsMono.tar.xz -C ~/.local/share/fonts/JetBrainsMonoNerd 2>&1 | tee -a "$LOG" # Update font cache and log the output fc-cache -v 2>&1 | tee -a "$LOG" -clear +# clean up +if [ -d "JetBrainsMono.tar.xz" ]; then + rm -r JetBrainsMono.tar.xz 2>&1 | tee -a "$LOG" +fi + +printf "\n%.0s" {1..2} diff --git a/install-scripts/gtk_themes.sh b/install-scripts/gtk_themes.sh index cccf58e..e34f0f8 100755 --- a/install-scripts/gtk_themes.sh +++ b/install-scripts/gtk_themes.sh @@ -8,6 +8,7 @@ engine=( ) ## WARNING: DO NOT EDIT BEYOND THIS LINE IF YOU DON'T KNOW WHAT YOU ARE DOING! ## + # Determine the directory where the script is located SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" @@ -23,11 +24,7 @@ LOG="Install-Logs/install-$(date +%d-%H%M%S)_themes.log" # installing engine needed for gtk themes for PKG1 in "${engine[@]}"; do - install_package "$PKG1" 2>&1 | tee -a "$LOG" - if [ $? -ne 0 ]; then - echo -e "\033[1A\033[K${ERROR} - $PKG1 Package installation failed, Please check the installation logs" - exit 1 - fi + install_package "$PKG1" "$LOG" done # Check if the directory exists and delete it if present @@ -36,7 +33,7 @@ if [ -d "GTK-themes-icons" ]; then rm -rf "GTK-themes-icons" 2>&1 | tee -a "$LOG" fi -echo "$NOTE Cloning GTK themes and Icons repository..." 2>&1 | tee -a "$LOG" +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 chmod +x auto-extract.sh @@ -47,4 +44,4 @@ else echo "$ERROR Download failed for GTK themes and Icons.." 2>&1 | tee -a "$LOG" fi -clear \ No newline at end of file +printf "\n%.0s" {1..2} \ No newline at end of file diff --git a/install-scripts/hypridle.sh b/install-scripts/hypridle.sh index 3bd050b..dfd0c3c 100755 --- a/install-scripts/hypridle.sh +++ b/install-scripts/hypridle.sh @@ -25,40 +25,37 @@ LOG="Install-Logs/install-$(date +%d-%H%M%S)_hypridle.log" MLOG="install-$(date +%d-%H%M%S)_hypridle2.log" # Installation of dependencies -printf "\n%s - Installing hypridle dependencies.... \n" "${NOTE}" +printf "\n%s - Installing ${YELLOW}hypridle dependencies${RESET} .... \n" "${INFO}" for PKG1 in "${idle[@]}"; do install_package "$PKG1" 2>&1 | tee -a "$LOG" if [ $? -ne 0 ]; then - echo -e "\e[1A\e[K${ERROR} - $PKG1 Package installation failed, Please check the installation logs" + 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 folder exists and remove it if [ -d "hypridle" ]; then - printf "${NOTE} Removing existing hypridle folder...\n" rm -rf "hypridle" fi # Clone and build -printf "${NOTE} Installing hypridle...\n" +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} hypridle installed successfully.\n" 2>&1 | tee -a "$MLOG" + printf "${OK} ${MAGENTA}hypridle $idle_tag${RESET} installed successfully.\n" 2>&1 | tee -a "$MLOG" else - echo -e "${ERROR} Installation failed for hypridle." 2>&1 | tee -a "$MLOG" + 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 hypridle." 2>&1 | tee -a "$LOG" + echo -e "${ERROR} Download failed for ${YELLOW}hypridle $idle_tag${RESET}" 2>&1 | tee -a "$LOG" fi -clear - - +printf "\n%.0s" {1..2} diff --git a/install-scripts/hyprland.sh b/install-scripts/hyprland.sh index 18226fc..3d020ce 100755 --- a/install-scripts/hyprland.sh +++ b/install-scripts/hyprland.sh @@ -29,17 +29,15 @@ LOG="Install-Logs/install-$(date +%d-%H%M%S)_hyprland.log" source "$(dirname "$(readlink -f "$0")")/Global_functions.sh" # Hyprland -printf "${NOTE} Installing additional Hyprland packages .......\n" +printf "${NOTE} Installing ${SKY_BLUE}Hyprland packages${RESET} .......\n" for HYPR in "${hypr[@]}"; do - install_package "$HYPR" 2>&1 | tee -a "$LOG" - [ $? -ne 0 ] && { echo -e "\e[1A\e[K${ERROR} - $HYPR Package installation failed, Please check the installation logs"; exit 1; } + install_package "$HYPR" "$LOG" done # force -printf "${NOTE} Force Installing Hyprland .......\n" +printf "${NOTE} Reinstalling ${SKY_BLUE}Hyprland packages${RESET} .......\n" for HYPR1 in "${f_hypr[@]}"; do - re_install_package "$HYPR1" 2>&1 | tee -a "$LOG" - [ $? -ne 0 ] && { echo -e "\e[1A\e[K${ERROR} - $HYPR1 Package installation failed, Please check the installation logs"; exit 1; } + re_install_package "$HYPR1" "$LOG" done -clear \ No newline at end of file +printf "\n%.0s" {1..2} \ No newline at end of file diff --git a/install-scripts/hyprlock.sh b/install-scripts/hyprlock.sh index cea2a61..8596c9a 100755 --- a/install-scripts/hyprlock.sh +++ b/install-scripts/hyprlock.sh @@ -29,39 +29,33 @@ LOG="Install-Logs/install-$(date +%d-%H%M%S)_hyprlock.log" MLOG="install-$(date +%d-%H%M%S)_hyprlock2.log" # Installation of dependencies -printf "\n%s - Installing hyprlock dependencies.... \n" "${NOTE}" +printf "\n%s - Installing ${YELLOW}hyprlock dependencies${RESET} .... \n" "${INFO}" for PKG1 in "${lock[@]}"; do - install_package "$PKG1" 2>&1 | tee -a "$LOG" - if [ $? -ne 0 ]; then - echo -e "\e[1A\e[K${ERROR} - $PKG1 Package installation failed, Please check the installation logs" - exit 1 - fi + install_package "$PKG1" "$LOG" done # Check if hyprlock folder exists and remove it if [ -d "hyprlock" ]; then - printf "${NOTE} Removing existing hyprlock folder...\n" rm -rf "hyprlock" fi # Clone and build hyprlock -printf "${NOTE} Installing hyprlock...\n" +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} hyprlock installed successfully.\n" 2>&1 | tee -a "$MLOG" + printf "${OK} ${YELLOW}hyprlock $lock_tag${RESET} installed successfully.\n" 2>&1 | tee -a "$MLOG" else - echo -e "${ERROR} Installation failed for hyprlock." 2>&1 | tee -a "$MLOG" + 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 hyprlock." 2>&1 | tee -a "$LOG" + echo -e "${ERROR} Download failed for ${YELLOW}hyprlock $lock_tag${RESET}" 2>&1 | tee -a "$LOG" fi - - +printf "\n%.0s" {1..2} diff --git a/install-scripts/imagemagick.sh b/install-scripts/imagemagick.sh deleted file mode 100755 index fd71444..0000000 --- a/install-scripts/imagemagick.sh +++ /dev/null @@ -1,67 +0,0 @@ -#!/bin/bash -# 💫 https://github.com/JaKooLit 💫 # -# imagemagick from source # - -depend=( - build-essential -) - - -## WARNING: DO NOT EDIT BEYOND THIS LINE IF YOU DON'T KNOW WHAT YOU ARE DOING! ## -# Determine the directory where the script is located -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" || exit 1 - -source "$(dirname "$(readlink -f "$0")")/Global_functions.sh" - -# Set the name of the log file to include the current date and time -LOG="Install-Logs/install-$(date +%d-%H%M%S)_image.log" -MLOG="install-$(date +%d-%H%M%S)_image2.log" - -# Installing depencies -for PKG1 in "${depend[@]}"; do - install_package "$PKG1" 2>&1 | tee -a "$LOG" - if [ $? -ne 0 ]; then - echo -e "\033[1A\033[K${ERROR} - $PKG1 Package installation failed, Please check the installation logs" - exit 1 - fi -done - -# check if Imagemagick is already installed manually -if [ -f "/usr/local/bin/magick" ]; then - echo "${NOTE} /usr/local/bin/magick already exists. skipping installation of Imagemagick." 2>&1 | tee -a "$LOG" - exit 0 -fi - -printf "${NOTE} Installing ImageMagick from source...\n" - -# Check if folder exists and remove it -if [ -d "ImageMagick" ]; then - printf "${NOTE} Removing existing ImageMagick folder...\n" - rm -rf "ImageMagick" -fi - -# Clone and build ImageMagick -printf "${NOTE} Installing ImageMagick...\n" -if git clone --depth 1 https://github.com/ImageMagick/ImageMagick.git; then - cd ImageMagick || exit 1 - ./configure - make - if sudo make install 2>&1 | tee -a "$MLOG" ; then - sudo ldconfig /usr/local/lib - printf "${OK} ImageMagick installed successfully.\n" 2>&1 | tee -a "$MLOG" - else - echo -e "${ERROR} Installation failed for ImageMagick." 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 ImageMagick." 2>&1 | tee -a "$LOG" -fi - -clear - diff --git a/install-scripts/nvidia.sh b/install-scripts/nvidia.sh index 6b8066d..3cfba52 100755 --- a/install-scripts/nvidia.sh +++ b/install-scripts/nvidia.sh @@ -57,13 +57,13 @@ add_to_file() { } # Install additional Nvidia packages -printf "${YELLOW} Installing Nvidia packages...\n" +printf "${YELLOW} Installing ${SKY_BLUE}Nvidia packages${RESET} ...\n" for NVIDIA in "${nvidia_pkg[@]}"; do - install_package "$NVIDIA" 2>&1 | tee -a "$LOG" + install_package "$NVIDIA" "$LOG" done - -printf "${YELLOW} nvidia-stuff to /etc/default/grub..." +# 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" @@ -106,4 +106,4 @@ printf "${YELLOW} nvidia-stuff to /etc/default/grub..." echo "Modules file ($modules_file) not found." 2>&1 | tee -a "$LOG" fi -clear +printf "\n%.0s" {1..2} diff --git a/install-scripts/nwg-look.sh b/install-scripts/nwg-look.sh deleted file mode 100755 index b8d20e9..0000000 --- a/install-scripts/nwg-look.sh +++ /dev/null @@ -1,68 +0,0 @@ -#!/bin/bash -# 💫 https://github.com/JaKooLit 💫 # -# nwg-look ) # - -# nwg-look is now in trixie repo 14-Sep-2024 - -nwg_look=( - golang - libgtk-3-dev - libcairo2-dev - libglib2.0-bin -) - -# specific tags to download -nwg_tag="v0.2.7" - -## WARNING: DO NOT EDIT BEYOND THIS LINE IF YOU DON'T KNOW WHAT YOU ARE DOING! ## -# Determine the directory where the script is located -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" || exit 1 - -source "$(dirname "$(readlink -f "$0")")/Global_functions.sh" - -# Set the name of the log file to include the current date and time -LOG="Install-Logs/install-$(date +'%d-%H%M%S')_nwg-look.log" -MLOG="install-$(date +'%d-%H%M%S')_nwg-look2.log" - -# Installing NWG-Look Dependencies -for PKG1 in "${nwg_look[@]}"; do - install_package "$PKG1" 2>&1 | tee -a "$LOG" - if [ $? -ne 0 ]; then - echo -e "\033[1A\033[K${ERROR} - $PKG1 Package installation failed, Please check the installation logs" - exit 1 - fi -done - -printf "${NOTE} Installing nwg-look\n" - -# Check if nwg-look folder exists and remove it -if [ -d "nwg-look" ]; then - printf "${NOTE} Removing existing nwg-look folder...\n" - rm -rf "nwg-look" -fi - -# Clone nwg-look repository with the specified tag -if git clone --recursive -b "$nwg_tag" --depth 1 https://github.com/nwg-piotr/nwg-look.git; then - cd nwg-look || exit 1 - # Build nwg-look - make build - if sudo make install 2>&1 | tee -a "$MLOG"; then - printf "${OK} nwg-look installed successfully.\n" 2>&1 | tee -a "$MLOG" - else - echo -e "${ERROR} Installation failed for nwg-look" 2>&1 | tee -a "$MLOG" - fi - - # Move logs to Install-Logs directory - mv "$MLOG" ../Install-Logs/ || true - cd .. -else - echo -e "${ERROR} Failed to download nwg-look. Please check your connection" 2>&1 | tee -a "$LOG" - mv "$MLOG" ../Install-Logs/ || true - exit 1 -fi - -clear diff --git a/install-scripts/rofi-wayland.sh b/install-scripts/rofi-wayland.sh index 641590e..5d76fe3 100755 --- a/install-scripts/rofi-wayland.sh +++ b/install-scripts/rofi-wayland.sh @@ -12,6 +12,14 @@ rofi=( libnl-3-dev libasound2-dev libstartup-notification0-dev + libwayland-client++1 + libwayland-dev + libcairo-5c-dev + libcairo2-dev + libpango1.0-dev + libgdk-pixbuf-2.0-dev + libxcb-keysyms1-dev + libwayland-client0 libxcb-ewmh-dev libxcb-cursor-dev libxcb-icccm4-dev @@ -22,11 +30,11 @@ rofi=( libxcb-xinerama0-dev libxkbcommon-dev libxkbcommon-x11-dev - imagemagick + ohcount wget ) - +rofi_tag="1.7.8+wayland1" ## WARNING: DO NOT EDIT BEYOND THIS LINE IF YOU DON'T KNOW WHAT YOU ARE DOING! ## # Determine the directory where the script is located SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" @@ -41,56 +49,42 @@ source "$(dirname "$(readlink -f "$0")")/Global_functions.sh" LOG="Install-Logs/install-$(date +%d-%H%M%S)_rofi_wayland.log" MLOG="install-$(date +%d-%H%M%S)_rofi_wayland2.log" -# uninstall other rofi -for PKG in "rofi" "bison"; do - uninstall_package "$PKG" 2>&1 | tee -a "$LOG" - if [ $? -ne 0 ]; then - echo -e "\e[1A\e[K${ERROR} - $PKG uninstallation had failed, please check the log" - exit 1 - fi -done - -sleep 1 -printf "\n" # Installation of main components -printf "\n%s - Installing rofi-wayland dependencies.... \n" "${NOTE}" +printf "\n%s - Re-installing ${SKY_BLUE}rofi-wayland dependencies${RESET}.... \n" "${INFO}" -printf "${NOTE} Force installing packages...\n" for FORCE in "${rofi[@]}"; do - sudo apt-get --reinstall install -y "$FORCE" 2>&1 | tee -a "$LOG" - [ $? -ne 0 ] && { echo -e "\e[1A\e[K${ERROR} - $FORCE Package installation failed, Please check the installation logs"; exit 1; } + re_install_package "$FORCE" "$LOG" done -printf "\n\n" - +printf "\n%.0s" {1..2} # Clone and build rofi - wayland -printf "${NOTE} Installing rofi-wayland...\n" +printf "${NOTE} Installing ${SKY_BLUE}rofi-wayland${RESET}...\n" # Check if rofi folder exists -if [ -d "rofi-1.7.5+wayland3" ]; then - rm -rf "rofi-1.7.5+wayland3" +if [ -d "rofi-$rofi_tag" ]; then + rm -rf "rofi-$rofi_tag" fi # cloning rofi-wayland -printf "${NOTE} Downloading rofi-wayland v1.7.5+wayland3 from releases...\n" -wget https://github.com/lbonn/rofi/releases/download/1.7.5%2Bwayland3/rofi-1.7.5+wayland3.tar.gz +printf "${NOTE} Downloading ${YELLOW}rofi-wayland $rofi_tag${RESET} from releases...\n" +wget https://github.com/lbonn/rofi/releases/download/1.7.8%2Bwayland1/rofi-1.7.8+wayland1.tar.gz -if [ -f "rofi-1.7.5+wayland3.tar.gz" ]; then - printf "rofi-wayland downloaded successfully.\n" 2>&1 | tee -a "$LOG" - tar xf rofi-1.7.5+wayland3.tar.gz +if [ -f "rofi-$rofi_tag.tar.gz" ]; then + printf "${OK} ${YELLOW}rofi-wayland $rofi_tag${RESET} downloaded successfully.\n" 2>&1 | tee -a "$LOG" + tar xf rofi-$rofi_tag.tar.gz fi -cd rofi-1.7.5+wayland3 || exit 1 +cd rofi-$rofi_tag || exit 1 # Proceed with the installation steps if meson setup build && ninja -C build ; then if sudo ninja -C build install 2>&1 | tee -a "$MLOG"; then printf "${OK} rofi-wayland installed successfully.\n" 2>&1 | tee -a "$MLOG" else - echo -e "${ERROR} Installation failed for rofi-wayland." 2>&1 | tee -a "$MLOG" + echo -e "${ERROR} Installation failed for ${YELLOW}rofi-wayland $rofi_tag${RESET}" 2>&1 | tee -a "$MLOG" fi else - echo -e "${ERROR} Meson setup or ninja build failed for rofi-wayland." 2>&1 | tee -a "$MLOG" + echo -e "${ERROR} Meson setup or ninja build failed for ${YELLOW}rofi-wayland $rofi_tag${RESET}" 2>&1 | tee -a "$MLOG" fi # Move logs to Install-Logs directory @@ -98,6 +92,6 @@ mv "$MLOG" ../Install-Logs/ || true cd .. || exit 1 # clean up -rm -rf rofi-1.7.5+wayland3.tar.gz +rm -rf rofi-$rofi_tag.tar.gz -clear +printf "\n%.0s" {1..2} diff --git a/install-scripts/rog.sh b/install-scripts/rog.sh index e6e98e1..4b94c38 100755 --- a/install-scripts/rog.sh +++ b/install-scripts/rog.sh @@ -68,4 +68,4 @@ install_and_log "asusctl" "https://gitlab.com/asus-linux/asusctl.git" # Download and build supergfxctl install_and_log "supergfxctl" "https://gitlab.com/asus-linux/supergfxctl.git" -clear \ No newline at end of file +printf "\n%.0s" {1..2} \ No newline at end of file diff --git a/install-scripts/sddm.sh b/install-scripts/sddm.sh index 1221d16..40d2469 100755 --- a/install-scripts/sddm.sh +++ b/install-scripts/sddm.sh @@ -8,11 +8,9 @@ sddm1=( ) sddm2=( - qml-module-qtgraphicaleffects - qml-module-qtquick-controls - qml-module-qtquick-controls2 - qml-module-qtquick-extras - qml-module-qtquick-layouts + qml6-module-qt5compat-graphicaleffects + qt6-declarative-dev + qt6-svg-dev ) ## WARNING: DO NOT EDIT BEYOND THIS LINE IF YOU DON'T KNOW WHAT YOU ARE DOING! ## @@ -30,89 +28,31 @@ LOG="Install-Logs/install-$(date +%d-%H%M%S)_sddm.log" # Install SDDM (no-recommends) -printf "\n%s - Installing sddm.... \n" "${NOTE}" +printf "\n%s - Installing ${SKY_BLUE}SDDM and dependencies${RESET} .... \n" "${NOTE}" for PKG1 in "${sddm1[@]}" ; do - sudo apt-get install --no-install-recommends -y "$PKG1" 2>&1 | tee -a "$LOG" - if [ $? -ne 0 ]; then - echo -e "\e[1A\e[K${ERROR} - $PKG1 Package installation failed, Please check the installation logs" - exit 1 - fi + sudo apt install --no-install-recommends -y "$PKG1" | tee -a "$LOG" done # Installation of additional sddm stuff -printf "\n%s - Installing sddm additional stuff.... \n" "${NOTE}" for PKG2 in "${sddm2[@]}"; do - install_package "$PKG2" 2>&1 | tee -a "$LOG" - if [ $? -ne 0 ]; then - echo -e "\e[1A\e[K${ERROR} - $PKG2 Package installation failed, Please check the installation logs" - exit 1 - fi + install_package "$PKG2" "$LOG" done -# Check if other login managers are installed and disabling their service before enabling sddm -for login_manager in lightdm gdm lxdm lxdm-gtk3; do - if sudo apt-get list installed "$login_manager" &>> /dev/null; then +# Check if other login managers are installed and disable their service before enabling SDDM +for login_manager in lightdm gdm3 gdm lxdm xdm lxdm-gtk3; do + if sudo apt list --installed "$login_manager" > /dev/null; then echo "Disabling $login_manager..." - sudo systemctl disable "$login_manager" 2>&1 | tee -a "$LOG" + sudo systemctl disable "$login_manager.service" 2>&1 | tee -a "$LOG" + echo "$login_manager disabled." fi done printf " Activating sddm service........\n" sudo systemctl enable sddm -# Set up SDDM -echo -e "${NOTE} Setting up the login screen." -sddm_conf_dir=/etc/sddm.conf.d -[ ! -d "$sddm_conf_dir" ] && { printf "$CAT - $sddm_conf_dir not found, creating...\n"; sudo mkdir -p "$sddm_conf_dir" 2>&1 | tee -a "$LOG"; } - 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" printf "\n%.0s" {1..2} -# SDDM-themes -valid_input=false -while [ "$valid_input" != true ]; do - read -n 1 -r -p "${CAT} OPTIONAL - Would you like to install SDDM themes? (y/n)" install_sddm_theme - if [[ $install_sddm_theme =~ ^[Yy]$ ]]; then - printf "\n%s - Installing Simple SDDM Theme\n" "${NOTE}" - - # Check if /usr/share/sddm/themes/simple-sddm exists and remove if it does - if [ -d "/usr/share/sddm/themes/simple-sddm" ]; then - sudo rm -rf "/usr/share/sddm/themes/simple-sddm" - echo -e "\e[1A\e[K${OK} - Removed existing 'simple-sddm' directory." 2>&1 | tee -a "$LOG" - fi - - # Check if simple-sddm directory exists in the current directory and remove if it does - if [ -d "simple-sddm" ]; then - rm -rf "simple-sddm" - echo -e "\e[1A\e[K${OK} - Removed existing 'simple-sddm' directory from the current location." 2>&1 | tee -a "$LOG" - fi - - if git clone https://github.com/JaKooLit/simple-sddm.git; then - while [ ! -d "simple-sddm" ]; do - sleep 1 - done - - if [ ! -d "/usr/share/sddm/themes" ]; then - sudo mkdir -p /usr/share/sddm/themes - echo -e "\e[1A\e[K${OK} - Directory '/usr/share/sddm/themes' created." 2>&1 | tee -a "$LOG" - fi - - sudo mv simple-sddm /usr/share/sddm/themes/ - echo -e "[Theme]\nCurrent=simple-sddm" | sudo tee "$sddm_conf_dir/theme.conf.user" &>> "$LOG" - else - echo -e "\e[1A\e[K${ERROR} - Failed to clone the theme repository. Please check your internet connection or repository availability." | tee -a "$LOG" >&2 - fi - valid_input=true - elif [[ $install_sddm_theme =~ ^[Nn]$ ]]; then - printf "\n%s - No SDDM themes will be installed.\n" "${NOTE}" 2>&1 | tee -a "$LOG" - valid_input=true - else - printf "\n%s - Invalid input. Please enter 'y' for Yes or 'n' for No.\n" "${ERROR}" 2>&1 | tee -a "$LOG" - install_sddm_theme="" - fi -done - -clear \ No newline at end of file diff --git a/install-scripts/sddm_theme.sh b/install-scripts/sddm_theme.sh new file mode 100755 index 0000000..1181623 --- /dev/null +++ b/install-scripts/sddm_theme.sh @@ -0,0 +1,71 @@ +#!/bin/bash +# 💫 https://github.com/JaKooLit 💫 # +# SDDM themes # + +source_theme="https://codeberg.org/JaKooLit/sddm-sequoia" +theme_name="sequoia_2" + +## WARNING: DO NOT EDIT BEYOND THIS LINE IF YOU DON'T KNOW WHAT YOU ARE DOING! ## +# Determine the directory where the script is located +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" || exit 1 + +source "$(dirname "$(readlink -f "$0")")/Global_functions.sh" + +# Set the name of the log file to include the current date and time +LOG="Install-Logs/install-$(date +%d-%H%M%S)_sddm_theme.log" + +# SDDM-themes +printf "${INFO} Installing ${SKY_BLUE}Additional SDDM Theme${RESET}\n" + +# Check if /usr/share/sddm/themes/$theme_name exists and remove if it does +if [ -d "/usr/share/sddm/themes/$theme_name" ]; then + sudo rm -rf "/usr/share/sddm/themes/$theme_name" + echo -e "\e[1A\e[K${OK} - Removed existing $theme_name directory." 2>&1 | tee -a "$LOG" +fi + +# Check if $theme_name directory exists in the current directory and remove if it does +if [ -d "$theme_name" ]; then + rm -rf "$theme_name" + echo -e "\e[1A\e[K${OK} - Removed existing $theme_name directory from the current location." 2>&1 | tee -a "$LOG" +fi + +# Clone the repository +if git clone --depth 1 "$source_theme" "$theme_name"; then + if [ ! -d "$theme_name" ]; then + echo "${ERROR} Failed to clone the repository." | tee -a "$LOG" + fi + + # Create themes directory if it doesn't exist + if [ ! -d "/usr/share/sddm/themes" ]; then + sudo mkdir -p /usr/share/sddm/themes + echo "${OK} - Directory '/usr/share/sddm/themes' created." | tee -a "$LOG" + fi + + # Move cloned theme to the themes directory + sudo mv "$theme_name" "/usr/share/sddm/themes/$theme_name" 2>&1 | tee -a "$LOG" + + # Set up new theme + echo -e "${NOTE} Setting up the login screen." + sddm_conf_dir=/etc/sddm.conf.d + [ ! -d "$sddm_conf_dir" ] && { printf "$CAT - $sddm_conf_dir not found, creating...\n"; sudo mkdir -p "$sddm_conf_dir" 2>&1 | tee -a "$LOG"; } + + # Configure theme settings + echo -e "[Theme]\nCurrent=$theme_name" | sudo tee "$sddm_conf_dir/theme.conf.user" >> "$LOG" + + # Replace current background from assets + sudo cp -r assets/sddm.png "/usr/share/sddm/themes/$theme_name/backgrounds/default" 2>&1 | tee -a "$LOG" + sudo sed -i 's|^wallpaper=".*"|wallpaper="backgrounds/default"|' "/usr/share/sddm/themes/$theme_name/theme.conf" 2>&1 | tee -a "$LOG" + + echo "${OK} - ${MAGENTA}Additional SDDM Theme${RESET} successfully installed." | tee -a "$LOG" + +else + + echo "${ERROR} - Failed to clone the sddm theme repository. Please check your internet connection." | tee -a "$LOG" >&2 +fi + + +printf "\n%.0s" {1..2} \ No newline at end of file diff --git a/install-scripts/swww.sh b/install-scripts/swww.sh index 51825f1..e08c891 100755 --- a/install-scripts/swww.sh +++ b/install-scripts/swww.sh @@ -2,6 +2,18 @@ # 💫 https://github.com/JaKooLit 💫 # # SWWW - Wallpaper Utility # +# Check if 'swww' is installed +if command -v swww &>/dev/null; then + SWWW_VERSION=$(swww -V | awk '{print $NF}') + if [[ "$SWWW_VERSION" == "0.9.5" ]]; then + echo -e "${OK} ${MAGENTA}swww v0.9.5${RESET} is already installed. Skipping installation." + exit 0 + fi +else + echo -e "${NOTE} ${MAGENTA}swww${RESET} is not installed. Proceeding with installation." +fi + + swww=( liblz4-dev ) @@ -24,31 +36,23 @@ LOG="Install-Logs/install-$(date +%d-%H%M%S)_swww.log" MLOG="install-$(date +%d-%H%M%S)_swww2.log" # Installation of swww compilation needed -printf "\n%s - Installing swww dependencies.... \n" "${NOTE}" +printf "\n%s - Installing ${SKY_BLUE}swww $swww_tag and dependencies${RESET} .... \n" "${NOTE}" for PKG1 in "${swww[@]}"; do - install_package "$PKG1" 2>&1 | tee -a "$LOG" - if [ $? -ne 0 ]; then - echo -e "\e[1A\e[K${ERROR} - $PKG1 Package installation failed, Please check the installation logs" - exit 1 - fi + install_package "$PKG1" "$LOG" done printf "\n%.0s" {1..2} -printf "${NOTE} Installing swww\n" - # Check if swww folder exists if [ -d "swww" ]; then - printf "${NOTE} swww folder exists. Pulling latest changes...\n" cd swww || exit 1 git pull origin main 2>&1 | tee -a "$MLOG" else - printf "${NOTE} Cloning swww repository...\n" if git clone --recursive -b $swww_tag https://github.com/LGFae/swww.git; then cd swww || exit 1 else - echo -e "${ERROR} Download failed for swww" 2>&1 | tee -a "$LOG" + echo -e "${ERROR} Download failed for ${YELLOW}swww $swww_tag${RESET}" 2>&1 | tee -a "$LOG" exit 1 fi fi @@ -88,4 +92,4 @@ sudo cp -r completions/_swww /usr/share/zsh/site-functions/_swww 2>&1 | tee -a " mv "$MLOG" ../Install-Logs/ || true cd - || exit 1 -clear +printf "\n%.0s" {1..2} diff --git a/install-scripts/thunar.sh b/install-scripts/thunar.sh index 2eeadf8..3e9d35d 100755 --- a/install-scripts/thunar.sh +++ b/install-scripts/thunar.sh @@ -12,6 +12,7 @@ thunar=( ) ## WARNING: DO NOT EDIT BEYOND THIS LINE IF YOU DON'T KNOW WHAT YOU ARE DOING! ## + # Determine the directory where the script is located SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" @@ -24,37 +25,23 @@ source "$(dirname "$(readlink -f "$0")")/Global_functions.sh" # Set the name of the log file to include the current date and time LOG="Install-Logs/install-$(date +%d-%H%M%S)_thunar.log" -printf "${NOTE} Installing Thunar Packages...\n" +# Thunar +printf "${NOTE} Installing ${SKY_BLUE}Thunar${RESET} Packages...\n\n" for THUNAR in "${thunar[@]}"; do - install_package "$THUNAR" 2>&1 | tee -a "$LOG" - [ $? -ne 0 ] && { echo -e "\e[1A\e[K${ERROR} - $THUNAR Package installation failed, Please check the installation logs"; exit 1; } + install_package "$THUNAR" "$LOG" done -printf "\n%.0s" {1..2} - -# Ask the user if they want to use Thunar as the default file manager -read -p "${CAT} Do you want to set Thunar as the default file manager? (y/n): " thunar_default - -if [[ "$thunar_default" == [Yy] ]]; then - # Setting Thunar as the default file manager - xdg-mime default thunar.desktop inode/directory - xdg-mime default thunar.desktop application/x-wayland-gnome-saved-search - echo "${OK} Thunar has been set as the default file manager." 2>&1 | tee -a "$LOG" -else - echo "${NOTE} you choose not to set Thunar as default file manager." 2>&1 | tee -a "$LOG" -fi - -printf "\n" +printf "\n%.0s" {1..1} # Check for existing configs and copy if does not exist for DIR1 in gtk-3.0 Thunar xfce4; do DIRPATH=~/.config/$DIR1 if [ -d "$DIRPATH" ]; then - echo -e "${NOTE} Config for $DIR1 found, no need to copy." 2>&1 | tee -a "$LOG" + echo -e "${NOTE} Config for ${MAGENTA}$DIR1${RESET} found, no need to copy." 2>&1 | tee -a "$LOG" else - echo -e "${NOTE} Config for $DIR1 not found, copying from assets." 2>&1 | tee -a "$LOG" - cp -r assets/$DIR1 ~/.config/ && echo "Copy $DIR1 completed!" || echo "Error: Failed to copy $DIR1 config files." 2>&1 | tee -a "$LOG" + echo -e "${NOTE} Config for ${YELLOW}$DIR1${RESET} not found, copying from assets." 2>&1 | tee -a "$LOG" + cp -r assets/$DIR1 ~/.config/ && echo "${OK} Copy $DIR1 completed!" || echo "${ERROR} Failed to copy $DIR1 config files." 2>&1 | tee -a "$LOG" fi done -clear +printf "\n%.0s" {1..2} diff --git a/install-scripts/thunar_default.sh b/install-scripts/thunar_default.sh new file mode 100755 index 0000000..576e76c --- /dev/null +++ b/install-scripts/thunar_default.sh @@ -0,0 +1,25 @@ +#!/bin/bash +# 💫 https://github.com/JaKooLit 💫 # +# Thunar-default # + + +## WARNING: DO NOT EDIT BEYOND THIS LINE IF YOU DON'T KNOW WHAT YOU ARE DOING! ## +# Determine the directory where the script is located +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" || exit 1 + +source "$(dirname "$(readlink -f "$0")")/Global_functions.sh" + +# Set the name of the log file to include the current date and time +LOG="Install-Logs/install-$(date +%d-%H%M%S)_thunar-default.log" + +printf "${INFO} Setting ${SKY_BLUE}Thunar${RESET} as default file manager...\n" + +xdg-mime default thunar.desktop inode/directory +xdg-mime default thunar.desktop application/x-wayland-gnome-saved-search +echo "${OK} ${MAGENTA}Thunar${RESET} is now set as the default file manager." | tee -a "$LOG" + +printf "\n%.0s" {1..2} diff --git a/install-scripts/wallust.sh b/install-scripts/wallust.sh index 873053b..83daf32 100755 --- a/install-scripts/wallust.sh +++ b/install-scripts/wallust.sh @@ -19,7 +19,7 @@ LOG="Install-Logs/install-$(date +%d-%H%M%S)_wallust.log" mkdir -p "$(dirname "$LOG")" # Install up-to-date Rust -echo "Installing most up to date Rust compiler..." +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" source "$HOME/.cargo/env" @@ -34,16 +34,16 @@ fi printf "\n%.0s" {1..2} # Install Wallust using Cargo -echo "Installing Wallust using Cargo..." | tee -a "$LOG" +echo "${INFO} Installing ${SKY_BLUE}Wallust using Cargo${RESET} ..." | tee -a "$LOG" if cargo install wallust 2>&1 | tee -a "$LOG" ; then - echo "Wallust installed successfully." | tee -a "$LOG" + echo "${OK} ${MAGENTA}Wallust${RESET} installed successfully." | tee -a "$LOG" # Move the newly compiled binary to /usr/local/bin echo "Moving Wallust binary to /usr/local/bin..." | tee -a "$LOG" sudo mv "$HOME/.cargo/bin/wallust" /usr/local/bin 2>&1 | tee -a "$LOG" else - echo "Error: Wallust installation failed. Check the log file $LOG for details." | tee -a "$LOG" + echo "${ERROR} Wallust installation failed. Check the log file $LOG for details." | tee -a "$LOG" exit 1 fi -clear +printf "\n%.0s" {1..2} diff --git a/install-scripts/xdph.sh b/install-scripts/xdph.sh index db505ba..c50af54 100755 --- a/install-scripts/xdph.sh +++ b/install-scripts/xdph.sh @@ -18,40 +18,10 @@ LOG="Install-Logs/install-$(date +%d-%H%M%S)_xdph.log" # Check if the file exists and remove it [[ -f "/usr/lib/xdg-desktop-portal-hyprland" ]] && sudo rm "/usr/lib/xdg-desktop-portal-hyprland" -printf "${NOTE} Installing xdg-desktop-portals...\n" -for portal in "${xdg[@]}"; do - install_package "$portal" 2>&1 | tee -a "$LOG" - [ $? -ne 0 ] && { echo -e "\e[1A\e[K${ERROR} - $portal Package installation failed, Please check the installation logs"; exit 1; } +# XDG-DESKTOP-PORTAL-HYPRLAND +printf "${NOTE} Installing ${SKY_BLUE}xdg-desktop-portal-hyprland${RESET}\n\n" +for xdgs in "${xdg[@]}"; do + install_package "$xdgs" "$LOG" done - -printf "\n\n${NOTE} Checking for other XDG-Desktop-Portal-Implementations...\n" -sleep 1 -printf "${NOTE} XDG-desktop-portal-KDE & GNOME (if installed) should be manually disabled or removed! I can't remove it... sorry...\n" - -while true; do - read -rp "${CAT} Would you like to try to remove other XDG-Desktop-Portal-Implementations? (y/n) " XDPH1 - echo - sleep 1 - - case $XDPH1 in - [Yy]) - printf "${NOTE} Clearing any other xdg-desktop-portal implementations...\n" - for portal in xdg-desktop-portal-wlr xdg-desktop-portal-lxqt; do - if dpkg -l | grep -q "$portal"; then - echo "Removing $portal..." - sudo apt-get remove -y "$portal" 2>&1 | tee -a "$LOG" - fi - done - break - ;; - [Nn]) - echo "No other XDG-implementations will be removed." 2>&1 | tee -a "$LOG" - break - ;; - *) - echo "Invalid input. Please enter 'y' for yes or 'n' for no." - ;; - esac -done - -clear + +printf "\n%.0s" {1..2} diff --git a/install-scripts/zsh.sh b/install-scripts/zsh.sh index cf9819e..028bd40 100755 --- a/install-scripts/zsh.sh +++ b/install-scripts/zsh.sh @@ -31,87 +31,53 @@ done # Installing zsh packages printf "${NOTE} Installing core zsh packages...${RESET}\n" for ZSHP in "${zsh[@]}"; do - install_package "$ZSHP" 2>&1 | tee -a "$LOG" - if [ $? -ne 0 ]; then - echo -e "\e[1A\e[K${ERROR} - $ZSHP Package installation failed, Please check the installation logs" - fi + install_package "$ZSHP" done -printf "\n%.0s" {1..2} - -## Optional Pokemon color scripts -while true; do - read -p "${CAT} Do you want to install Pokemon color scripts? (y/n): " choice - case "$choice" in - [Yy]*) - if [ -d "pokemon-colorscripts" ]; then - cd pokemon-colorscripts && git pull && sudo ./install.sh && cd .. - else - git clone https://gitlab.com/phoneybadger/pokemon-colorscripts.git && - cd pokemon-colorscripts && sudo ./install.sh && cd .. - fi - sed -i '/#pokemon-colorscripts --no-title -s -r/s/^#//' assets/.zshrc >> "$LOG" 2>&1 - - # commenting out fastfetch since pokemon was chosen to install - sed -i '/^fastfetch -c $HOME\/.config\/fastfetch\/config-compact.jsonc/s/^/#/' assets/.zshrc >> "$LOG" 2>&1 - - echo "${NOTE} Pokemon Installation process completed" 2>&1 | tee -a "$LOG" - break - ;; - [Nn]*) - echo "${MAGENTA} You chose not to install Pokemon Color Scripts." 2>&1 | tee -a "$LOG" - break - ;; - *) - echo "Please enter 'y' for yes or 'n' for no." 2>&1 | tee -a "$LOG" - ;; - esac -done - -printf "\n" +printf "\n%.0s" {1..1} # Install Oh My Zsh, plugins, and set zsh as default shell if command -v zsh >/dev/null; then - printf "${NOTE} Installing Oh My Zsh and plugins...\n" - if [ ! -d "$HOME/.oh-my-zsh" ]; then - sh -c "$(wget -O- https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" "" --unattended || true - else - echo "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 || true - else - echo "Directory zsh-autosuggestions already exists. Skipping cloning." 2>&1 | tee -a "$LOG" - fi + printf "${NOTE} Installing ${SKY_BLUE}Oh My Zsh and plugins${RESET} ...\n" + if [ ! -d "$HOME/.oh-my-zsh" ]; then + sh -c "$(wget -O- https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" "" --unattended || true + 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 || true + else + echo "${INFO} Directory zsh-autosuggestions already exists. Cloning Skipped." 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 || true - else - echo "Directory zsh-syntax-highlighting already exists. Skipping cloning." 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 + 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 || true + 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 - if [ -f "$HOME/.zprofile" ]; then - cp -b "$HOME/.zprofile" "$HOME/.zprofile-backup" || true - 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' ~/ - cp -r 'assets/.zshrc' ~/ - cp -r 'assets/.zprofile' ~/ - - printf "${NOTE} Changing default shell to zsh...\n" - - while ! chsh -s $(which zsh); do - echo "${ERROR} Authentication failed. Please enter the correct password." - sleep 1 - done - printf "\n" - printf "${NOTE} Shell changed successfully to zsh.\n" 2>&1 | tee -a "$LOG" + printf "${NOTE} Changing default shell to ${MAGENTA}zsh${RESET}..." + printf "\n%.0s" {1..2} + while ! chsh -s $(which zsh); do + echo "${ERROR} Authentication failed. Please enter the correct password." 2>&1 | tee -a "$LOG" + sleep 1 + done + printf "${INFO} Shell changed successfully to ${MAGENTA}zsh${RESET}" 2>&1 | tee -a "$LOG" fi -clear +printf "\n%.0s" {1..2} diff --git a/install-scripts/zsh_pokemon.sh b/install-scripts/zsh_pokemon.sh new file mode 100755 index 0000000..62c1b5e --- /dev/null +++ b/install-scripts/zsh_pokemon.sh @@ -0,0 +1,35 @@ +#!/bin/bash +# 💫 https://github.com/JaKooLit 💫 # +# pokemon-color-scripts# + +## WARNING: DO NOT EDIT BEYOND THIS LINE IF YOU DON'T KNOW WHAT YOU ARE DOING! ## +# Determine the directory where the script is located +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" || exit 1 + +source "$(dirname "$(readlink -f "$0")")/Global_functions.sh" + +# Set the name of the log file to include the current date and time +LOG="Install-Logs/install-$(date +%d-%H%M%S)_zsh_pokemon.log" + +printf "${INFO} Installing ${SKY_BLUE}Pokemon color scripts${RESET} ..." + +if [ -d "pokemon-colorscripts" ]; then + cd pokemon-colorscripts && git pull && sudo ./install.sh && cd .. + else + git clone --depth 1 https://gitlab.com/phoneybadger/pokemon-colorscripts.git && + cd pokemon-colorscripts && sudo ./install.sh && cd .. +fi + +# Check if ~/.zshrc exists +if [ -f "$HOME/.zshrc" ]; then + sed -i '/#pokemon-colorscripts --no-title -s -r/s/^#//' "$HOME/.zshrc" >> "$LOG" 2>&1 + sed -i '/^fastfetch -c $HOME\/.config\/fastfetch\/config-compact.jsonc/s/^/#/' "$HOME/.zshrc" >> "$LOG" 2>&11 +else + echo "$HOME/.zshrc not found. Cant enable ${YELLOW}Pokemon color scripts${RESET}" >> "$LOG" 2>&1 +fi + +printf "\n%.0s" {1..2} diff --git a/install.sh b/install.sh index 1c40bb6..3cc0e37 100755 --- a/install.sh +++ b/install.sh @@ -1,15 +1,32 @@ #!/bin/bash - # https://github.com/JaKooLit +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)" + + # Check if running as root. If root, script will exit if [[ $EUID -eq 0 ]]; then - echo "This script should not be executed as root! Exiting......." + echo "${ERROR} This script should ${WARNING}NOT${RESET} be executed as root!! Exiting......." + printf "\n%.0s" {1..2} exit 1 fi -clear - # Function to check if the system is Ubuntu is_ubuntu() { # Check for 'Ubuntu' in /etc/os-release @@ -21,41 +38,58 @@ is_ubuntu() { # Check if the system is Ubuntu if is_ubuntu; then - echo "This script is NOT intended for Ubuntu / Ubuntu Based. Refer to README for the correct link for Ubuntu-Hyprland project." + 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} " exit 1 fi -clear +# Check if --preset argument is provided +if [[ "$1" == "--preset" ]]; then + + # nvidia + if [[ "$2" == "--nvidia" ]]; then + sed -i 's/^nvidia=".*"/nvidia="Y"/' preset.sh + fi + + source ./preset.sh +fi -# ASCII art -printf "\n%.0s" {1..3} -echo " | _. |/ _ _ | o _|_ " -echo " \_| (_| o |\ (_) (_) |_ | |_ " -printf "\n%.0s" {1..2} +printf "\n%.0s" {1..2} +echo -e "\e[35m + ╦╔═┌─┐┌─┐╦ ╦ ╦┬ ┬┌─┐┬─┐┬ ┌─┐┌┐┌┌┬┐ + ╠╩╗│ ││ │║ ╠═╣└┬┘├─┘├┬┘│ ├─┤│││ ││ 2025 + ╩ ╩└─┘└─┘╩═╝ ╩ ╩ ┴ ┴ ┴└─┴─┘┴ ┴┘└┘─┴┘ +\e[0m" +printf "\n%.0s" {1..1} # Welcome message -echo "$(tput setaf 6)Welcome to JaKooLit's Debian Trixie/SID Hyprland Install Script!$(tput sgr0)" +echo "${SKY_BLUE}Welcome to JaKooLit's Debian Trixie/SID Hyprland (2025) Install Script!${RESET}" echo -echo "$(tput setaf 166)ATTENTION: Run a full system update and reboot first!! (Highly Recommended)$(tput sgr0)" +echo "${WARNING}ATTENTION: Run a full system update and Reboot first!! (Highly Recommended) ${RESET}" echo -echo "$(tput setaf 3)NOTE: You will be required to answer some questions during the installation!$(tput sgr0)" +echo "${YELLOW}NOTE: You will be required to answer some questions during the installation! ${RESET}" echo -echo "$(tput setaf 3)NOTE: If you are installing on a VM, ensure to enable 3D acceleration; otherwise, Hyprland won't start!$(tput sgr0)" +echo "${YELLOW}NOTE: If you are installing on a VM, ensure to enable 3D acceleration else Hyprland wont start! ${RESET}" echo # Prompt user to proceed read -p "$(tput setaf 6)Would you like to proceed? (y/n): $(tput sgr0)" proceed -if [[ "$proceed" != "y" ]]; then - echo "Installation aborted." +if [ "$proceed" != "y" ]; then + printf "\n%.0s" {1..2} + echo "${INFO} Installation aborted. ${SKY_BLUE}No changes in your system.${RESET} ${YELLOW}Goodbye!${RESET}" + printf "\n%.0s" {1..2} exit 1 fi +printf "\n%.0s" {1..1} -read -p "$(tput setaf 6)Have you edited your /etc/apt/sources.list? [Very Important] (y/n): $(tput sgr0)" proceed2 +echo "${NOTE} Ensure to uncomment the ${YELLOW}deb-src's${RESET} in ${YELLOW}/etc/apt/sources.list${RESET}" +read -p "${CAT} ${YELLOW}Very Important else script will likely fail${RESET}. OK to proceed? (y/n): ${RESET}" proceed2 if [ "$proceed2" != "y" ]; then - echo "Installation aborted Kindly edit your sources.list first. Refer to readme." + printf "\n%.0s" {1..2} + echo "Installation aborted! Kindly edit your ${YELLOW}sources.list${RESET} first. Refer to readme." + printf "\n%.0s" {1..2} exit 1 fi @@ -64,16 +98,14 @@ if [ ! -d Install-Logs ]; then mkdir Install-Logs fi -# 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)" -WARN="$(tput setaf 1)[WARN]$(tput sgr0)" -CAT="$(tput setaf 6)[ACTION]$(tput sgr0)" -MAGENTA=$(tput setaf 5) -WARNING=$(tput setaf 1) -YELLOW=$(tput setaf 3) -RESET=$(tput sgr0) +printf "\n%.0s" {1..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..." + sudo apt install -y pciutils + printf "\n%.0s" {1..1} +fi # Function to colorize prompts colorize_prompt() { @@ -85,26 +117,21 @@ colorize_prompt() { # Set the name of the log file to include the current date and time LOG="install-$(date +%d-%H%M%S).log" -# Initialize variables to store user responses -bluetooth="" -dots="" -gtk_themes="" -nvidia="" -nwg="" -rog="" -sddm="" -thunar="" -xdph="" -zsh="" - -# Export PKG_CONFIG_PATH for libinput -export PKG_CONFIG_PATH=/usr/lib/x86_64-linux-gnu/pkgconfig - # Define the directory where your scripts are located script_directory=install-scripts # Function to ask a yes/no question and set the response in a variable ask_yes_no() { + if [[ ! -z "${!2}" ]]; then + echo "$(colorize_prompt "$CAT" "$1 (Preset): ${!2}")" + if [[ "${!2}" = [Yy] ]]; then + return 0 + else + return 1 + fi + else + eval "$2=''" + fi while true; do read -p "$(colorize_prompt "$CAT" "$1 (y/n): ")" choice case "$choice" in @@ -138,7 +165,7 @@ execute_script() { if [ -f "$script_path" ]; then chmod +x "$script_path" if [ -x "$script_path" ]; then - "$script_path" + env USE_PRESET=$use_preset "$script_path" else echo "Failed to make script '$script' executable." fi @@ -148,56 +175,81 @@ execute_script() { } # Collect user responses to all questions -printf "\n" -ask_yes_no "-Do you have any nvidia gpu in your system?" nvidia -printf "\n" -ask_yes_no "-Install GTK themes (required for Dark/Light function)?" gtk_themes -printf "\n" -ask_yes_no "-Do you want to configure Bluetooth?" bluetooth -printf "\n" -ask_yes_no "-Do you want to install Thunar file manager?" thunar -printf "\n" -ask_yes_no "-Install AGS (aylur's gtk shell) v1 for Desktop Like Overview?" ags -printf "\n" -ask_yes_no "-Install & configure SDDM log-in Manager plus (OPTIONAL) SDDM Theme?" sddm -printf "\n" -ask_yes_no "-Install XDG-DESKTOP-PORTAL-HYPRLAND? (For proper Screen Share ie OBS)" xdph -printf "\n" -ask_yes_no "-Install zsh & oh-my-zsh plus (OPTIONAL) pokemon-colorscripts for tty?" zsh -printf "\n" +# Check if nvidia is present +if lspci | grep -i "nvidia" &> /dev/null; then + printf "\n" + printf "${INFO} ${YELLOW}NVIDIA GPU${RESET} detected in your system \n" + printf "${NOTE} Script will install ${YELLOW}nvidia-dkms nvidia-utils and nvidia-settings${RESET} \n" + ask_yes_no "-Do you want script to configure ${YELLOW}NVIDIA${RESET} for you?" nvidia +fi -# 14 Sep 2024, now in Debian repo -#ask_yes_no "-Install nwg-look? (a GTK Theming app - lxappearance-like) WARN! This Package Takes long time to build!" nwg -#printf "\n" - -ask_yes_no "-Installing on Asus ROG Laptops?" rog printf "\n" -ask_yes_no "-Do you want to download and install pre-configured Hyprland-dotfiles?" dots +ask_yes_no "-Install ${YELLOW}GTK themes${RESET} (required for Dark/Light function)?" gtk_themes + printf "\n" +ask_yes_no "-Do you want to configure ${YELLOW}Bluetooth${RESET}?" bluetooth -# Ensuring all in the scripts folder are made executable -chmod +x install-scripts/* +printf "\n" +ask_yes_no "-Do you want to install ${YELLOW}Thunar file manager${RESET}?" thunar -printf "\n%.0s" {1..3} +if [[ "$thunar" == "Y" ]]; then + ask_yes_no "-Set ${YELLOW}Thunar${RESET} as the default file manager?" thunar_choice +fi + +# Input group +printf "\n" +if ! groups "$(whoami)" | grep -q '\binput\b'; then + printf "${NOTE} adding to ${YELLOW}input${RESET} group might be necessary for ${YELLOW}waybar keyboard-state functionality${RESET} \n" + ask_yes_no "-Would you like to be added to the ${YELLOW}input${RESET} group?" input_group +fi + +printf "\n" +printf "${NOTE} ${YELLOW}AGS Desktop Overview DEMO link${RESET} on README\n" +ask_yes_no "-Install ${YELLOW}AGS (aylur's GTK shell) v1${RESET} for Desktop-Like Overview?" ags + +printf "\n" +ask_yes_no "-Install & configure ${YELLOW}SDDM${RESET} as login manager?" sddm # check if any known login managers are active when users choose to install sddm -if [ "$sddm" == "Y" ]; then +if [ "$sddm" == "y" ] || [ "$sddm" == "Y" ]; then # List of services to check services=("gdm.service" "gdm3.service" "lightdm.service" "xdm.service" "lxdm.service") # Loop through each service for svc in "${services[@]}"; do if systemctl is-active --quiet "$svc"; then - echo "${ERROR} $svc is active. Please stop or disable it first or do not choose SDDM to install." + echo "${ERROR} ${MAGENTA}$svc${RESET} is active. stop or disable it first or ${YELLOW}DO NOT choose SDDM${RESET} to install." echo "${NOTE} If you have GDM, no need to install SDDM. GDM will work fine as Login Manager for Hyprland." - printf "\n%.0s" {1..3} - + printf "\n%.0s" {1..2} exit 1 fi done fi +if [[ "$sddm" == "Y" ]]; then + ask_yes_no "-Download and Install ${YELLOW}SDDM Theme?${RESET} " sddm_theme +fi +printf "\n" +ask_yes_no "-Install ${YELLOW}XDG-DESKTOP-PORTAL-HYPRLAND?${RESET} (For proper Screen Share, e.g., OBS)" xdph +printf "\n" +ask_yes_no "-Install ${YELLOW}zsh${RESET} with ${YELLOW}oh-my-zsh?${RESET}" zsh + +if [[ "$zsh" == "Y" ]]; then + ask_yes_no "-Add ${YELLOW}Pokemon color scripts?${RESET} in your terminal?" pokemon_choice +fi + +printf "\n" +ask_yes_no "-Installing on ${YELLOW}Asus ROG laptops?${RESET}" rog + +printf "\n" +ask_yes_no "-Do you want to add pre-configured ${YELLOW}KooL's Hyprland dotfiles?${RESET}" dots + +printf "\n" + +# Ensuring all in the scripts folder are made executable +chmod +x install-scripts/* sleep 1 + sudo apt update # execute pre clean up @@ -236,6 +288,9 @@ fi if [ "$thunar" == "Y" ]; then execute_script "thunar.sh" fi +if [ "$thunar_choice" == "Y" ]; then + execute_script "thunar_default.sh" +fi if [ "$ags" == "Y" ]; then execute_script "ags.sh" @@ -244,25 +299,30 @@ fi if [ "$sddm" == "Y" ]; then execute_script "sddm.sh" fi +if [ "$sddm_theme" == "Y" ]; then + execute_script "sddm_theme.sh" +fi if [ "$xdph" == "Y" ]; then execute_script "xdph.sh" fi + if [ "$zsh" == "Y" ]; then execute_script "zsh.sh" fi +if [ "$pokemon_choice" == "Y" ]; then + execute_script "zsh_pokemon.sh" +fi -#if [ "$nwg" == "Y" ]; then -# execute_script "nwg-look.sh" -#fi +if [ "$input_group" == "Y" ]; then + execute_script "InputGroup.sh" +fi if [ "$rog" == "Y" ]; then execute_script "rog.sh" fi -execute_script "InputGroup.sh" - if [ "$dots" == "Y" ]; then execute_script "dotfiles-branch.sh" fi @@ -290,25 +350,42 @@ printf "\n%.0s" {1..1} # Check if either hyprland or hyprland-git is installed if dpkg -l | grep -qw hyprland; then - 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 'All essential packages are installed.'\n" + 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${NOTE} You can start Hyprland by typing 'Hyprland' (IF SDDM is not installed) (note the capital H!).\n" - printf "\n${NOTE} However, it is highly recommended to reboot your system.\n\n" + printf "\n%.0s" {1..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} + + 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} However, it is ${YELLOW}highly recommended to reboot${RESET} your system.\n\n" - # Prompt user to reboot read -rp "${CAT} Would you like to reboot now? (y/n): " HYP - # Check if the user answered 'y' or 'Y' - if [[ "$HYP" =~ ^[Yy]$ ]]; then - if [[ "$nvidia" == "Y" ]]; then - echo "${NOTE} NVIDIA GPU detected. Rebooting the system..." + HYP=$(echo "$HYP" | tr '[:upper:]' '[:lower:]') + + if [[ "$HYP" == "y" || "$HYP" == "yes" ]]; then + echo "${INFO} Rebooting now..." + systemctl reboot + elif [[ "$HYP" == "n" || "$HYP" == "no" ]]; then + echo "${OK} You choose NOT to reboot" + printf "\n%.0s" {1..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} fi - systemctl reboot + else + echo "${WARN} Invalid response. Please answer with 'y' or 'n'. Exiting." + exit 1 fi else # Print error message if neither package is installed - printf "\n${WARN} Hyprland failed to install. Please check 00_CHECK-time_installed.log and other files Install-Logs/ directory...\n\n" + 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} exit 1 fi +printf "\n%.0s" {1..2} + diff --git a/preset.sh b/preset.sh new file mode 100644 index 0000000..9da3633 --- /dev/null +++ b/preset.sh @@ -0,0 +1,49 @@ +# 💫 https://github.com/JaKooLit 💫 # + +## -- Make sure you use the right answer or install script will fail ### +# Use only Y for Yes and N for No . If you put other letter, the script will fail + + +###-Would you like script to Configure NVIDIA for you? +nvidia="N" + +###-Install GTK themes (required for Dark/Light function)? +gtk_themes="Y" + +###-Do you want to configure Bluetooth? +bluetooth="Y" + +###-Do you want to install Thunar file manager? +thunar="Y" +### Do you want to set Thunar as the default file manager? +thunar_choice="Y" + + +### Adding user to the 'input' group might be necessary for waybar keyboard-state functionality +input_group="Y" + +### Desktop overview Demo Link in README +### Install AGS (aylur's GTK shell) v1 for Desktop-Like Overview?" +ags="Y" + +###-Install & configure SDDM log-in Manager +sddm="Y" +### install and download SDDM themes +sddm_theme="Y" + +###-Install XDG-DESKTOP-PORTAL-HYPRLAND? (For proper Screen Share ie OBS) +xdph="Y" + +### Shell extension. Bash alternative +###-Install zsh, oh-my-zsh +zsh="Y" + +### add Pokemon color scripts to terminal +pokemon_choice="Y" + +### This will install ASUSCTL & SUPERGFXCTL +###-Installing on Asus ROG Laptops? +rog="N" + +###-Do you want to add pre-configured KooL's Hyprland dotfiles? +dots="Y"