Enhance quickshell with Fedora version detection and COPR availability checking

- Added Fedora version detection to identify system capabilities
- Implemented COPR availability check before installation attempt
- Added graceful fallback to AGS with informative messaging for unsupported versions (Rawhide, etc.)
- Improved installation verification via rpm package check
- Updated install.sh UI to clarify quickshell availability depends on COPR support
- Fixed shellcheck warnings: SC2066 (loop expansion) and SC1091 (dynamic source)
- Script now completes successfully even if quickshell unavailable, with clear user messaging
- Updated COPR to sdegler/hyprland for Fedora43/Rawhide support
This commit is contained in:
Don Williams
2025-11-30 20:23:23 -05:00
parent b1e440cc35
commit 622b9a69f3
4 changed files with 59 additions and 11 deletions

View File

@@ -1,6 +1,15 @@
## CHANGELOGS
## Dec 2025
## Nov 2025 (Late Nov)
- Enhanced quickshell.sh with Fedora version detection and COPR availability checking
- Added graceful fallback messaging for Rawhide and other unsupported Fedora versions
- Improved installation verification and error handling for quickshell package
- Updated install.sh UI to inform users about quickshell COPR support dependency
- Fixed shellcheck warnings in quickshell.sh (SC2066, SC1091)
- Updated COPR to `sdegler/hyprland` Support Fedora43/Rawhide
## Nov 2025 (Earlier)
- Updated Quickshell-Overview integration with corrected IPC commands
- Fixed OverviewToggle.sh script to use proper `qs ipc` syntax

View File

@@ -12,9 +12,11 @@
# solopasha/hyprland # No longer getting updated
# Replaced with sdegler/hypr-test 11/21/2025
# Replaced sdegler/hypr-test with lionheartp/Hyprland 11/24/25
# Replaced lionheartp/Hyprland with updated sdegler/hyprland COPR
# Sdegler supports RAWHIDE and Fedora 43
COPR_REPOS=(
lionheartp/Hyprland
sdegler/hyprland
erikreider/SwayNotificationCenter
errornointernet/packages
tofik/nwg-shell

View File

@@ -14,8 +14,8 @@ SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
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
# shellcheck source=./Global_functions.sh disable=SC1091
if ! source "$(dirname "$(readlink -f "$0")")\Global_functions.sh"; then
echo "Failed to source Global_functions.sh"
exit 1
fi
@@ -23,10 +23,24 @@ fi
# Set the name of the log file to include the current date and time
LOG="Install-Logs/install-$(date +%d-%H%M%S)_qshell.log"
# Function to get Fedora version
get_fedora_version() {
if [ -f /etc/fedora-release ]; then
grep -oP '\d+' /etc/fedora-release | head -1
else
echo "unknown"
fi
}
# Get Fedora version for logging
FEDORA_VERSION=$(get_fedora_version)
printf "\n%s - Detecting system: ${SKY_BLUE}Fedora ${FEDORA_VERSION}${RESET} \n" "${NOTE}"
echo "${INFO} Fedora version detected: ${FEDORA_VERSION}" | tee -a "$LOG"
# Enable quickshell COPR Repositories
printf "\n%s - Adding ${SKY_BLUE}Quickshell COPR repo${RESET} \n" "${NOTE}"
for repo in "$COPR_QUICK"; do
for repo in $COPR_QUICK; do
sudo dnf copr enable -y "$repo" 2>&1 | tee -a "$LOG" || { printf "%s - Failed to enable quickshell copr repo\n" "${ERROR}"; exit 1; }
done
@@ -35,11 +49,34 @@ printf "\n%.0s" {1..1}
# Installation of main components
printf "\n%s - Installing ${SKY_BLUE}Quickshell for Desktop Overview${RESET} \n" "${NOTE}"
# Install quickshell
echo -e "\n${NOTE} - Installing ${SKY_BLUE}Quickshell for Desktop Overview${RESET}"
for pkg in "${quick[@]}"; do
install_package "$pkg" "$LOG"
done
# Check if quickshell is available in the COPR repo
printf "\n%s - Checking ${SKY_BLUE}Quickshell availability${RESET} in COPR... \n" "${NOTE}"
if ! sudo dnf list --available "quickshell" 2>&1 | grep -q "quickshell"; then
printf "\n%s - ${YELLOW}Quickshell not found${RESET} in COPR for Fedora ${FEDORA_VERSION}\n" "${WARN}"
printf "\n%s - This is ${YELLOW}known to occur${RESET} on Fedora Rawhide when the package hasn't been rebuilt\n" "${NOTE}"
printf "\n%s - ${SKY_BLUE}Fallback option available${RESET}: AGS (Aylur's GTK Shell) will be used instead\n" "${INFO}"
printf "\n%s - The ${SKY_BLUE}Hyprland-Dots OverviewToggle.sh${RESET} script will automatically detect and use AGS\n" "${INFO}"
printf "\n%s - You can install Quickshell manually later if it becomes available for your Fedora version\n" "${NOTE}"
echo "${WARN} Quickshell unavailable for Fedora ${FEDORA_VERSION}. AGS fallback will be used." | tee -a "$LOG"
printf "\n%.0s" {1..1}
else
# Install quickshell
echo -e "\n${NOTE} - Installing ${SKY_BLUE}Quickshell for Desktop Overview${RESET}"
for pkg in "${quick[@]}"; do
install_package "$pkg" "$LOG"
done
# Verify installation
if rpm -q quickshell &>/dev/null; then
echo -e "\n${OK} ${SKY_BLUE}Quickshell${RESET} installed successfully for Fedora ${FEDORA_VERSION}"
echo "${OK} Quickshell successfully installed." | tee -a "$LOG"
else
printf "\n%s - ${YELLOW}Quickshell installation failed${RESET} unexpectedly\n" "${WARN}"
printf "\n%s - ${SKY_BLUE}Fallback option available${RESET}: AGS (Aylur's GTK Shell) will be used instead\n" "${INFO}"
printf "\n%s - The ${SKY_BLUE}Hyprland-Dots OverviewToggle.sh${RESET} script will automatically detect and use AGS\n" "${INFO}"
echo "${WARN} Quickshell installation failed. AGS fallback will be used." | tee -a "$LOG"
fi
fi
# NOTE: AGS is no longer removed to allow both AGS and Quickshell to coexist
# The Hyprland-Dots OverviewToggle.sh script handles fallback between them

View File

@@ -202,7 +202,7 @@ options_command+=(
"gtk_themes" "Install GTK themes (required for Dark/Light function)" "OFF"
"bluetooth" "Do you want script to configure Bluetooth?" "OFF"
"thunar" "Do you want Thunar file manager to be installed?" "OFF"
"quickshell" "Install quickshell for Desktop-Like Overview" "OFF"
"quickshell" "Install quickshell for Desktop-Like Overview (availability depends on COPR support for your Fedora version)" "OFF"
"xdph" "Install XDG-DESKTOP-PORTAL-HYPRLAND (for screen share)?" "OFF"
"zsh" "Install zsh shell with Oh-My-Zsh?" "OFF"
"pokemon" "Add Pokemon color scripts to your terminal?" "OFF"