From 9dc1f170468468f075bdfd42fea141d004cfc680 Mon Sep 17 00:00:00 2001 From: JaKooLit Date: Mon, 10 Mar 2025 14:21:05 +0900 Subject: [PATCH 01/17] dropped pyprland --- CHANGELOGS.md | 3 +++ README.md | 1 - 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/CHANGELOGS.md b/CHANGELOGS.md index 6afd027..8511358 100644 --- a/CHANGELOGS.md +++ b/CHANGELOGS.md @@ -1,5 +1,8 @@ ## CHANGELOGS +## 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 diff --git a/README.md b/README.md index 536aaee..4ffe919 100644 --- a/README.md +++ b/README.md @@ -266,7 +266,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 From de221f3376aa39031f7d0dc9019db07b4574b8e2 Mon Sep 17 00:00:00 2001 From: JaKooLit Date: Tue, 11 Mar 2025 14:54:03 +0900 Subject: [PATCH 02/17] update readme for uninstall.sh script --- CHANGELOGS.md | 3 + README.md | 5 + uninstall.sh | 264 ++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 272 insertions(+) create mode 100755 uninstall.sh diff --git a/CHANGELOGS.md b/CHANGELOGS.md index 8511358..6e96340 100644 --- a/CHANGELOGS.md +++ b/CHANGELOGS.md @@ -1,5 +1,8 @@ ## 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 diff --git a/README.md b/README.md index 4ffe919..ce54cda 100644 --- a/README.md +++ b/README.md @@ -68,6 +68,11 @@ https://github.com/user-attachments/assets/49bc12b2-abaf-45de-a21c-67aacd9bb872 > [!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. +### 💥 💥 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 + > [!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 diff --git a/uninstall.sh b/uninstall.sh new file mode 100755 index 0000000..a68f704 --- /dev/null +++ b/uninstall.sh @@ -0,0 +1,264 @@ +#!/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 --purge -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 + if [ -d "$HOME/.config/$dir" ]; then + echo "Removing directory: $HOME/.config/$dir" + if ! rm -rf "$HOME/.config/$dir"; then + echo "$ERROR Failed to remove directory: $HOME/.config/$dir" + else + echo "$OK Successfully removed directory: $HOME/.config/$dir" + fi + else + echo "$INFO Directory ${YELLOW}$HOME/.config/$dir${RESET} not found. Skipping." + fi + 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" + "gnome-system-monitor" "gnome-system-monitor" "off" + "grim" "screenshot tool" "off" + "hypridle" "hyprland idling agent" "off" + "hyprland" "hyprland main package" "off" + "hyprlock" "lockscreen" "off" + "polkit-kde-agent-1" "polkit agent" "off" + "imagemagick" "imagemagick" "off" + "inxi" "CLI system information" "off" + "jq" "json data" "off" + "kitty" "kitty-terminal" "off" + "qt5-style-kvantum" "QT apps theming" "off" + "qt5-style-kvantum-themes" "QT apps theming" "off" + "loupe" "image viewer" "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" + "pipewire-alsa" "pipewire-alsa" "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" + "unzip" "unzip" "off" + "wallust" "color pallete generator" "off" + "waybar" "wayland bar" "off" + "wl-clipboard" "clipboard manager" "off" + "wlogout" "logout menu" "off" + "xdg-desktop-portal-gtk" "gtk file picker" "off" + "xdg-desktop-portal-hyprland" "hyprland file picker" "off" + "yad" "dialog box" "off" + "yt-dlp" "video downloader" "off" + "xarchiver" "Archive Manager" "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 pokemon-colorscripts 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} \ No newline at end of file From 1555d2a3677b9a51c6f337164c4d3b8739442ca4 Mon Sep 17 00:00:00 2001 From: JaKooLit Date: Tue, 11 Mar 2025 17:13:34 +0900 Subject: [PATCH 03/17] updated install.sh --- install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install.sh b/install.sh index b243c29..04d2663 100755 --- a/install.sh +++ b/install.sh @@ -88,7 +88,7 @@ sleep 1 printf "\n%.0s" {1..1} # install pciutils if detected not installed. Necessary for detecting GPU -if ! zypper se -i pciutils > /dev/null; then +if ! dpkg -l | grep -w pciutils > /dev/null; then echo "pciutils is not installed. Installing..." | tee -a "$LOG" sudo apt install -y pciutils printf "\n%.0s" {1..1} From 0e5c3be377f574a2d0d20e8a09e80a5c6c0e0258 Mon Sep 17 00:00:00 2001 From: JaKooLit Date: Tue, 11 Mar 2025 17:17:26 +0900 Subject: [PATCH 04/17] updated sddm.sh --- install-scripts/sddm.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/install-scripts/sddm.sh b/install-scripts/sddm.sh index 529c9d8..7377d82 100755 --- a/install-scripts/sddm.sh +++ b/install-scripts/sddm.sh @@ -69,7 +69,8 @@ done printf "\n%.0s" {1..1} printf "${INFO} Activating sddm service........\n" -sudo systemctl enable sddm +sudo systemctl set-default graphical.target 2>&1 | tee -a "$LOG" +sudo systemctl enable sddm 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"; } From dfe4bb2f81afddbc5c3c633ad62fb91e49ab7f5f Mon Sep 17 00:00:00 2001 From: JaKooLit Date: Tue, 11 Mar 2025 17:19:44 +0900 Subject: [PATCH 05/17] minor sddm.sh update --- install-scripts/sddm.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install-scripts/sddm.sh b/install-scripts/sddm.sh index 7377d82..3057b2e 100755 --- a/install-scripts/sddm.sh +++ b/install-scripts/sddm.sh @@ -70,7 +70,7 @@ done printf "\n%.0s" {1..1} printf "${INFO} Activating sddm service........\n" sudo systemctl set-default graphical.target 2>&1 | tee -a "$LOG" -sudo systemctl enable sddm 2>&1 | tee -a "$LOG" +sudo systemctl enable sddm.service 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"; } From ee04881461b7cebec947d1a0a4a97ed7a5dfb235 Mon Sep 17 00:00:00 2001 From: JaKooLit Date: Tue, 11 Mar 2025 17:25:41 +0900 Subject: [PATCH 06/17] some changes --- install-scripts/sddm.sh | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/install-scripts/sddm.sh b/install-scripts/sddm.sh index 3057b2e..edc8007 100755 --- a/install-scripts/sddm.sh +++ b/install-scripts/sddm.sh @@ -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} \ No newline at end of file From a15c816159c3c7cdbcf5a7e452e476bc7ee789fc Mon Sep 17 00:00:00 2001 From: JaKooLit Date: Tue, 11 Mar 2025 17:36:15 +0900 Subject: [PATCH 07/17] updated uninstall.sh --- uninstall.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/uninstall.sh b/uninstall.sh index a68f704..3d03d59 100755 --- a/uninstall.sh +++ b/uninstall.sh @@ -51,7 +51,7 @@ remove_packages() { # 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 --purge -y "$package"; then + if ! sudo apt remove -y "$package"; then echo "$ERROR Failed to remove package: $package" else echo "$OK Successfully removed package: $package" From 4139c60b42bf2f668f32aebaba25d1b2d27f2ad9 Mon Sep 17 00:00:00 2001 From: JaKooLit Date: Tue, 11 Mar 2025 17:53:41 +0900 Subject: [PATCH 08/17] remove gnome-system-monitor as it cause gnome to be removed --- uninstall.sh | 2 -- 1 file changed, 2 deletions(-) diff --git a/uninstall.sh b/uninstall.sh index 3d03d59..488d555 100755 --- a/uninstall.sh +++ b/uninstall.sh @@ -89,7 +89,6 @@ packages=( "cliphist" "clipboard manager" "off" "fastfetch" "fastfetch" "off" "ffmpegthumbnailer" "FFmpeg Thumbnailer" "off" - "gnome-system-monitor" "gnome-system-monitor" "off" "grim" "screenshot tool" "off" "hypridle" "hyprland idling agent" "off" "hyprland" "hyprland main package" "off" @@ -105,7 +104,6 @@ packages=( "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" From 9ce8e591fe89c749c531f637ec3c6188483b0127 Mon Sep 17 00:00:00 2001 From: JaKooLit Date: Tue, 11 Mar 2025 18:13:05 +0900 Subject: [PATCH 09/17] removed from uninstall.sh gnome-system-monitor, loupe, xdg-portal-gtk. It seems that gnome is also being uninstalled by this --- uninstall.sh | 2 -- 1 file changed, 2 deletions(-) diff --git a/uninstall.sh b/uninstall.sh index 488d555..e34bae5 100755 --- a/uninstall.sh +++ b/uninstall.sh @@ -100,7 +100,6 @@ packages=( "kitty" "kitty-terminal" "off" "qt5-style-kvantum" "QT apps theming" "off" "qt5-style-kvantum-themes" "QT apps theming" "off" - "loupe" "image viewer" "off" "mousepad" "simple text editor" "off" "mpv" "multi-media player" "off" "mpv-mpris" "mpv-plugin" "off" @@ -129,7 +128,6 @@ packages=( "waybar" "wayland bar" "off" "wl-clipboard" "clipboard manager" "off" "wlogout" "logout menu" "off" - "xdg-desktop-portal-gtk" "gtk file picker" "off" "xdg-desktop-portal-hyprland" "hyprland file picker" "off" "yad" "dialog box" "off" "yt-dlp" "video downloader" "off" From f66cbbf3ca8d064ec96faea000400cb005058496 Mon Sep 17 00:00:00 2001 From: JaKooLit Date: Tue, 11 Mar 2025 19:33:18 +0900 Subject: [PATCH 10/17] updated uninstall.sh --- uninstall.sh | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/uninstall.sh b/uninstall.sh index e34bae5..0c15bef 100755 --- a/uninstall.sh +++ b/uninstall.sh @@ -94,9 +94,7 @@ packages=( "hyprland" "hyprland main package" "off" "hyprlock" "lockscreen" "off" "polkit-kde-agent-1" "polkit agent" "off" - "imagemagick" "imagemagick" "off" - "inxi" "CLI system information" "off" - "jq" "json data" "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" From 2fbe7d006559433156ecfdd0943901d8a248cd4b Mon Sep 17 00:00:00 2001 From: JaKooLit Date: Tue, 11 Mar 2025 19:47:43 +0900 Subject: [PATCH 11/17] updated uninstall.sh --- uninstall.sh | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/uninstall.sh b/uninstall.sh index 0c15bef..b28e404 100755 --- a/uninstall.sh +++ b/uninstall.sh @@ -90,9 +90,6 @@ packages=( "fastfetch" "fastfetch" "off" "ffmpegthumbnailer" "FFmpeg Thumbnailer" "off" "grim" "screenshot tool" "off" - "hypridle" "hyprland idling agent" "off" - "hyprland" "hyprland main package" "off" - "hyprlock" "lockscreen" "off" "polkit-kde-agent-1" "polkit agent" "off" "imagemagick" "Image manipulation tool" "off" "kitty" "kitty-terminal" "off" @@ -130,6 +127,7 @@ packages=( "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) From b55e2be928286aea42490ae9ceff187accaaa47b Mon Sep 17 00:00:00 2001 From: JaKooLit Date: Tue, 11 Mar 2025 19:53:06 +0900 Subject: [PATCH 12/17] remove unzip from list of packages to unintstall --- uninstall.sh | 1 - 1 file changed, 1 deletion(-) diff --git a/uninstall.sh b/uninstall.sh index b28e404..75d63f5 100755 --- a/uninstall.sh +++ b/uninstall.sh @@ -118,7 +118,6 @@ packages=( "thunar-archive-plugin" "Archive Plugin" "off" "thunar-volman" "Volume Management" "off" "tumbler" "Thumbnail Service" "off" - "unzip" "unzip" "off" "wallust" "color pallete generator" "off" "waybar" "wayland bar" "off" "wl-clipboard" "clipboard manager" "off" From ea038dee5153a71175d9e10c85407f96dbb4fd80 Mon Sep 17 00:00:00 2001 From: JaKooLit Date: Tue, 11 Mar 2025 19:59:45 +0900 Subject: [PATCH 13/17] updated uninstall.sh to have a wildcards for removing dirs from ~/.config. This will also remove the backups --- uninstall.sh | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/uninstall.sh b/uninstall.sh index 75d63f5..8be58fb 100755 --- a/uninstall.sh +++ b/uninstall.sh @@ -62,22 +62,24 @@ remove_packages() { done < "$selected_packages_file" } - - # Function to remove selected directories remove_directories() { local selected_dirs_file=$1 while read -r dir; do - if [ -d "$HOME/.config/$dir" ]; then - echo "Removing directory: $HOME/.config/$dir" - if ! rm -rf "$HOME/.config/$dir"; then - echo "$ERROR Failed to remove directory: $HOME/.config/$dir" + 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 "$OK Successfully removed directory: $HOME/.config/$dir" + echo "$INFO Directory ${YELLOW}$dir_to_remove${RESET} not found. Skipping." fi - else - echo "$INFO Directory ${YELLOW}$HOME/.config/$dir${RESET} not found. Skipping." - fi + done done < "$selected_dirs_file" } From f023d5e9b8fb507a27aa7150b6481ba7a252d131 Mon Sep 17 00:00:00 2001 From: JaKooLit Date: Tue, 11 Mar 2025 23:30:41 +0900 Subject: [PATCH 14/17] updated uninstall.sh --- uninstall.sh | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/uninstall.sh b/uninstall.sh index 8be58fb..2a99359 100755 --- a/uninstall.sh +++ b/uninstall.sh @@ -104,9 +104,7 @@ packages=( "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" - "pipewire-alsa" "pipewire-alsa" "off" "playerctl" "playerctl" "off" "qalculate-gtk" "calculater - QT" "off" "qt5ct" "qt5ct" "off" @@ -240,7 +238,7 @@ 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 pokemon-colorscripts rofi wallust; do +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." From c93c4984543dce9a6eadc0694a38a8147af3b547 Mon Sep 17 00:00:00 2001 From: JaKooLit Date: Wed, 12 Mar 2025 00:07:10 +0900 Subject: [PATCH 15/17] added manual building of hyprlang which ultimately fixes building of hypridle --- install-scripts/hypridle.sh | 1 - install-scripts/hyprlang.sh | 52 +++++++++++++++++++++++++++++++++++++ install.sh | 2 ++ 3 files changed, 54 insertions(+), 1 deletion(-) create mode 100755 install-scripts/hyprlang.sh diff --git a/install-scripts/hypridle.sh b/install-scripts/hypridle.sh index fb29b1c..fb2e41f 100755 --- a/install-scripts/hypridle.sh +++ b/install-scripts/hypridle.sh @@ -6,7 +6,6 @@ idle=( libsdbus-c++-dev libsdbus-c++2 libsdbus-c++-bin - libhyprlang-dev ) #specific branch or release diff --git a/install-scripts/hyprlang.sh b/install-scripts/hyprlang.sh new file mode 100755 index 0000000..ad8d0ef --- /dev/null +++ b/install-scripts/hyprlang.sh @@ -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} \ No newline at end of file diff --git a/install.sh b/install.sh index 04d2663..8be497c 100755 --- a/install.sh +++ b/install.sh @@ -321,6 +321,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 From 63bb7f38be31d72ca903a7f2ff641d5d757da8da Mon Sep 17 00:00:00 2001 From: JaKooLit Date: Wed, 12 Mar 2025 10:26:30 +0900 Subject: [PATCH 16/17] updated README --- README.md | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index c57aaee..ea9ef05 100644 --- a/README.md +++ b/README.md @@ -87,16 +87,6 @@ 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. @@ -115,6 +105,16 @@ sudo nano /etc/apt/sources.list #### ✨ Costumize the packages to be installed - 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! +### 🚩 changing login manager to SDDM +- if you really want to change login manager, there are couple of things you need to carry out before running this install script +- first install sddm. the no-install-recommends is suggested else it will pull lots of plasma depencies. +```bash +sudo apt install --no-install-recommends -y sddm +``` +- then ran `sudo dpkg-reconfigure sddm` choose sddm and then reboot. +- once reboot done, you can ran the script and choose sddm & sddm theme +- [LINK](https://www.simplified.guide/ubuntu/switch-to-gdm) for some guide + #### 💫 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. @@ -127,7 +127,7 @@ sudo nano /etc/apt/sources.list > [!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, choose N on the if you have nvidia question. ## ✨ Auto clone and install - you can use this command to automatically clone the installer and ran the script for you @@ -135,6 +135,10 @@ sudo nano /etc/apt/sources.list ```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 From 606fdb86bf5239e3f5d39e35133a6f0820d73a92 Mon Sep 17 00:00:00 2001 From: JaKooLit Date: Wed, 12 Mar 2025 10:54:59 +0900 Subject: [PATCH 17/17] updated readme --- README.md | 37 +++++++++---------------------------- 1 file changed, 9 insertions(+), 28 deletions(-) diff --git a/README.md b/README.md index ea9ef05..f6a3f11 100644 --- a/README.md +++ b/README.md @@ -63,15 +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. - -### 💥 💥 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 +> 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 @@ -87,9 +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 - ### 🪧🪧🪧 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 @@ -123,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. +> 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 @@ -149,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 @@ -190,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` @@ -255,17 +247,6 @@ env = GBM_BACKEND,nvidia-drm env = WLR_RENDERER_ALLOW_SOFTWARE,1 ``` -### 🚩 changing login manager to SDDM -- if you really want to change login manager, there are couple of things you need to carry out before running this install script -- first install sddm. the no-install-recommends is suggested else it will pull lots of plasma depencies. -```bash -sudo apt install --no-install-recommends -y sddm -``` -- then ran `sudo dpkg-reconfigure sddm` choose sddm and then reboot. -- once reboot done, you can ran the script and choose sddm & sddm theme -- [LINK](https://www.simplified.guide/ubuntu/switch-to-gdm) for some guide - - #### 🫥 Improving performance for Older Nvidia Cards using driver 470 - [`SEE HERE`](https://github.com/JaKooLit/Hyprland-Dots/discussions/123#discussion-6035205)