diff --git a/CHANGELOGS.md b/CHANGELOGS.md index 95cedc5..fa41030 100644 --- a/CHANGELOGS.md +++ b/CHANGELOGS.md @@ -1,5 +1,15 @@ ## CHANGELOGS +## 22 July 2025 +- Updated sddm theme and script to work with the updated simple_sddm_2 theme +- Manual building process + +## 21 June 2025 +- Added a warning message that support is now very limited + +## 08 June 2025 +- updated SDDM theme. + ## 20 March 2025 - added findutils as dependencies diff --git a/README.md b/README.md index fe943fe..34e306b 100644 --- a/README.md +++ b/README.md @@ -29,7 +29,7 @@

-
 Hyprland-Dots Debian repo 
   +
 Hyprland-Dots Debian repo 
  
 Youtube 
  
 Wiki 
  
 Keybinds 
   @@ -80,7 +80,11 @@ sudo nano /etc/apt/sources.list - 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/tree/Deb-Untu-Dots) . During installation, if you opt to copy pre-configured dots, it will be downloaded from that centralized repo. +- 25 July 2025 Update! +- All Hyprland and associated packages set to install using this script are downloaded and built from source (github). However, do note that it is downloaded from each individual releases. You can set versions by editing the scripts located install-scripts directory. +- These packages are NOT updated automatically. You need to manually update it yourself +- +- This Repo does not contain Hyprland Dots or configs! Pre-configured Dotfiles are on [`Hyprland-Dots`](https://github.com/JaKooLit/Hyprland-Dots/tree/Debian-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 @@ -107,7 +111,7 @@ sudo apt install --no-install-recommends -y sddm - [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 SDDM theme, here's the [`LINK`](https://github.com/JaKooLit/simple-sddm-2) which is a modified fork of [`LINK`](https://github.com/Keyitdev/sddm-astronaut-theme) - If you opted to install GTK Themes, Icons, here's the [`LINK`](https://github.com/JaKooLit/GTK-themes-icons). This also includes Bibata Modern Ice cursor. #### 🔔 NOTICE TO NVIDIA OWNERS ### diff --git a/assets/hyprland.desktop b/assets/hyprland.desktop deleted file mode 100644 index 8bc9468..0000000 --- a/assets/hyprland.desktop +++ /dev/null @@ -1,5 +0,0 @@ -[Desktop Entry] -Name=Hyprland -Comment=An intelligent dynamic tiling Wayland compositor -Exec=Hyprland -Type=Application diff --git a/assets/libglaze-dev_4.4.3-1_all.deb b/assets/libglaze-dev_4.4.3-1_all.deb new file mode 100644 index 0000000..7463ce0 Binary files /dev/null and b/assets/libglaze-dev_4.4.3-1_all.deb differ diff --git a/install-scripts/00-dependencies.sh b/install-scripts/00-dependencies.sh index 7fef79b..35bfe47 100755 --- a/install-scripts/00-dependencies.sh +++ b/install-scripts/00-dependencies.sh @@ -3,56 +3,131 @@ # main dependencies # # 22 Aug 2024 - NOTE will trim this more down - # packages neeeded dependencies=( - build-essential - cmake - cmake-extras - curl - findutils - gawk - gettext - git - glslang-tools - gobject-introspection - golang - hwdata - jq - libegl-dev - libegl1-mesa-dev - meson - ninja-build - openssl - psmisc - python3-mako - python3-markdown - python3-markupsafe - python3-yaml - python3-pyquery - qt6-base-dev - spirv-tools - unzip - vulkan-validationlayers - vulkan-utility-libraries-dev - wayland-protocols - xdg-desktop-portal - xwayland + build-essential + cmake + cmake-extras + curl + findutils + gawk + gettext + gir1.2-graphene-1.0 + git + glslang-tools + gobject-introspection + golang + hwdata + jq + libavcodec-dev + libavformat-dev + libavutil-dev + libcairo2-dev + libdeflate-dev + libdisplay-info-dev + libdrm-dev + libegl-dev + libegl1-mesa-dev + libgbm-dev + libgdk-pixbuf-2.0-dev + libgdk-pixbuf2.0-bin + libgirepository1.0-dev + libgl1-mesa-dev + libgraphene-1.0-0 + libgraphene-1.0-dev + libgtk-3-dev + libgulkan-0.15-0t64 + libgulkan-dev + libinih-dev + libinput-dev + libjbig-dev + libjpeg-dev + libjpeg62-turbo-dev + liblerc-dev + libliftoff-dev + liblzma-dev + libnotify-bin + libpam0g-dev + libpango1.0-dev + libpipewire-0.3-dev + libqt6svg6 + libsdbus-c++-dev + libseat-dev + libstartup-notification0-dev + libswresample-dev + libsystemd-dev + libtiff-dev + libtiffxx6 + libtomlplusplus-dev + libudev-dev + libvkfft-dev + libvulkan-dev + libvulkan-volk-dev + libwayland-dev + libwebp-dev + libxcb-composite0-dev + libxcb-cursor-dev + libxcb-dri3-dev + libxcb-ewmh-dev + libxcb-icccm4-dev + libxcb-present-dev + libxcb-render-util0-dev + libxcb-res0-dev + libxcb-util-dev + libxcb-xinerama0-dev + libxcb-xinput-dev + libxcb-xkb-dev + libxkbcommon-dev + libxkbcommon-x11-dev + libxkbregistry-dev + libxml2-dev + libxxhash-dev + meson + ninja-build + openssl + psmisc + python3-mako + python3-markdown + python3-markupsafe + python3-pyquery + python3-yaml + qt6-base-dev + scdoc + seatd + spirv-tools + unzip + vulkan-utility-libraries-dev + vulkan-validationlayers + 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 + bc + binutils + libc6 + libcairo2-dev + libdisplay-info2 + libdrm2 + libjpeg-dev + libjxl-dev + libmagic-dev + libpixman-1-dev + libpugixml-dev + libre2-dev + librsvg2-dev + libspng-dev + libtomlplusplus-dev + libwebp-dev + libzip-dev + libpam0g-dev + libxcursor-dev + qt6-declarative-dev + qt6-base-private-dev + qt6-wayland-dev + qt6-wayland-private-dev ) build_dep=( @@ -88,4 +163,4 @@ for PKG1 in "${build_dep[@]}"; do build_dep "$PKG1" "$LOG" done -printf "\n%.0s" {1..2} +printf "\n%.0s" {1..2} \ No newline at end of file diff --git a/install-scripts/01-hypr-pkgs.sh b/install-scripts/01-hypr-pkgs.sh index 7064a3d..c6a4a57 100755 --- a/install-scripts/01-hypr-pkgs.sh +++ b/install-scripts/01-hypr-pkgs.sh @@ -12,52 +12,52 @@ Extra=( # packages needed hypr_package=( - cliphist - grim - gvfs - gvfs-backends - inxi - imagemagick - kitty - nano - pavucontrol - playerctl - polkit-kde-agent-1 - python3-requests - python3-pip - qt5ct - qt5-style-kvantum - qt5-style-kvantum-themes - qt6ct - slurp - swappy - sway-notification-center - unzip - waybar - wget - wl-clipboard - wlogout - xdg-user-dirs - xdg-utils - yad + cliphist + grim + gvfs + gvfs-backends + inxi + imagemagick + kitty + nano + pavucontrol + playerctl + polkit-kde-agent-1 + python3-requests + python3-pip + qt5ct + qt5-style-kvantum + qt5-style-kvantum-themes + qt6ct + slurp + swappy + sway-notification-center + unzip + waybar + wget + wl-clipboard + wlogout + xdg-user-dirs + xdg-utils + yad ) # the following packages can be deleted. however, dotfiles may not work properly hypr_package_2=( - brightnessctl - btop - cava - fastfetch - loupe - gnome-system-monitor - mousepad - mpv - mpv-mpris - nwg-look - nwg-displays - nvtop - pamixer - qalculate-gtk + brightnessctl + btop + cava + fastfetch + loupe + gnome-system-monitor + mousepad + mpv + mpv-mpris + nwg-look + nwg-displays + nvtop + pamixer + qalculate-gtk ) # packages to force reinstall @@ -68,10 +68,10 @@ force=( # List of packages to uninstall as it conflicts with swaync or causing swaync to not function properly uninstall=( - dunst - mako - rofi - cargo + dunst + mako + rofi + cargo ) ## WARNING: DO NOT EDIT BEYOND THIS LINE IF YOU DON'T KNOW WHAT YOU ARE DOING! ## @@ -140,4 +140,4 @@ source "$HOME/.cargo/env" ## making brightnessctl work sudo chmod +s $(which brightnessctl) 2>&1 | tee -a "$LOG" || true -printf "\n%.0s" {1..2} +printf "\n%.0s" {1..2} \ No newline at end of file diff --git a/install-scripts/02-pre-cleanup.sh b/install-scripts/02-pre-cleanup.sh index 9864ac3..b2d6b34 100644 --- a/install-scripts/02-pre-cleanup.sh +++ b/install-scripts/02-pre-cleanup.sh @@ -9,10 +9,6 @@ TARGET_DIR="/usr/local/bin" # Define packages to manually remove (was manually installed previously) PACKAGES=( - hyprctl - hyprpm - hyprland - Hyprland cliphist pypr swappy @@ -20,6 +16,20 @@ PACKAGES=( magick ) +# List of packages installed from Debian-Hyprland repo +uninstall=( + hyprland + xdg-desktop-portal-hyprland + libhhyprland-dev + libhyprutils-dev + libhyprutils0 + hyprwayland-scanner + hyprland-protocols + hyprctl + hyprpm + Hyprland +) + ## WARNING: DO NOT EDIT BEYOND THIS LINE IF YOU DON'T KNOW WHAT YOU ARE DOING! ## SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" @@ -51,4 +61,19 @@ for PKG_NAME in "${PACKAGES[@]}"; do fi done -clear \ No newline at end of file + +# packages removal installed from Debian-Hyprland repo +overall_failed=0 +printf "\n%s - ${SKY_BLUE}Removing some packages${RESET} installed from Debian Hyprland official repo \n" "${NOTE}" +for PKG in "${uninstall[@]}"; do + uninstall_package "$PKG" 2>&1 | tee -a "$LOG" + if [ $? -ne 0 ]; then + overall_failed=1 + fi +done + +if [ $overall_failed -ne 0 ]; then + echo -e "${ERROR} Some packages failed to uninstall. Please check the log." +fi + +printf "\n%.0s" {1..1} \ No newline at end of file diff --git a/install-scripts/03-Final-Check.sh b/install-scripts/03-Final-Check.sh index 259a9ee..c05c3a4 100644 --- a/install-scripts/03-Final-Check.sh +++ b/install-scripts/03-Final-Check.sh @@ -11,11 +11,11 @@ packages=( cliphist wlogout kitty - hyprland ) # Local packages that should be in /usr/local/bin/ local_pkgs_installed=( + hyprland rofi hypridle hyprlock diff --git a/install-scripts/aquamarine.sh b/install-scripts/aquamarine.sh new file mode 100755 index 0000000..f0a2fb6 --- /dev/null +++ b/install-scripts/aquamarine.sh @@ -0,0 +1,53 @@ +#!/bin/bash +# 💫 https://github.com/JaKooLit 💫 # +# Hypr Ecosystem # +# aquamarine # + + +#specific branch or release +tag="v0.9.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)_aquamarine.log" +MLOG="install-$(date +%d-%H%M%S)_aquamarine.log" + +# Installation of dependencies +printf "\n%s - Installing ${YELLOW}aquamarine dependencies${RESET} .... \n" "${INFO}" + +# Check if aquamarinedirectory exists and remove it +if [ -d "aquamarine" ]; then + rm -rf "aquamarine" +fi + +# Clone and build +printf "${INFO} Installing ${YELLOW}aquamarine $tag${RESET} ...\n" +if git clone --recursive -b $tag https://github.com/hyprwm/aquamarine.git; then + cd aquamarine || 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 all -j`nproc 2>/dev/null || getconf NPROCESSORS_CONF` + if sudo cmake --install ./build 2>&1 | tee -a "$MLOG" ; then + printf "${OK} ${MAGENTA}aquamarine $tag${RESET} installed successfully.\n" 2>&1 | tee -a "$MLOG" + else + echo -e "${ERROR} Installation failed for ${YELLOW}aquamarine $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}aquamarine $tag${RESET}" 2>&1 | tee -a "$LOG" +fi + +printf "\n%.0s" {1..2} \ No newline at end of file diff --git a/install-scripts/dotfiles-branch.sh b/install-scripts/dotfiles-branch.sh index d22efd7..61744a3 100644 --- a/install-scripts/dotfiles-branch.sh +++ b/install-scripts/dotfiles-branch.sh @@ -3,7 +3,7 @@ # Hyprland-Dots to download from main # #specific branch or release -dots_tag="Deb-Untu-Dots" +dots_tag="Debian-Dots" ## WARNING: DO NOT EDIT BEYOND THIS LINE IF YOU DON'T KNOW WHAT YOU ARE DOING! ## SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" diff --git a/install-scripts/hyprcursor.sh b/install-scripts/hyprcursor.sh new file mode 100755 index 0000000..c387de5 --- /dev/null +++ b/install-scripts/hyprcursor.sh @@ -0,0 +1,68 @@ +#!/bin/bash +# 💫 https://github.com/JaKooLit 💫 # +# Hypr Ecosystem # +# hyprcursor # + +cursor=( +libzip-dev +librsvg2-dev +) + +#specific branch or release +tag="v0.1.12" + +## 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)_hyprcursor.log" +MLOG="install-$(date +%d-%H%M%S)_hyprcursor.log" + +# Installation of dependencies +printf "\n%s - Installing hyprcursor dependencies.... \n" "${NOTE}" + +for PKG1 in "${cursor[@]}"; do + install_package "$PKG1" 2>&1 | tee -a "$LOG" + if [ $? -ne 0 ]; then + echo -e "\e[1A\e[K${ERROR} - $PKG1 Package installation failed, Please check the installation logs" + exit 1 + fi +done + +# Check if hyprcursor folder exists and remove it +if [ -d "hyprcursor" ]; then + printf "${NOTE} Removing existing hyprcursor folder...\n" + rm -rf "hyprcursor" +fi + +# Clone and build +printf "${NOTE} Installing hyprcursor...\n" +if git clone --recursive -b $tag https://github.com/hyprwm/hyprcursor.git; then + cd hyprcursor || 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 all -j`nproc 2>/dev/null || getconf NPROCESSORS_CONF` + if sudo cmake --install ./build 2>&1 | tee -a "$MLOG" ; then + printf "${OK} hyprcursor installed successfully.\n" 2>&1 | tee -a "$MLOG" + else + echo -e "${ERROR} Installation failed for hyprcursor." 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 hyprcursor." 2>&1 | tee -a "$LOG" +fi + +printf "\n%.0s" {1..2} + + diff --git a/install-scripts/hyprgraphics.sh b/install-scripts/hyprgraphics.sh new file mode 100755 index 0000000..2712371 --- /dev/null +++ b/install-scripts/hyprgraphics.sh @@ -0,0 +1,65 @@ +#!/bin/bash +# 💫 https://github.com/JaKooLit 💫 # +# Hypr Ecosystem # +# hyprgraphics # + +hyprgraphics=( + libmagic +) + +#specific branch or release +tag="v0.1.5" + +## 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)_hyprgraphics.log" +MLOG="install-$(date +%d-%H%M%S)_hyprgraphics2.log" + +# Installation of dependencies +printf "\n%s - Installing ${YELLOW}hyprgraphics dependencies${RESET} .... \n" "${INFO}" + +for PKG1 in "${hyprgraphics[@]}"; do + re_install_package "$PKG1" 2>&1 | tee -a "$LOG" + if [ $? -ne 0 ]; then + echo -e "\e[1A\e[K${ERROR} - $PKG1 Package installation failed, Please check the installation logs" + exit 1 + fi +done +printf "\n%.0s" {1..1} + +# Check if hyprgraphics directory exists and remove it +if [ -d "hyprgraphics" ]; then + rm -rf "hyprgraphics" +fi + +# Clone and build +printf "${INFO} Installing ${YELLOW}hyprgraphics $tag${RESET} ...\n" +if git clone --recursive -b $tag https://github.com/hyprwm/hyprgraphics.git; then + cd hyprgraphics || 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 hyprgraphics -j`nproc 2>/dev/null || getconf _NPROCESSORS_CONF` + if sudo cmake --install ./build 2>&1 | tee -a "$MLOG" ; then + printf "${OK} ${MAGENTA}hyprgraphics $tag${RESET} installed successfully.\n" 2>&1 | tee -a "$MLOG" + else + echo -e "${ERROR} Installation failed for ${YELLOW}hyprgraphics $graphics${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}hyprgraphics $graphics${RESET}" 2>&1 | tee -a "$LOG" +fi + +printf "\n%.0s" {1..2} \ No newline at end of file diff --git a/install-scripts/hypridle.sh b/install-scripts/hypridle.sh index b07f942..3b85f96 100755 --- a/install-scripts/hypridle.sh +++ b/install-scripts/hypridle.sh @@ -7,7 +7,7 @@ idle=( ) #specific branch or release -idle_tag="v0.1.2" +tag="v0.1.6" ## WARNING: DO NOT EDIT BEYOND THIS LINE IF YOU DON'T KNOW WHAT YOU ARE DOING! ## SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" @@ -43,21 +43,21 @@ if [ -d "hypridle" ]; then fi # Clone and build -printf "${INFO} Installing ${YELLOW}hypridle $idle_tag${RESET} ...\n" -if git clone --recursive -b $idle_tag https://github.com/hyprwm/hypridle.git; then +printf "${INFO} Installing ${YELLOW}hypridle $tag${RESET} ...\n" +if git clone --recursive -b $tag https://github.com/hyprwm/hypridle.git; then cd hypridle || exit 1 cmake --no-warn-unused-cli -DCMAKE_BUILD_TYPE:STRING=Release -S . -B ./build cmake --build ./build --config Release --target hypridle -j`nproc 2>/dev/null || getconf NPROCESSORS_CONF` if sudo cmake --install ./build 2>&1 | tee -a "$MLOG" ; then - printf "${OK} ${MAGENTA}hypridle $idle_tag${RESET} installed successfully.\n" 2>&1 | tee -a "$MLOG" + printf "${OK} ${MAGENTA}hypridle $tag${RESET} installed successfully.\n" 2>&1 | tee -a "$MLOG" else - echo -e "${ERROR} Installation failed for ${YELLOW}hypridle $idle_tag${RESET}" 2>&1 | tee -a "$MLOG" + echo -e "${ERROR} Installation failed for ${YELLOW}hypridle $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}hypridle $idle_tag${RESET}" 2>&1 | tee -a "$LOG" + echo -e "${ERROR} Download failed for ${YELLOW}hypridle $tag${RESET}" 2>&1 | tee -a "$LOG" fi printf "\n%.0s" {1..2} \ No newline at end of file diff --git a/install-scripts/hyprland-protocols.sh b/install-scripts/hyprland-protocols.sh new file mode 100755 index 0000000..72f0bc0 --- /dev/null +++ b/install-scripts/hyprland-protocols.sh @@ -0,0 +1,52 @@ +#!/bin/bash +# 💫 https://github.com/JaKooLit 💫 # +# Hypr Ecosystem # +# hypland-protocols # + + +#specific branch or release +tag="v0.6.4" + +## 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)_protocols.log" +MLOG="install-$(date +%d-%H%M%S)_protocols2.log" + +# Installation of dependencies +printf "\n%s - Installing ${YELLOW}hyprland-protocols dependencies${RESET} .... \n" "${INFO}" + +# Check if hyprland-protocols directory exists and remove it +if [ -d "hyprland-protocols" ]; then + rm -rf "hyprland-protocols" +fi + +# Clone and build +printf "${INFO} Installing ${YELLOW}hyprland-protocols $tag${RESET} ...\n" +if git clone --recursive -b $tag https://github.com/hyprwm/hyprland-protocols.git; then + cd hyprland-protocols || exit 1 + meson setup build + if sudo meson install -C build 2>&1 | tee -a "$MLOG" ; then + printf "${OK} ${MAGENTA}hyprland-protocols $tag${RESET} installed successfully.\n" 2>&1 | tee -a "$MLOG" + else + echo -e "${ERROR} Installation failed for ${YELLOW}hyprland-protocols $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}hyprland-protocols tag${RESET}" 2>&1 | tee -a "$LOG" +fi + +printf "\n%.0s" {1..2} \ No newline at end of file diff --git a/install-scripts/hyprland-qt-support.sh b/install-scripts/hyprland-qt-support.sh new file mode 100755 index 0000000..b0d8354 --- /dev/null +++ b/install-scripts/hyprland-qt-support.sh @@ -0,0 +1,73 @@ +#!/bin/bash +# 💫 https://github.com/JaKooLit 💫 # +# Hypr Ecosystem # +# hypland-qt-support # + +qt_support=( + qt6-base-dev + qt6-wayland + qt6-declarative-dev + qml6-module-qtcore + qml6-module-qtquick-layouts + qt6-tools-dev + qt6-tools-dev-tools + qt6-charts-dev +) + +#specific branch or release +tag="v0.1.0" + +## 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)_hyprland-qt-support.log" +MLOG="install-$(date +%d-%H%M%S)_hyprland-qt-support2.log" + +# Installation of dependencies +printf "\n%s - Installing ${YELLOW}hyprland-qt-support dependencies${RESET} .... \n" "${INFO}" + +for PKG1 in "${qt_support[@]}"; do + re_install_package "$PKG1" 2>&1 | tee -a "$LOG" + if [ $? -ne 0 ]; then + echo -e "\e[1A\e[K${ERROR} - ${YELLOW}$PKG1${RESET} Package installation failed, Please check the installation logs" + exit 1 + fi +done + +printf "\n%.0s" {1..1} + +# Check if hyprland-qt-support directory exists and remove it +if [ -d "hyprland-qt-support" ]; then + rm -rf "hyprland-qt-support" +fi + +# Clone and build +printf "${INFO} Installing ${YELLOW}hyprland-qt-support $tag${RESET} ...\n" +if git clone --recursive -b $tag https://github.com/hyprwm/hyprland-qt-support.git; then + cd hyprland-qt-support || 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 all -j`nproc 2>/dev/null || getconf NPROCESSORS_CONF` + if sudo cmake --install ./build 2>&1 | tee -a "$MLOG" ; then + printf "${OK} ${MAGENTA}hyprland-qt-support $tag${RESET} installed successfully.\n" 2>&1 | tee -a "$MLOG" + else + echo -e "${ERROR} Installation failed for ${YELLOW}hyprland-qt-support $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}hyprland-qt-support $tag${RESET}" 2>&1 | tee -a "$LOG" +fi + +printf "\n%.0s" {1..2} \ No newline at end of file diff --git a/install-scripts/hyprland-qtutils.sh b/install-scripts/hyprland-qtutils.sh new file mode 100755 index 0000000..4a05a7a --- /dev/null +++ b/install-scripts/hyprland-qtutils.sh @@ -0,0 +1,75 @@ +#!/bin/bash +# 💫 https://github.com/JaKooLit 💫 # +# Hypr Ecosystem # +# hypland-qtutils # + +qtutils=( + libqt6core5compat6 + qt6-base-dev + qt6-wayland-dev + qt6-wayland + qt6-declarative-dev + qml6-module-qtcore + qt6-3d-dev + qt6-5compat-dev + libqt6waylandclient6 + qml6-module-qtwayland-client-texturesharing +) + +#specific branch or release +tag="v0.1.4" + +## 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)_hyprland-qtutils.log" +MLOG="install-$(date +%d-%H%M%S)_hyprland-qtutils2.log" + +# Installation of dependencies +printf "\n%s - Installing ${YELLOW}hyprland-qtutils dependencies${RESET} .... \n" "${INFO}" + +for PKG1 in "${qtutils[@]}"; do + re_install_package "$PKG1" 2>&1 | tee -a "$LOG" + if [ $? -ne 0 ]; then + echo -e "\e[1A\e[K${ERROR} - ${YELLOW}$PKG1${RESET} Package installation failed, Please check the installation logs" + exit 1 + fi +done + +printf "\n%.0s" {1..1} + +# Check if hyprland-qtutils directory exists and remove it +if [ -d "hyprland-qtutils" ]; then + rm -rf "hyprland-qtutils" +fi + +# Clone and build +printf "${INFO} Installing ${YELLOW}hyprland-qtutils $tag${RESET} ...\n" +if git clone --recursive -b $tag https://github.com/hyprwm/hyprland-qtutils.git; then + cd hyprland-qtutils || 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 all -j`nproc 2>/dev/null || getconf NPROCESSORS_CONF` + if sudo cmake --install ./build 2>&1 | tee -a "$MLOG" ; then + printf "${OK} ${MAGENTA}hyprland-qtutils $tag${RESET} installed successfully.\n" 2>&1 | tee -a "$MLOG" + else + echo -e "${ERROR} Installation failed for ${YELLOW}hyprland-qtutils $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}hyprland-qtutils $tag${RESET}" 2>&1 | tee -a "$LOG" +fi + +printf "\n%.0s" {1..2} \ No newline at end of file diff --git a/install-scripts/hyprland.sh b/install-scripts/hyprland.sh index 71282e6..6339c89 100755 --- a/install-scripts/hyprland.sh +++ b/install-scripts/hyprland.sh @@ -1,44 +1,80 @@ #!/bin/bash # 💫 https://github.com/JaKooLit 💫 # -# Main Hyprland Package # +# Main Hyprland Package# -hypr=( - hyprland-protocols - hyprwayland-scanner -) +#specific branch or release +tag="v0.49.0" -# forcing to reinstall. Had experience it says hyprland is already installed -f_hypr=( - hyprland +hyprland=( + libxcb-errors-dev + libre2-dev + libglaze-dev + libudis86-dev + libinotify-ocaml-dev ) ## WARNING: DO NOT EDIT BEYOND THIS LINE IF YOU DON'T KNOW WHAT YOU ARE DOING! ## +# Determine the directory where the script is located SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" # Change the working directory to the parent directory of the script PARENT_DIR="$SCRIPT_DIR/.." -cd "$PARENT_DIR" || { echo "${ERROR} Failed to change directory to $PARENT_DIR"; exit 1; } +cd "$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 +source "$(dirname "$(readlink -f "$0")")/Global_functions.sh" # Set the name of the log file to include the current date and time LOG="Install-Logs/install-$(date +%d-%H%M%S)_hyprland.log" +MLOG="install-$(date +%d-%H%M%S)_hyprland2.log" +# Installation of dependencies +printf "\n%s - Installing hyprland additional dependencies.... \n" "${NOTE}" -# Hyprland -printf "${NOTE} Installing ${SKY_BLUE}Hyprland packages${RESET} .......\n" - for HYPR in "${hypr[@]}"; do - install_package "$HYPR" "$LOG" +for PKG1 in "${hyprland[@]}"; do + install_package "$PKG1" 2>&1 | tee -a "$LOG" + if [ $? -ne 0 ]; then + echo -e "\e[1A\e[K${ERROR} - $PKG1 Package installation failed, Please check the installation logs" + exit 1 + fi done -# force -printf "${NOTE} Reinstalling ${SKY_BLUE}Hyprland packages${RESET} .......\n" - for HYPR1 in "${f_hypr[@]}"; do - re_install_package "$HYPR1" "$LOG" -done +printf "\n%.0s" {1..1} -printf "\n%.0s" {1..2} \ No newline at end of file +# Installation of dependencies (glaze) +printf "\n%s - Installing Hyprland additional dependencies (glaze).... \n" "${NOTE}" + +# Check if /usr/include/glaze exists +if [ ! -d /usr/include/glaze ]; then + echo "${INFO} ${YELLOW}Glaze${RESET} is not installed. Installing ${YELLOW}glaze from assets${RESET} ..." + sudo dpkg -i assets/libglaze-dev_4.4.3-1_all.deb 2>&1 | tee -a "$LOG" + sudo apt-get install -f -y 2>&1 | tee -a "$LOG" + echo "${INFO} ${YELLOW}libglaze-dev from assets${RESET} installed." +fi + + +printf "\n%.0s" {1..1} + +# Clone, build, and install Hyprland using Cmake +printf "${NOTE} Cloning and Installing ${YELLOW}Hyprland $tag${RESET} ...\n" + +# Check if Hyprland folder exists and remove it +if [ -d "Hyprland" ]; then + printf "${NOTE} Removing existing Hyprland folder...\n" + rm -rf "Hyprland" 2>&1 | tee -a "$LOG" +fi + +if git clone --recursive -b $tag "https://github.com/hyprwm/Hyprland"; then + cd "Hyprland" || exit 1 + make all + if sudo make install 2>&1 | tee -a "$MLOG"; then + printf "${OK} ${MAGENTA}Hyprland tag${RESET} installed successfully.\n" 2>&1 | tee -a "$MLOG" + else + echo -e "${ERROR} Installation failed for ${YELLOW}Hyprland $tag${RESET}" 2>&1 | tee -a "$MLOG" + fi + mv $MLOG ../Install-Logs/ || true + cd .. +else + echo -e "${ERROR} Download failed for ${YELLOW}Hyprland $tag${RESET}" 2>&1 | tee -a "$LOG" +fi + +printf "\n%.0s" {1..2} \ No newline at end of file diff --git a/install-scripts/hyprlang.sh b/install-scripts/hyprlang.sh index c043955..c06dda5 100755 --- a/install-scripts/hyprlang.sh +++ b/install-scripts/hyprlang.sh @@ -1,10 +1,11 @@ #!/bin/bash # 💫 https://github.com/JaKooLit 💫 # +# Hypr Ecosystem # # hyplang # #specific branch or release -lang_tag="v0.5.2" +tag="v0.6.3" ## WARNING: DO NOT EDIT BEYOND THIS LINE IF YOU DON'T KNOW WHAT YOU ARE DOING! ## SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" @@ -32,21 +33,21 @@ if [ -d "hyprlang" ]; then 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 +printf "${INFO} Installing ${YELLOW}hyprlang $tag${RESET} ...\n" +if git clone --recursive -b $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` + 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" + printf "${OK} ${MAGENTA}hyprlang 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" + echo -e "${ERROR} Installation failed for ${YELLOW}hyprlang $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" + echo -e "${ERROR} Download failed for ${YELLOW}hyprlang $tag${RESET}" 2>&1 | tee -a "$LOG" fi printf "\n%.0s" {1..2} \ No newline at end of file diff --git a/install-scripts/hyprlock.sh b/install-scripts/hyprlock.sh index f220076..3be0b3c 100755 --- a/install-scripts/hyprlock.sh +++ b/install-scripts/hyprlock.sh @@ -7,12 +7,16 @@ lock=( libgbm-dev libdrm-dev libmagic-dev - libhyprlang-dev - libhyprutils-dev + libaudit-dev + libsdbus-c++-dev +) + +build_dep=( + pam ) #specific branch or release -lock_tag="v0.4.0" +tag="v0.9.0" ## WARNING: DO NOT EDIT BEYOND THIS LINE IF YOU DON'T KNOW WHAT YOU ARE DOING! ## SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" @@ -38,27 +42,31 @@ for PKG1 in "${lock[@]}"; do re_install_package "$PKG1" "$LOG" done +for PKG1 in "${build_dep[@]}"; do + build_dep "$PKG1" "$LOG" +done + # Check if hyprlock directory exists and remove it if [ -d "hyprlock" ]; then rm -rf "hyprlock" fi # Clone and build hyprlock -printf "${INFO} Installing ${YELLOW}hyprlock $lock_tag${RESET} ...\n" -if git clone --recursive -b $lock_tag https://github.com/hyprwm/hyprlock.git; then +printf "${INFO} Installing ${YELLOW}hyprlock $tag${RESET} ...\n" +if git clone --recursive -b $tag https://github.com/hyprwm/hyprlock.git; then cd hyprlock || exit 1 cmake --no-warn-unused-cli -DCMAKE_BUILD_TYPE:STRING=Release -S . -B ./build cmake --build ./build --config Release --target hyprlock -j`nproc 2>/dev/null || getconf _NPROCESSORS_CONF` if sudo cmake --install build 2>&1 | tee -a "$MLOG" ; then - printf "${OK} ${YELLOW}hyprlock $lock_tag${RESET} installed successfully.\n" 2>&1 | tee -a "$MLOG" + printf "${OK} ${YELLOW}hyprlock $tag${RESET} installed successfully.\n" 2>&1 | tee -a "$MLOG" else - echo -e "${ERROR} Installation failed for ${YELLOW}hyprlock $lock_tag${RESET}" 2>&1 | tee -a "$MLOG" + echo -e "${ERROR} Installation failed for ${YELLOW}hyprlock $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}hyprlock $lock_tag${RESET}" 2>&1 | tee -a "$LOG" + echo -e "${ERROR} Download failed for ${YELLOW}hyprlock $tag${RESET}" 2>&1 | tee -a "$LOG" fi printf "\n%.0s" {1..2} diff --git a/install-scripts/hyprpolkitagent.sh b/install-scripts/hyprpolkitagent.sh new file mode 100755 index 0000000..cd1fdea --- /dev/null +++ b/install-scripts/hyprpolkitagent.sh @@ -0,0 +1,72 @@ +#!/bin/bash +# 💫 https://github.com/JaKooLit 💫 # +# Hypr Ecosystem # +# hyprpolkitagent # + +polkitagent=( + libpolkit-agent-1-dev + libpolkit-qt6-1-dev + qml6-module-qtquick-layouts + qt6-tools-dev + qt6-tools-dev-tools + qt6-charts-dev +) + +#specific branch or release +tag="v0.1.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)_hyprpolkitagent.log" +MLOG="install-$(date +%d-%H%M%S)_hyprpolkitagent.log" + +# Installation of dependencies +printf "\n%s - Installing hyprpolkitagent dependencies.... \n" "${NOTE}" + +for PKG1 in "${polkitagent[@]}"; do + re_install_package "$PKG1" 2>&1 | tee -a "$LOG" + if [ $? -ne 0 ]; then + echo -e "\e[1A\e[K${ERROR} - $PKG1 Package installation failed, Please check the installation logs" + exit 1 + fi +done + +# Check if hyprpolkitagent folder exists and remove it +if [ -d "hyprpolkitagent" ]; then + printf "${NOTE} Removing existing hyprpolkitagent folder...\n" + rm -rf "hyprpolkitagent" +fi + +# Clone and build +printf "${NOTE} Installing hyprpolkitagent...\n" +if git clone --recursive -b $tag https://github.com/hyprwm/hyprpolkitagent.git; then + cd hyprpolkitagent || 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 all -j`nproc 2>/dev/null || getconf NPROCESSORS_CONF` + if sudo cmake --install ./build 2>&1 | tee -a "$MLOG" ; then + printf "${OK} hyprpolkitagent installed successfully.\n" 2>&1 | tee -a "$MLOG" + else + echo -e "${ERROR} Installation failed for hyprpolkitagent." 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 hyprpolkitagent." 2>&1 | tee -a "$LOG" +fi + +printf "\n%.0s" {1..2} + + diff --git a/install-scripts/hyprutils.sh b/install-scripts/hyprutils.sh new file mode 100755 index 0000000..41118ee --- /dev/null +++ b/install-scripts/hyprutils.sh @@ -0,0 +1,52 @@ +#!/bin/bash +# 💫 https://github.com/JaKooLit 💫 # +# Hypr Ecosystem # +# hyprutils # + +#specific branch or release +tag="v0.8.1" + +## 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)_hyprutils.log" +MLOG="install-$(date +%d-%H%M%S)_hyprutils2.log" + +# Clone, build, and install using Cmake +printf "${NOTE} Cloning hyprutils...\n" + +# Check if hyprutils folder exists and remove it +if [ -d "hyprutils" ]; then + printf "${NOTE} Removing existing hyprutils folder...\n" + rm -rf "hyprutils" 2>&1 | tee -a "$LOG" +fi + +if git clone -b $tag "https://github.com/hyprwm/hyprutils.git"; then + cd "hyprutils" || 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 all -j`nproc 2>/dev/null || getconf _NPROCESSORS_CONF` + if sudo cmake --install build 2>&1 | tee -a "$MLOG"; then + printf "${OK} hyprutils installed successfully.\n" 2>&1 | tee -a "$MLOG" + else + echo -e "${ERROR} Installation failed for hyprutils." 2>&1 | tee -a "$MLOG" + fi + mv $MLOG ../Install-Logs/ || true + cd .. +else + echo -e "${ERROR} Download failed for hyprutils" 2>&1 | tee -a "$LOG" +fi + +printf "\n%.0s" {1..2} + + diff --git a/install-scripts/hyprwayland-scanner.sh b/install-scripts/hyprwayland-scanner.sh new file mode 100755 index 0000000..21bb5bf --- /dev/null +++ b/install-scripts/hyprwayland-scanner.sh @@ -0,0 +1,69 @@ +#!/bin/bash +# 💫 https://github.com/JaKooLit 💫 # +# Hypr Ecosystem # +# hyprwayland-scanner # + +scan_depend=( + libpugixml-dev +) + +#specific branch or release +tag="v0.4.5" + +## 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)_hyprwayland-scanner.log" +MLOG="install-$(date +%d-%H%M%S)_hyprwayland-scanner2.log" + +## +# Installation of dependencies +printf "\n%s - Installing hyprwayland-scanner dependencies.... \n" "${NOTE}" + +for PKG1 in "${scan_depend[@]}"; do + install_package "$PKG1" 2>&1 | tee -a "$LOG" + if [ $? -ne 0 ]; then + echo -e "\e[1A\e[K${ERROR} - $PKG1 Package installation failed, Please check the installation logs" + exit 1 + fi +done + +printf "${NOTE} Installing hyprwayland-scanner...\n" + +# Check if hyprwayland-scanner folder exists and remove it +if [ -d "hyprwayland-scanner" ]; then + printf "${NOTE} Removing existing hyprwayland-scanner folder...\n" + rm -rf "hyprwayland-scanner" +fi + +# Clone and build hyprlang +printf "${NOTE} Installing hyprwayland-scanner...\n" +if git clone --recursive -b $tag https://github.com/hyprwm/hyprwayland-scanner.git; then + cd hyprwayland-scanner || exit 1 + cmake -DCMAKE_INSTALL_PREFIX=/usr -B build + cmake --build build -j `nproc` + if sudo cmake --install build 2>&1 | tee -a "$MLOG" ; then + printf "${OK} hyprwayland-scanner installed successfully.\n" 2>&1 | tee -a "$MLOG" + else + echo -e "${ERROR} Installation failed for hyprwayland-scanner." 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 hyprwayland-scanner. Please check log." 2>&1 | tee -a "$LOG" +fi + +printf "\n%.0s" {1..2} + diff --git a/install-scripts/rofi-wayland.sh b/install-scripts/rofi-wayland.sh index 25cce16..0526b40 100755 --- a/install-scripts/rofi-wayland.sh +++ b/install-scripts/rofi-wayland.sh @@ -35,7 +35,11 @@ rofi=( wget ) -rofi_tag="1.7.8+wayland1" +# variables +rofi_tag="1.7.9+wayland1" +release_url="https://github.com/lbonn/rofi/releases/download/1.7.9%2Bwayland1/rofi-1.7.9+wayland1.tar.gz" + + ## WARNING: DO NOT EDIT BEYOND THIS LINE IF YOU DON'T KNOW WHAT YOU ARE DOING! ## SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" @@ -62,7 +66,7 @@ printf "\n%s - Re-installing ${SKY_BLUE}rofi-wayland dependencies${RESET}.... \n printf "\n%.0s" {1..2} # Clone and build rofi - wayland -printf "${NOTE} Installing ${SKY_BLUE}rofi-wayland${RESET}...\n" +printf "${NOTE} Building and Installing ${SKY_BLUE}rofi-wayland${RESET} $rofi_tag ...\n" # Check if rofi directory exists if [ -d "rofi-$rofi_tag" ]; then @@ -71,7 +75,7 @@ fi # cloning rofi-wayland printf "${NOTE} Downloading ${YELLOW}rofi-wayland $rofi_tag${RESET} from releases...\n" -wget https://github.com/lbonn/rofi/releases/download/1.7.8%2Bwayland1/rofi-1.7.8+wayland1.tar.gz +wget $release_url if [ -f "rofi-$rofi_tag.tar.gz" ]; then printf "${OK} ${YELLOW}rofi-wayland $rofi_tag${RESET} downloaded successfully.\n" 2>&1 | tee -a "$LOG" diff --git a/install-scripts/sddm.sh b/install-scripts/sddm.sh index 3e4fe37..04c47fa 100755 --- a/install-scripts/sddm.sh +++ b/install-scripts/sddm.sh @@ -8,10 +8,13 @@ sddm1=( ) sddm2=( - qt6-5compat-dev - qml6-module-qt5compat-graphicaleffects + libqt6svg6 qt6-declarative-dev qt6-svg-dev + qt6-virtualkeyboard-plugin + libqt6multimedia6 + qml6-module-qtquick-controls + qml6-module-qtquick-effects ) # login managers to attempt to disable @@ -77,6 +80,5 @@ 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"; } -sudo cp assets/hyprland.desktop "$wayland_sessions_dir/" 2>&1 | tee -a "$LOG" printf "\n%.0s" {1..2} \ No newline at end of file diff --git a/install-scripts/sddm_theme.sh b/install-scripts/sddm_theme.sh index 23c41b5..2ac2070 100755 --- a/install-scripts/sddm_theme.sh +++ b/install-scripts/sddm_theme.sh @@ -2,8 +2,8 @@ # 💫 https://github.com/JaKooLit 💫 # # SDDM themes # -source_theme="https://codeberg.org/JaKooLit/sddm-sequoia" -theme_name="sequoia_2" +source_theme="https://github.com/JaKooLit/simple-sddm-2.git" +theme_name="simple_sddm_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 )" @@ -18,6 +18,7 @@ if ! source "$(dirname "$(readlink -f "$0")")/Global_functions.sh"; then 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)_sddm_theme.log" @@ -52,51 +53,57 @@ if git clone --depth=1 "$source_theme" "$theme_name"; then sudo mv "$theme_name" "/usr/share/sddm/themes/$theme_name" 2>&1 | tee -a "$LOG" # setting up SDDM theme - sddm_conf_dir="/etc/sddm.conf.d" + sddm_conf="/etc/sddm.conf" BACKUP_SUFFIX=".bak" - + echo -e "${NOTE} Setting up the login screen." | tee -a "$LOG" - if [ -d "$sddm_conf_dir" ]; then - echo "Backing up files in $sddm_conf_dir" | tee -a "$LOG" - for file in "$sddm_conf_dir"/*; do - if [ -f "$file" ]; then - if [[ "$file" == *$BACKUP_SUFFIX ]]; then - echo "Skipping backup file: $file" | tee -a "$LOG" - continue - fi - # Backup each original file - sudo cp "$file" "$file$BACKUP_SUFFIX" 2>&1 | tee -a "$LOG" - echo "Backup created for $file" | tee -a "$LOG" - - # Edit existing "Current=" - if grep -q '^[[:space:]]*Current=' "$file"; then - sudo sed -i "s/^[[:space:]]*Current=.*/Current=$theme_name/" "$file" 2>&1 | tee -a "$LOG" - echo "Updated theme in $file" | tee -a "$LOG" - fi - fi - done + # Backup the sddm.conf file if it exists + if [ -f "$sddm_conf" ]; then + echo "Backing up $sddm_conf" | tee -a "$LOG" + sudo cp "$sddm_conf" "$sddm_conf$BACKUP_SUFFIX" 2>&1 | tee -a "$LOG" else - echo "$CAT - $sddm_conf_dir not found, creating..." | tee -a "$LOG" - sudo mkdir -p "$sddm_conf_dir" 2>&1 | tee -a "$LOG" + echo "$sddm_conf does not exist, creating a new one." | tee -a "$LOG" + sudo touch "$sddm_conf" 2>&1 | tee -a "$LOG" fi - if [ ! -f "$sddm_conf_dir/theme.conf.user" ]; then - echo -e "[Theme]\nCurrent = $theme_name" | sudo tee "$sddm_conf_dir/theme.conf.user" > /dev/null + # Check if the [Theme] section exists + if grep -q '^\[Theme\]' "$sddm_conf"; then + # Update the Current= line under [Theme] + sudo sed -i "/^\[Theme\]/,/^\[/{s/^\s*Current=.*/Current=$theme_name/}" "$sddm_conf" 2>&1 | tee -a "$LOG" - if [ -f "$sddm_conf_dir/theme.conf.user" ]; then - echo "Created and configured $sddm_conf_dir/theme.conf.user with theme $theme_name" | tee -a "$LOG" + # If no Current= line was found and replaced, append it after the [Theme] section + if ! grep -q '^\s*Current=' "$sddm_conf"; then + sudo sed -i "/^\[Theme\]/a Current=$theme_name" "$sddm_conf" 2>&1 | tee -a "$LOG" + echo "Appended Current=$theme_name under [Theme] in $sddm_conf" | tee -a "$LOG" else - echo "Failed to create $sddm_conf_dir/theme.conf.user" | tee -a "$LOG" + echo "Updated Current=$theme_name in $sddm_conf" | tee -a "$LOG" fi else - echo "$sddm_conf_dir/theme.conf.user already exists, skipping creation." | tee -a "$LOG" + # Append the [Theme] section at the end if it doesn't exist + echo -e "\n[Theme]\nCurrent=$theme_name" | sudo tee -a "$sddm_conf" > /dev/null + echo "Added [Theme] section with Current=$theme_name in $sddm_conf" | tee -a "$LOG" + fi + + # Add [General] section with InputMethod=qtvirtualkeyboard if it doesn't exist + if ! grep -q '^\[General\]' "$sddm_conf"; then + echo -e "\n[General]\nInputMethod=qtvirtualkeyboard" | sudo tee -a "$sddm_conf" > /dev/null + echo "Added [General] section with InputMethod=qtvirtualkeyboard in $sddm_conf" | tee -a "$LOG" + else + # Update InputMethod line if section exists + if grep -q '^\s*InputMethod=' "$sddm_conf"; then + sudo sed -i '/^\[General\]/,/^\[/{s/^\s*InputMethod=.*/InputMethod=qtvirtualkeyboard/}' "$sddm_conf" 2>&1 | tee -a "$LOG" + echo "Updated InputMethod to qtvirtualkeyboard in $sddm_conf" | tee -a "$LOG" + else + sudo sed -i '/^\[General\]/a InputMethod=qtvirtualkeyboard' "$sddm_conf" 2>&1 | tee -a "$LOG" + echo "Appended InputMethod=qtvirtualkeyboard under [General] in $sddm_conf" | tee -a "$LOG" + fi fi # Replace current background from assets - sudo cp -r assets/sddm.png "/usr/share/sddm/themes/$theme_name/backgrounds/default" 2>&1 | tee -a "$LOG" - sudo sed -i 's|^wallpaper=".*"|wallpaper="backgrounds/default"|' "/usr/share/sddm/themes/$theme_name/theme.conf" 2>&1 | tee -a "$LOG" - + sudo cp -r assets/sddm.png "/usr/share/sddm/themes/$theme_name/Backgrounds/default" 2>&1 | tee -a "$LOG" + sudo sed -i 's|^wallpaper=".*"|wallpaper="Backgrounds/default"|' "/usr/share/sddm/themes/$theme_name/theme.conf" 2>&1 | tee -a "$LOG" + printf "\n%.0s" {1..1} printf "${NOTE} copying ${YELLOW}JetBrains Mono Nerd Font${RESET} to ${YELLOW}/usr/local/share/fonts${RESET} .......\n" printf "${NOTE} necessary for the new SDDM theme to work properly........\n" @@ -110,16 +117,16 @@ if git clone --depth=1 "$source_theme" "$theme_name"; then echo "Failed to copy fonts." fi - fc-cache -fv 2>&1 | tee -a "$LOG" + # Update font cache and log the output + fc-cache -v -f 2>&1 | tee -a "$LOG" printf "\n%.0s" {1..1} - - echo "${OK} - ${MAGENTA}Additional SDDM Theme${RESET} successfully installed." | tee -a "$LOG" + + echo "${OK} - ${MAGENTA}Additional ${YELLOW}$theme_name SDDM Theme${RESET} successfully installed." | tee -a "$LOG" else echo "${ERROR} - Failed to clone the sddm theme repository. Please check your internet connection." | tee -a "$LOG" >&2 fi - printf "\n%.0s" {1..2} \ No newline at end of file diff --git a/install-scripts/xdph.sh b/install-scripts/xdph.sh index 767abb7..eb99aec 100755 --- a/install-scripts/xdph.sh +++ b/install-scripts/xdph.sh @@ -3,10 +3,18 @@ # XDG-Desktop-Portals for hyprland # xdg=( - xdg-desktop-portal-gtk - xdg-desktop-portal-hyprland + libdrm-dev + libpipewire-0.3-dev + libspa-0.2-dev + libsdbus-c++-dev + libwayland-client0 + wayland-protocols + xdg-desktop-portal-gtk ) +#specific branch or release +tag="v1.3.9" + ## WARNING: DO NOT EDIT BEYOND THIS LINE IF YOU DON'T KNOW WHAT YOU ARE DOING! ## SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" @@ -26,9 +34,38 @@ LOG="Install-Logs/install-$(date +%d-%H%M%S)_xdph.log" [[ -f "/usr/lib/xdg-desktop-portal-hyprland" ]] && sudo rm "/usr/lib/xdg-desktop-portal-hyprland" # XDG-DESKTOP-PORTAL-HYPRLAND -printf "${NOTE} Installing ${SKY_BLUE}xdg-desktop-portal-hyprland${RESET}\n\n" -for xdgs in "${xdg[@]}"; do - install_package "$xdgs" "$LOG" +printf "${NOTE} Installing ${SKY_BLUE}xdg-desktop-portal-hyprland dependencies${RESET}\n\n" + +for PKG1 in "${xdg[@]}"; do + re_install_package "$PKG1" 2>&1 | tee -a "$LOG" + if [ $? -ne 0 ]; then + echo -e "\e[1A\e[K${ERROR} - $PKG1 Package installation failed, Please check the installation logs" + exit 1 + fi done - + +# Clone, build, and install XDPH +printf "${NOTE} Cloning and Installing ${YELLOW}XDG Desktop Portal Hyprland $tag${RESET} ...\n" + +# Check if xdg-desktop-portal-hyprland folder exists and remove it +if [ -d "xdg-desktop-portal-hyprland" ]; then + printf "${NOTE} Removing existing xdg-desktop-portal-hyprland folder...\n" + rm -rf "xdg-desktop-portal-hyprland" 2>&1 | tee -a "$LOG" +fi + +if git clone --recursive -b $tag "https://github.com/hyprwm/xdg-desktop-portal-hyprland.git"; then + cd "xdg-desktop-portal-hyprland" || exit 1 + cmake -DCMAKE_INSTALL_LIBEXECDIR=/usr/lib -DCMAKE_INSTALL_PREFIX=/usr -B build + cmake --build build + if sudo cmake --install build 2>&1 | tee -a "$MLOG"; then + printf "${OK} ${MAGENTA}xdph $tag${RESET} installed successfully.\n" 2>&1 | tee -a "$MLOG" + else + echo -e "${ERROR} Installation failed for ${YELLOW}xdph $tag${RESET}" 2>&1 | tee -a "$MLOG" + fi + mv $MLOG ../Install-Logs/ || true + cd .. +else + echo -e "${ERROR} Download failed for ${YELLOW}xdph $tag${RESET}" 2>&1 | tee -a "$LOG" +fi + printf "\n%.0s" {1..2} diff --git a/install.sh b/install.sh index 9b46c76..d3bc78b 100755 --- a/install.sh +++ b/install.sh @@ -19,6 +19,59 @@ BLUE="$(tput setaf 4)" SKY_BLUE="$(tput setaf 6)" RESET="$(tput sgr0)" +# Function to print colorful text +print_color() { + printf "%b%s%b\n" "$1" "$2" "$RESET" +} + +# Warning: End of Life Support +printf "\n%.0s" {1..2} +print_color $YELLOW " + █▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀█ + KooL's Debian - Hyprland July 2025 Update + + Most Hyprland packages are built from Source + + NOTICE + █▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄█ + + All Hyprland and associated packages set to install using this script are downloaded and built from source (github) + + However, do note that it is downloaded from each individual releases. You can set versions by editing the scripts + located install-scripts directory. + + These packages are NOT updated automatically. You need to manually update it yourself + + BE WARNED!!!!! Installation may take longer!! + + + █▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀█ + + NOTE: + Hyprland and Dependencies versions + + █▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄█ + + Debian is not my main Distro. As stated above, Most Hyprland and dependencies as built from release. + + I cannot monitor the updates or changes. If there are new versions, please submit an Merge Request for any updates. + + Thank you! +" +printf "\n%.0s" {1..2} + + +# Prompt user to continue or exit +read -rp "Do you want to continue with the installation? [y/N]: " confirm +case "$confirm" in + [yY][eE][sS]|[yY]) + echo -e "${OK} Continuing with installation..." + ;; + *) + echo -e "${NOTE} You chose not to continue. Exiting..." + exit 1 + ;; +esac # Create Directory for Install Logs if [ ! -d Install-Logs ]; then @@ -61,7 +114,7 @@ fi printf "\n%.0s" {1..2} echo -e "\e[35m ╦╔═┌─┐┌─┐╦ ╦ ╦┬ ┬┌─┐┬─┐┬ ┌─┐┌┐┌┌┬┐ - ╠╩╗│ ││ │║ ╠═╣└┬┘├─┘├┬┘│ ├─┤│││ ││ 2025 + ╠╩╗│ ││ │║ ╠═╣└┬┘├─┘├┬┘│ ├─┤│││ ││ July 2025 ╩ ╩└─┘└─┘╩═╝ ╩ ╩ ┴ ┴ ┴└─┴─┘┴ ┴┘└┘─┴┘ Debian Trixie / SiD \e[0m" printf "\n%.0s" {1..1} @@ -312,8 +365,28 @@ echo "${INFO} Installing ${SKY_BLUE}KooL Hyprland packages...${RESET}" | tee -a sleep 1 execute_script "01-hypr-pkgs.sh" sleep 1 +execute_script "hyprutils.sh" +sleep 1 +execute_script "hyprlang.sh" +sleep 1 +execute_script "hyprcursor.sh" +sleep 1 +execute_script "hyprwayland-scanner.sh" +sleep 1 +execute_script "hyprgraphics.sh" +sleep 1 +execute_script "aquamarine.sh" +sleep 1 +execute_script "hyprland-qt-support.sh" +sleep 1 +execute_script "hyprland-qtutils.sh" +sleep 1 +execute_script "hyprland-protocols.sh" +sleep 1 execute_script "hyprland.sh" sleep 1 +execute_script "hyprpolkitagent.sh" +sleep 1 execute_script "wallust.sh" sleep 1 execute_script "swww.sh" @@ -322,8 +395,6 @@ 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 @@ -429,8 +500,8 @@ execute_script "03-Final-Check.sh" printf "\n%.0s" {1..1} -# Check if either hyprland or hyprland-git is installed -if dpkg -l | grep -qw hyprland; then +# Check if either hyprland or Hyprland files exist in /usr/local/bin/ +if [ -e /usr/local/bin/hyprland ] || [ -f /usr/local/bin/Hyprland ]; then printf "\n ${OK} 👌 Hyprland is installed. However, some essential packages may not be installed. Please see above!" printf "\n${CAT} Ignore this message if it states ${YELLOW}All essential packages${RESET} are installed as per above\n" sleep 2