Compare commits

...

22 Commits

Author SHA1 Message Date
JaKooLit
6cdf38afb4 updated debian dependencies 2025-03-12 18:54:55 +09:00
JaKooLit
bbcb3b94da updated hypridle.sh 2025-03-12 18:35:27 +09:00
Ja.KooLit
304cda4306
Merge pull request #189 from JaKooLit/development
Development to main
2025-03-12 11:54:04 +09:00
JaKooLit
606fdb86bf updated readme 2025-03-12 10:54:59 +09:00
JaKooLit
63bb7f38be updated README 2025-03-12 10:26:38 +09:00
Ja.KooLit
f06584a692
Merge pull request #188 from JaKooLit/main
main to development
2025-03-12 01:27:40 +09:00
JaKooLit
c93c498454 added manual building of hyprlang which ultimately fixes building of hypridle 2025-03-12 00:07:17 +09:00
JaKooLit
f023d5e9b8 updated uninstall.sh 2025-03-11 23:30:41 +09:00
JaKooLit
ea038dee51 updated uninstall.sh to have a wildcards for removing dirs from ~/.config. This will also remove the backups 2025-03-11 19:59:45 +09:00
JaKooLit
b55e2be928 remove unzip from list of packages to unintstall 2025-03-11 19:53:06 +09:00
JaKooLit
2fbe7d0065 updated uninstall.sh 2025-03-11 19:47:43 +09:00
JaKooLit
f66cbbf3ca updated uninstall.sh 2025-03-11 19:33:18 +09:00
JaKooLit
9ce8e591fe removed from uninstall.sh
gnome-system-monitor, loupe, xdg-portal-gtk. It seems that gnome is also being uninstalled by this
2025-03-11 18:13:05 +09:00
JaKooLit
4139c60b42 remove gnome-system-monitor as it cause gnome to be removed 2025-03-11 17:53:41 +09:00
JaKooLit
a15c816159 updated uninstall.sh 2025-03-11 17:36:15 +09:00
JaKooLit
ee04881461 some changes 2025-03-11 17:25:41 +09:00
JaKooLit
dfe4bb2f81 minor sddm.sh update 2025-03-11 17:19:44 +09:00
JaKooLit
0e5c3be377 updated sddm.sh 2025-03-11 17:17:26 +09:00
JaKooLit
1555d2a367 updated install.sh 2025-03-11 17:13:34 +09:00
JaKooLit
de221f3376 update readme for uninstall.sh script 2025-03-11 14:54:03 +09:00
JaKooLit
9dc1f17046 dropped pyprland 2025-03-10 14:21:05 +09:00
Ja.KooLit
63f9086268
Merge pull request #186 from JaKooLit/main
main to development
2025-03-10 14:11:35 +09:00
8 changed files with 357 additions and 62 deletions

View File

@ -1,5 +1,11 @@
## CHANGELOGS
## 11 March 2025
- Added uninstall script
## 10 March 2025
- Dropped pyprland in favor of hyprland built in tool for a drop down like terminal and Desktop magnifier
## 06 March 2025
- Switched to whiptail version for Y & N questions
- switched eza to lsd

View File

@ -63,10 +63,7 @@ https://github.com/user-attachments/assets/49bc12b2-abaf-45de-a21c-67aacd9bb872
> [!IMPORTANT]
> install a backup tool like `snapper` or `timeshift`. and Backup your system before installing hyprland using this script. This script does NOT include uninstallation of packages
> [!NOTE]
> Main reason why I have not included an uninstallation script is simple. Some packages maybe already installed on your system by default. If I create an uninstall script with packages that I have set to install, you may end up a unrecoverable system.
> install a backup tool like `snapper` or `timeshift`. and Backup your system before installing hyprland using this script (HIGHLY RECOMMENDED).
> [!CAUTION]
> Download this script on a directory where you have write permissions. ie. HOME. Or any directory within your home directory. Else script will fail
@ -82,19 +79,8 @@ sudo nano /etc/apt/sources.list
- delete # on the lines with 'deb-src'
- ensure to allow to install non-free drivers especially for users with NVIDIA gpus. You can also install non-free drivers if required. Edit install-scripts/nvidia.sh and change the nvidia stuff's if required
- If you have login Manager already like GDM (gnome login manager), I highly advice not to install SDDM. But if you decide to install SDDM, see here [`Issue 2 - SDDM`](https://github.com/JaKooLit/Debian-Hyprland/issues/2)
> [!IMPORTANT]
> If you are using Gnome already, DO NOT install the SDDM. The GDM Login Manager works well with Hyprland. For some reason, during installation, you will be asked which login manager you wanted to use. But during my test, nothing happened.
> [!WARNING]
> If you have GDM already as log-in manager, DO NOT install SDDM
> You will encounter issues. See [`Issue 2 - SDDM`](https://github.com/JaKooLit/Debian-Hyprland/issues/2)
### 🪧🪧🪧 ANNOUNCEMENT 🪧🪧🪧
- This Repo does not contain Hyprland Dots or configs! Pre-configured Dotfiles are on [`Hyprland-Dots`](https://github.com/JaKooLit/Hyprland-Dots) . During installation, if you opt to copy pre-configured dots, it will be downloaded from that centralized repo.
- This Repo does not contain Hyprland Dots or configs! Pre-configured Dotfiles are on [`Hyprland-Dots`](https://github.com/JaKooLit/Hyprland-Dots/tree/Deb-Untu-Dots) . During installation, if you opt to copy pre-configured dots, it will be downloaded from that centralized repo.
- Hyprland-Dots use are constantly evolving / improving. you can check CHANGELOGS here [`Hyprland-Dots-Changelogs`](https://github.com/JaKooLit/Hyprland-Dots/wiki/Changelogs)
- Since the Hyprland-Dots are evolving, some of the screenshots maybe old
@ -128,11 +114,11 @@ sudo apt install --no-install-recommends -y sddm
- by default it is installing the latest and newest nvidia drivers. If you have an older nvidia-gpu (GTX 800 series and older), check out nvidia-debian website [`LINK`](https://wiki.debian.org/NvidiaGraphicsDrivers) and edit nvidia.sh in install-scripts directory to install proper gpu driver
> [!IMPORTANT]
> If you want to use nouveau driver, choose N when asked if you have nvidia gpu. This is because the nvidia installer part, it will blacklist nouveau. Hyprland will still be installed but it will skip blacklisting nouveau.
> If you want to use nouveau driver, Dont select Nvidia in the options. This is because the nvidia installer part, it will blacklist nouveau. Hyprland will still be installed but it will skip blacklisting nouveau.
> [!IMPORTANT]
> Another important note for nvidia owners
> If you have nvidia, by default debian is installing nouveau or open-source nvidia driver. If you want to keep the default nvidia driver installed by Debian, choose N on the if you have nvidia question. Or else you will encounter same issue as SDDM above.
> If you have nvidia, by default debian is installing nouveau or open-source nvidia driver. If you want to keep the default nvidia driver installed by Debian, Dont select Nvidia in the options.
## ✨ Auto clone and install
- you can use this command to automatically clone the installer and ran the script for you
@ -140,6 +126,10 @@ sudo apt install --no-install-recommends -y sddm
```bash
sh <(curl -L https://raw.githubusercontent.com/JaKooLit/Debian-Hyprland/main/auto-install.sh)
```
- if you are using say fish or a non-POSIX compliant
```bash
curl -sL https://raw.githubusercontent.com/JaKooLit/Debian-Hyprland/main/auto-install.sh | bash
```
## ✨ to use this script
> clone this repo (latest commit only) by using git. Change directory, make executable and run the script
@ -150,6 +140,11 @@ chmod +x install.sh
./install.sh
```
### 💥 💥 UNINSTALL SCRIPT / Removal of Config Files
- 11 March 2025, due to popular request, created a guided `uninstall.sh` script. USE this with caution as it may render your system unstable.
- I will not be responsible if your system breaks
- The best still to revert to previous state of your system is via timeshift of snapper
#### ✨ for ZSH and OH-MY-ZSH installation
> installer should auto change your default shell to zsh. However, if it does not, do this
```bash
@ -191,10 +186,6 @@ source ~/.zshrc
- To update your KooL's Dots follow this [WIKI](https://github.com/JaKooLit/Hyprland-Dots/wiki#--debian-and-ubuntu-hyprland-dots-updating-notes-)
#### ❗ some known issues on this Installer
- some users reported that they have to install some packages. It is in the install-scripts/force-install.sh
- At this time the packages force to install are the following `imagemagick`
> [!NOTE]
> This script does not setup audio. Kindly set up. If you have not, I recommend pipewire. `sudo apt install -y pipewire`
@ -277,7 +268,6 @@ cd ~/Debian-Hyprland
- [ ] sddm blackscreen when log-out
- [ ] Installing SDDM if or any other Login Manager installed. See [`Issue 2 - SDDM`](https://github.com/JaKooLit/Debian-Hyprland/issues/2)
- [ ] network is down or become unmanaged [`This`](https://askubuntu.com/questions/71159/network-manager-says-device-not-managed) might help
- [ ] pyprland is a hit and miss. Drop down not working, zooming is hit and miss
#### 📒 Final Notes

View File

@ -1,6 +1,8 @@
#!/bin/bash
# 💫 https://github.com/JaKooLit 💫 #
# main dependencies #
# 22 Aug 2024 - NOTE will trim this more down
# packages neeeded
dependencies=(
@ -16,31 +18,8 @@ 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
@ -52,12 +31,26 @@ dependencies=(
python3-pyquery
qt6-base-dev
spirv-tools
#vulkan-validationlayers
vulkan-validationlayers
vulkan-utility-libraries-dev
wayland-protocols
xdg-desktop-portal
xwayland
)
# hyprland dependencies
hyprland_dep=(
bc
binutils
libc6
libcairo2
libdisplay-info2
libdrm2
libhyprcursor-dev
libhyprlang-dev
libhyprutils-dev
libpam0g-dev
hyprcursor-util
)
build_dep=(
@ -83,9 +76,8 @@ LOG="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}"
for PKG in "${dependencies[@]}"; do
install_package "$PKG" "$LOG"
for PKG1 in "${dependencies[@]}" "${hyprland_dep[@]}"; do
install_package "$PKG1" "$LOG"
done
printf "\n%.0s" {1..1}

View File

@ -4,9 +4,6 @@
idle=(
libsdbus-c++-dev
libsdbus-c++2
libsdbus-c++-bin
libhyprlang-dev
)
#specific branch or release

52
install-scripts/hyprlang.sh Executable file
View File

@ -0,0 +1,52 @@
#!/bin/bash
# 💫 https://github.com/JaKooLit 💫 #
# hyplang #
#specific branch or release
lang_tag="v0.5.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 )"
# 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
# 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"
# Installation of dependencies
printf "\n%s - Installing ${YELLOW}hyprlang dependencies${RESET} .... \n" "${INFO}"
# Check if hyprlang folder 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
printf "\n%.0s" {1..2}

View File

@ -52,18 +52,20 @@ done
# Check if other login managers are installed and disable their service before enabling SDDM
for login_manager in "${login[@]}"; do
if sudo apt list --installed "$login_manager" > /dev/null; then
if dpkg -l | grep -q "^ii $login_manager"; then
echo "Disabling $login_manager..."
sudo systemctl disable "$login_manager.service" >> "$LOG" 2>&1
sudo systemctl disable "$login_manager.service" >> "$LOG" 2>&1 || echo "Failed to disable $login_manager" >> "$LOG"
echo "$login_manager disabled."
fi
done
# Double check with systemctl
for manager in "${login[@]}"; do
if systemctl is-active --quiet "$manager" > /dev/null 2>&1; then
echo "$manager is active, disabling it..." >> "$LOG" 2>&1
sudo systemctl disable "$manager" --now >> "$LOG" 2>&1
if systemctl is-active --quiet "$manager.service" > /dev/null 2>&1; then
echo "$manager.service is active, disabling it..." >> "$LOG" 2>&1
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
done
@ -77,4 +79,3 @@ wayland_sessions_dir=/usr/share/wayland-sessions
sudo cp assets/hyprland.desktop "$wayland_sessions_dir/" 2>&1 | tee -a "$LOG"
printf "\n%.0s" {1..2}

View File

@ -322,6 +322,8 @@ execute_script "rofi-wayland.sh"
sleep 1
execute_script "hyprlock.sh"
sleep 1
execute_script "hyprlang.sh"
sleep 1
execute_script "hypridle.sh"
#execute_script "imagemagick.sh" #this is for compiling from source. 07 Sep 2024

255
uninstall.sh Executable file
View File

@ -0,0 +1,255 @@
#!/bin/bash
# 💫 https://github.com/JaKooLit 💫 #
# KooL Debian-Hyprland uninstall script #
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)"
printf "\n%.0s" {1..2}
echo -e "\e[35m
╦╔═┌─┐┌─┐╦ ╦ ╦┬ ┬┌─┐┬─┐┬ ┌─┐┌┐┌┌┬┐
╠╩╗│ ││ │║ ╠═╣└┬┘├─┘├┬┘│ ├─┤│││ ││ UNINSTALL
╩ ╩└─┘└─┘╩═╝ ╩ ╩ ┴ ┴ ┴└─┴─┘┴ ┴┘└┘─┴┘ Debian
\e[0m"
printf "\n%.0s" {1..1}
# Show welcome message using whiptail with Yes/No options
whiptail --title "Debian-Hyprland KooL Dots Uninstall Script" --yesno \
"Hello! This script will uninstall KooL Hyprland packages and configs.
You can choose packages and directories you want to remove.
NOTE: This will remove configs from ~/.config
WARNING: After uninstallation, your system may become unstable.
Shall we Proceed?" 20 80
if [ $? -eq 1 ]; then
echo "$INFO uninstall process canceled."
exit 0
fi
# Function to remove selected packages on Debian/Ubuntu
remove_packages() {
local selected_packages_file=$1
while read -r package; do
# Check if the package is installed using dpkg (apt's underlying tool)
if dpkg -l | grep -q "^ii $package "; then
echo "Removing package: $package"
if ! sudo apt remove -y "$package"; then
echo "$ERROR Failed to remove package: $package"
else
echo "$OK Successfully removed package: $package"
fi
else
echo "$INFO Package ${YELLOW}$package${RESET} not found. Skipping."
fi
done < "$selected_packages_file"
}
# Function to remove selected directories
remove_directories() {
local selected_dirs_file=$1
while read -r dir; do
pattern="$HOME/.config/$dir*"
# Loop through directories matching the pattern
for dir_to_remove in $pattern; do
if [ -d "$dir_to_remove" ]; then
echo "Removing directory: $dir_to_remove"
if ! rm -rf "$dir_to_remove"; then
echo "$ERROR Failed to remove directory: $dir_to_remove"
else
echo "$OK Successfully removed directory: $dir_to_remove"
fi
else
echo "$INFO Directory ${YELLOW}$dir_to_remove${RESET} not found. Skipping."
fi
done
done < "$selected_dirs_file"
}
# Define the list of packages to choose from (with options_command tags)
packages=(
"btop" "resource monitor" "off"
"brightnessctl" "brightnessctl" "off"
"cava" "Cross-platform Audio Visualizer" "off"
"cliphist" "clipboard manager" "off"
"fastfetch" "fastfetch" "off"
"ffmpegthumbnailer" "FFmpeg Thumbnailer" "off"
"grim" "screenshot tool" "off"
"polkit-kde-agent-1" "polkit agent" "off"
"imagemagick" "Image manipulation tool" "off"
"kitty" "kitty-terminal" "off"
"qt5-style-kvantum" "QT apps theming" "off"
"qt5-style-kvantum-themes" "QT apps theming" "off"
"mousepad" "simple text editor" "off"
"mpv" "multi-media player" "off"
"mpv-mpris" "mpv-plugin" "off"
"nvtop" "gpu resource monitor" "off"
"nwg-displays" "display monitor configuration app" "off"
"nwg-look" "gtk settings app" "off"
"pamixer" "pamixer" "off"
"pavucontrol" "pavucontrol" "off"
"playerctl" "playerctl" "off"
"qalculate-gtk" "calculater - QT" "off"
"qt5ct" "qt5ct" "off"
"qt6-svg" "qt6-svg" "off"
"qt6ct" "qt6ct" "off"
"slurp" "screenshot tool" "off"
"swappy" "screenshot tool" "off"
"sway-notification-center" "notification agent" "off"
"swww" "wallpaper engine" "off"
"thunar" "File Manager" "off"
"thunar-archive-plugin" "Archive Plugin" "off"
"thunar-volman" "Volume Management" "off"
"tumbler" "Thumbnail Service" "off"
"wallust" "color pallete generator" "off"
"waybar" "wayland bar" "off"
"wl-clipboard" "clipboard manager" "off"
"wlogout" "logout menu" "off"
"xdg-desktop-portal-hyprland" "hyprland file picker" "off"
"yad" "dialog box" "off"
"yt-dlp" "video downloader" "off"
"xarchiver" "Archive Manager" "off"
"hyprland" "hyprland main package" "off"
)
# Define the list of directories to choose from (with options_command tags)
directories=(
"ags" "AGS desktop overview configuration" "off"
"btop" "btop configuration" "off"
"cava" "cava configuration" "off"
"fastfetch" "fastfetch configuration" "off"
"hypr" "main hyprland configuration" "off"
"kitty" "kitty terminal configuration" "off"
"Kvantum" "Kvantum-manager configuration" "off"
"qt5ct" "qt5ct configuration" "off"
"qt6ct" "qt6ct configuration" "off"
"rofi" "rofi configuration" "off"
"swappy" "swappy (screenshot tool) configuration" "off"
"swaync" "swaync (notification agent) configuration" "off"
"Thunar" "Thunar file manager configuration" "off"
"wallust" "wallust (color pallete) configuration" "off"
"waybar" "waybar configuration" "off"
"wlogout" "wlogout (logout menu) configuration" "off"
)
# Loop for package selection until user selects something or cancels
while true; do
package_choices=$(whiptail --title "Select Packages to Uninstall" --checklist \
"Select the packages you want to remove\nNOTE: 'SPACEBAR' to select & 'TAB' key to change selection" 35 90 25 \
"${packages[@]}" 3>&1 1>&2 2>&3)
# Check if the user canceled the operation
if [ $? -eq 1 ]; then
echo "$INFO uninstall process canceled."
exit 0
fi
# If no packages are selected, ask again
if [[ -z "$package_choices" ]]; then
echo "$NOTE No packages selected. Please select at least one package."
else
echo "$package_choices" | tr -d '"' | tr ' ' '\n' > /tmp/selected_packages.txt
echo "Packages to remove: $package_choices"
break
fi
done
# Loop for directory selection until user selects something or cancels
while true; do
dir_choices=$(whiptail --title "Select Directories to Remove" --checklist \
"Select the directories you want to remove\nNOTE: This will remove configs from ~/.config\n\nNOTE: 'SPACEBAR' to select & 'TAB' key to change selection" 28 90 18 \
"${directories[@]}" 3>&1 1>&2 2>&3)
# Check if the user canceled the operation
if [ $? -eq 1 ]; then
echo "$INFO uninstall process canceled."
exit 0
fi
# If no directories are selected, ask again
if [[ -z "$dir_choices" ]]; then
echo "$NOTE No directories selected. Please select at least one directory."
else
# Save each selected directory to a new line in the temporary file
echo "$dir_choices" | tr -d '"' | tr ' ' '\n' > /tmp/selected_directories.txt
echo "Directories to remove: $dir_choices"
break
fi
done
# First confirmation - Warning about potential instability
if ! whiptail --title "Warning" --yesno \
"Warning: Removing these packages and directories may cause your system to become unstable and you may not be able to recover it.\n\nAre you sure you want to proceed?" \
10 80; then
echo "$INFO uninstall process canceled."
exit 0
fi
# Second confirmation - Final confirmation to proceed
if ! whiptail --title "Final Confirmation" --yesno \
"Are you absolutely sure you want to remove the selected packages and directories?\n\nWARNING! This action is irreversible." \
10 80; then
echo "$INFO uninstall process canceled."
exit 0
fi
printf "\n%.0s" {1..1}
printf "\n%s${SKY_BLUE}Attempting to remove selected packages${RESET}\n" "${NOTE}"
MAX_ATTEMPTS=2
ATTEMPT=0
while [ $ATTEMPT -lt $MAX_ATTEMPTS ]; do
# Remove packages
remove_packages /tmp/selected_packages.txt
# Check if any packages still need to be removed, retry if needed
MISSING_PACKAGE_COUNT=0
while read -r package; do
if dpkg -l | grep -q "^ii $package "; then
MISSING_PACKAGE_COUNT=$((MISSING_PACKAGE_COUNT + 1))
fi
done < /tmp/selected_packages.txt
if [ $MISSING_PACKAGE_COUNT -gt 0 ]; then
ATTEMPT=$((ATTEMPT + 1))
echo "Attempt #$ATTEMPT failed, retrying..."
else
break
fi
done
printf "\n%.0s" {1..1}
printf "\n%s${SKY_BLUE}Attempting to remove locally installed packages${RESET}\n" "${NOTE}"
for file in ags hypridle hyprlock rofi wallust; do
if [ -f "/usr/local/bin/$file" ]; then
sudo rm "/usr/local/bin/$file"
echo "$file removed."
fi
done
printf "\n%.0s" {1..1}
printf "\n%s${SKY_BLUE}Attempting to remove selected directories${RESET}\n" "${NOTE}"
remove_directories /tmp/selected_directories.txt
printf "\n%.0s" {1..1}
echo -e "$MAGENTA Hyprland and related components have been uninstalled.$RESET"
echo -e "$YELLOW It is recommended to reboot your system now.$RESET"
printf "\n%.0s" {1..1}