mirror of
https://github.com/JaKooLit/Debian-Hyprland.git
synced 2025-12-21 02:10:13 +01:00
commit
304cda4306
@ -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
|
||||
|
||||
36
README.md
36
README.md
@ -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
|
||||
|
||||
@ -6,7 +6,6 @@ idle=(
|
||||
libsdbus-c++-dev
|
||||
libsdbus-c++2
|
||||
libsdbus-c++-bin
|
||||
libhyprlang-dev
|
||||
)
|
||||
|
||||
#specific branch or release
|
||||
|
||||
52
install-scripts/hyprlang.sh
Executable file
52
install-scripts/hyprlang.sh
Executable 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}
|
||||
@ -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
|
||||
|
||||
@ -76,5 +78,4 @@ 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}
|
||||
|
||||
printf "\n%.0s" {1..2}
|
||||
@ -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
255
uninstall.sh
Executable 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}
|
||||
Loading…
x
Reference in New Issue
Block a user