Merge pull request #231 from JaKooLit/development

Development to main
This commit is contained in:
Ja.KooLit
2025-03-12 11:54:41 +09:00
committed by GitHub
9 changed files with 282 additions and 12 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

@@ -66,10 +66,7 @@ https://github.com/user-attachments/assets/49bc12b2-abaf-45de-a21c-67aacd9bb872
- the wallpaper offered to be downloaded towards the end is from this [`REPO`](https://github.com/JaKooLit/Wallpaper-Bank)
> [!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
@@ -84,6 +81,13 @@ https://github.com/user-attachments/assets/49bc12b2-abaf-45de-a21c-67aacd9bb872
#### ✨ Customize the packages to be installed
- inside the install-scripts directory, you can edit 00-hypr-pkgs.sh. Care though as the Hyprland Dots may not work properly!
#### 🚩 Switching to SDDM assuming you have GDM installed and running
- if you really want switch to SDDM from GDM, you need to disable the gdm first.
- `sudo systemctl disable gdm.service` then reboot
- after reboot, need to ran the install script via tty. So suggest download the install script first. Then disable gdm. reboot and once logged in, cd into Distro-Hyprland then `./install.sh` and then choose SDDM and SDDM theme in the options.
- NOTE: Distro-Hyprland is Arch-Hyprland, or Fedora-Hyprland .. depends on which install scripts you downloaded.
#### 💫 SDDM and GTK Themes offered
- 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.
@@ -92,7 +96,7 @@ https://github.com/user-attachments/assets/49bc12b2-abaf-45de-a21c-67aacd9bb872
- By default, nvidia-dkms will be installed. and only supports GTX 900 and newer. If required to install older driver, edit the nvidia.sh in install-scripts directory
> [!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 choose nvidia in the option. This is because the nvidia installer part, it will blacklist nouveau. Hyprland will still be installed but it will skip blacklisting nouveau.
- After installation, check [`THIS`](https://github.com/JaKooLit/Hyprland-Dots/wiki/Notes_to_remember#--for-nvidia-gpu-users)
@@ -102,6 +106,11 @@ https://github.com/user-attachments/assets/49bc12b2-abaf-45de-a21c-67aacd9bb872
```bash
sh <(curl -L https://raw.githubusercontent.com/JaKooLit/Arch-Hyprland/main/auto-install.sh)
```
- if you are using like fish or a non-POSIX compliant terminal
```bash
curl -sL https://raw.githubusercontent.com/JaKooLit/Arch-Hyprland/main/auto-install.sh | bash
```
## ✨ to use this script
- clone this repo (latest commit only) to reduce file size download by using git. Change directory, make executable and run the script
@@ -113,6 +122,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 or 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

View File

@@ -35,7 +35,6 @@ packages=(
"hypridle-git"
"xdg-desktop-portal-hyprland-git"
"hyprpolkitagent-git"
"pyprland"
)
# rotating stars progress

View File

@@ -35,7 +35,6 @@ packages=(
"hypridle"
"xdg-desktop-portal-hyprland"
"hyprpolkitagent"
"pyprland"
)
# rotating stars progress

View File

@@ -45,7 +45,6 @@ packages=(
"xdg-desktop-portal-hyprland-git"
"hyprpolkitagent"
"hyprpolkitagent-git"
"pyprland"
)
# Function for uninstall packages

View File

@@ -29,7 +29,6 @@ hypr_package=(
network-manager-applet
pamixer
pavucontrol
pipewire-alsa
playerctl
python-requests
python-pyquery

View File

@@ -18,7 +18,6 @@ packages=(
hypridle
hyprlock
hyprland
pyprland
)
# Local packages that should be in /usr/local/bin/

View File

@@ -6,7 +6,6 @@ hypr=(
hyprland
hypridle
hyprlock
pyprland
libspng
)

256
uninstall.sh Executable file
View File

@@ -0,0 +1,256 @@
#!/bin/bash
# 💫 https://github.com/JaKooLit 💫 #
# KooL Arch-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
╩ ╩└─┘└─┘╩═╝ ╩ ╩ ┴ ┴ ┴└─┴─┘┴ ┴┘└┘─┴┘ Arch Linux
\e[0m"
printf "\n%.0s" {1..1}
# Show welcome message using whiptail with Yes/No options
whiptail --title "Arch-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
remove_packages() {
local selected_packages_file=$1
while read -r package; do
if pacman -Qi "$package" &> /dev/null; then
echo "Removing package: $package"
if ! sudo pacman -Rs --noconfirm "$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"
"imagemagick" "Image manipulation tool" "off"
"kitty" "kitty-terminal" "off"
"kvantum" "QT apps theming" "off"
"mousepad" "simple text editor" "off"
"mpv" "multi-media player" "off"
"mpv-mpris" "mpv-plugin" "off"
"network-manager-applet" "network-manager-applet" "off"
"nvtop" "gpu resource monitor" "off"
"nwg-displays" "display monitor configuration app" "off"
"nwg-look" "gtk settings app" "off"
"pamixer" "pamixer" "off"
"pokemon-colorscripts-git" "terminal colorscripts" "off"
"pavucontrol" "pavucontrol" "off"
"playerctl" "playerctl" "off"
"pyprland" "pyprland" "off"
"qalculate-gtk" "calculater - QT" "off"
"qt5ct" "qt5ct" "off"
"qt6ct" "qt6ct" "off"
"rofi-wayland" "rofi-wayland" "off"
"slurp" "screenshot tool" "off"
"swappy" "screenshot tool" "off"
"swaync" "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"
"hypridle" "hyprland idling agent" "off"
"hyprlock" "lockscreen" "off"
"hyprpolkitagent" "hyprland polkit agent" "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 pacman -Qi "$package" &> /dev/null; 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 pokemon-colorscripts; 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}