📦 deps(thirdparty): update snapshots

This commit is contained in:
ci[bot]
2026-07-29 07:59:17 +00:00
parent 60364c6660
commit 0c634043e3
427 changed files with 26138 additions and 2336 deletions
@@ -0,0 +1,65 @@
#!/usr/bin/env bash
set -Eeuo pipefail
# Backup Script for Fedora Hyprland Installer
TIMESTAMP=$(date +"%Y%m%d-%H%M%S")
BACKUP_BASE="${HOME:?HOME is not set}/.local/state/fedora-hyprland-installer/backups"
BACKUP_DIR="${BACKUP_BASE}/${TIMESTAMP}"
echo "=== Hyprland Configuration Backup ==="
echo "Target backup directory: ${BACKUP_DIR}"
CONFIG_ITEMS=(
".config/hypr"
".config/waybar"
".config/wofi"
".config/rofi"
".config/kitty"
".config/alacritty"
".config/dunst"
".config/mako"
)
# Check if any config items exist before creating backup directory
HAS_ITEMS="false"
for item in "${CONFIG_ITEMS[@]}"; do
if [ -e "${HOME}/${item}" ]; then
HAS_ITEMS="true"
break
fi
done
if [ "$HAS_ITEMS" = "false" ]; then
echo "[i] No pre-existing Hyprland configuration files found to back up."
echo "BACKUP_PATH=none"
exit 0
fi
mkdir -p "${BACKUP_DIR}"
BACKED_UP_COUNT=0
for item in "${CONFIG_ITEMS[@]}"; do
SRC_PATH="${HOME}/${item}"
if [ -e "${SRC_PATH}" ]; then
DEST_PATH="${BACKUP_DIR}/${item}"
mkdir -p "$(dirname "${DEST_PATH}")"
if cp -a "${SRC_PATH}" "${DEST_PATH}"; then
echo "[+] Backed up: ~/${item} -> ${DEST_PATH}"
BACKED_UP_COUNT=$((BACKED_UP_COUNT + 1))
else
echo "[!] Warning: Failed to back up ~/${item}"
fi
fi
done
echo "[✓] Successfully created backup of $BACKED_UP_COUNT items at: ${BACKUP_DIR}"
cat <<EOF > "${BACKUP_DIR}/manifest.txt"
Backup Date: $(date)
Backed up items count: ${BACKED_UP_COUNT}
User: $(whoami)
EOF
echo "BACKUP_PATH=${BACKUP_DIR}"
@@ -0,0 +1,158 @@
#!/usr/bin/env bash
set -Eeuo pipefail
# Configuration Script for Fedora Hyprland Installer
echo "=== Configuring Hyprland Desktop Environment ==="
HYPR_DIR="${HOME}/.config/hypr"
HYPR_CONF="${HYPR_DIR}/hyprland.conf"
mkdir -p "${HYPR_DIR}"
# 1. Detect Terminal — find which terminal is actually available
TERMINAL_BIN=""
if command -v kitty &>/dev/null; then
TERMINAL_BIN="kitty"
elif command -v alacritty &>/dev/null; then
TERMINAL_BIN="alacritty"
elif command -v foot &>/dev/null; then
TERMINAL_BIN="foot"
elif command -v gnome-terminal &>/dev/null; then
TERMINAL_BIN="gnome-terminal"
fi
if [ -z "$TERMINAL_BIN" ]; then
echo "[!] Warning: No supported terminal emulator detected. Defaulting to kitty."
TERMINAL_BIN="kitty"
fi
# 2. Detect Launcher
LAUNCHER_BIN=""
if command -v wofi &>/dev/null; then
LAUNCHER_BIN="wofi --show drun"
elif command -v rofi &>/dev/null; then
LAUNCHER_BIN="rofi -show drun"
fi
if [ -z "$LAUNCHER_BIN" ]; then
echo "[!] Warning: No supported application launcher detected. Defaulting to wofi."
LAUNCHER_BIN="wofi --show drun"
fi
# 3. Detect GPU Environment Variables
GPU_CONFIG=""
if command -v lspci &>/dev/null && lspci -nnk 2>/dev/null | grep -iq "nvidia"; then
echo "[i] NVIDIA GPU detected. Adding conservative NVIDIA compatibility settings."
GPU_CONFIG=$(cat <<'ENVEOF'
# NVIDIA compatibility
env = LIBVA_DRIVER_NAME,nvidia
env = GBM_BACKEND,nvidia-drm
env = __GLX_VENDOR_LIBRARY_NAME,nvidia
env = NVD_BACKEND,direct
cursor {
no_hardware_cursors = true
}
ENVEOF
)
fi
# 4. Generate hyprland.conf if missing
if [ ! -f "${HYPR_CONF}" ]; then
echo "[+] Creating clean ${HYPR_CONF}"
cat <<EOF > "${HYPR_CONF}"
# Fedora Hyprland Default Configuration
# Generated by hyprfedora — Antigravity Fedora Hyprland Installer Skill
# Monitor setup (auto detect resolution & position)
monitor=,preferred,auto,1
# Input config
input {
kb_layout = us
follow_mouse = 1
touchpad {
natural_scroll = true
}
}
general {
gaps_in = 5
gaps_out = 10
border_size = 2
col.active_border = rgba(33ccffee) rgba(00ff99ee) 45deg
col.inactive_border = rgba(595959aa)
layout = dwindle
}
decoration {
rounding = 8
blur {
enabled = true
size = 3
passes = 1
}
}
animations {
enabled = true
bezier = myBezier, 0.05, 0.9, 0.1, 1.05
animation = windows, 1, 5, myBezier
animation = windowsOut, 1, 5, default, popin 80%
animation = border, 1, 10, default
animation = fade, 1, 5, default
animation = workspaces, 1, 5, default
}
dwindle {
pseudotile = true
preserve_split = true
}
# Autostart essential services
exec-once = dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP
exec-once = /usr/libexec/polkit-gnome-authentication-agent-1
exec-once = waybar
exec-once = dunst
exec-once = swaybg -c '#1e1e2e'
${GPU_CONFIG}
# Keybindings
\$mainMod = SUPER
bind = \$mainMod, RETURN, exec, ${TERMINAL_BIN}
bind = \$mainMod, SPACE, exec, ${LAUNCHER_BIN}
bind = \$mainMod, Q, killactive,
bind = \$mainMod, M, exit,
bind = \$mainMod, E, exec, nautilus || thunar || pcmanfm
bind = \$mainMod, V, togglefloating,
bind = \$mainMod, R, exec, hyprctl reload
bind = \$mainMod, P, pseudo, # dwindle
bind = \$mainMod, J, togglesplit, # dwindle
# Move focus
bind = \$mainMod, left, movefocus, l
bind = \$mainMod, right, movefocus, r
bind = \$mainMod, up, movefocus, u
bind = \$mainMod, down, movefocus, d
# Switch workspaces
bind = \$mainMod, 1, workspace, 1
bind = \$mainMod, 2, workspace, 2
bind = \$mainMod, 3, workspace, 3
bind = \$mainMod, 4, workspace, 4
bind = \$mainMod, 5, workspace, 5
bind = \$mainMod, 6, workspace, 6
bind = \$mainMod, 7, workspace, 7
bind = \$mainMod, 8, workspace, 8
bind = \$mainMod, 9, workspace, 9
bind = \$mainMod, 0, workspace, 10
# Screenshots
bind = , Print, exec, grim -g "\$(slurp)" - | wl-copy
EOF
echo "[✓] Configuration generated successfully."
else
echo "[i] ${HYPR_CONF} already exists. Skipping default creation to preserve user edits."
fi
@@ -0,0 +1,71 @@
#!/usr/bin/env bash
set -Eeuo pipefail
# GPU Detection Script for Fedora Hyprland Installer
PRIMARY_GPU="unknown"
NVIDIA_DETECTED="false"
AMD_DETECTED="false"
INTEL_DETECTED="false"
IS_HYBRID="false"
NVIDIA_DRIVER_ACTIVE="false"
LSPCI_OUTPUT=""
if command -v lspci &>/dev/null; then
LSPCI_OUTPUT=$(lspci -nnk 2>/dev/null | grep -A 2 -E "VGA|3D" || true)
fi
if echo "$LSPCI_OUTPUT" | grep -iq "nvidia" 2>/dev/null; then
NVIDIA_DETECTED="true"
fi
if echo "$LSPCI_OUTPUT" | grep -iq -E "amd|radeon|advanced micro devices" 2>/dev/null; then
AMD_DETECTED="true"
fi
if echo "$LSPCI_OUTPUT" | grep -iq "intel" 2>/dev/null; then
INTEL_DETECTED="true"
fi
# Count detected GPU vendors
GPU_COUNT=0
if [ "$NVIDIA_DETECTED" = "true" ]; then GPU_COUNT=$((GPU_COUNT + 1)); fi
if [ "$AMD_DETECTED" = "true" ]; then GPU_COUNT=$((GPU_COUNT + 1)); fi
if [ "$INTEL_DETECTED" = "true" ]; then GPU_COUNT=$((GPU_COUNT + 1)); fi
if [ "$GPU_COUNT" -gt 1 ]; then
IS_HYBRID="true"
fi
# Determine primary GPU label
if [ "$NVIDIA_DETECTED" = "true" ] && [ "$IS_HYBRID" = "false" ]; then
PRIMARY_GPU="nvidia"
elif [ "$AMD_DETECTED" = "true" ] && [ "$IS_HYBRID" = "false" ]; then
PRIMARY_GPU="amd"
elif [ "$INTEL_DETECTED" = "true" ] && [ "$IS_HYBRID" = "false" ]; then
PRIMARY_GPU="intel"
elif [ "$IS_HYBRID" = "true" ]; then
if [ "$NVIDIA_DETECTED" = "true" ]; then
PRIMARY_GPU="hybrid-nvidia"
else
PRIMARY_GPU="hybrid-other"
fi
fi
# Check if NVIDIA proprietary driver is loaded
if command -v nvidia-smi &>/dev/null && nvidia-smi &>/dev/null; then
NVIDIA_DRIVER_ACTIVE="true"
elif lsmod 2>/dev/null | grep -q "^nvidia" 2>/dev/null; then
NVIDIA_DRIVER_ACTIVE="true"
fi
cat <<EOF
{
"primary_gpu": "${PRIMARY_GPU}",
"nvidia_detected": ${NVIDIA_DETECTED},
"nvidia_driver_active": ${NVIDIA_DRIVER_ACTIVE},
"amd_detected": ${AMD_DETECTED},
"intel_detected": ${INTEL_DETECTED},
"is_hybrid": ${IS_HYBRID}
}
EOF
@@ -0,0 +1,95 @@
#!/usr/bin/env bash
set -Eeuo pipefail
# System Detection Script for Fedora Hyprland Installer
FEDORA_VERSION="unknown"
if [ -f /etc/fedora-release ]; then
FEDORA_VERSION=$(cat /etc/fedora-release)
fi
KERNEL_RELEASE=$(uname -r)
ARCH=$(uname -m)
CURRENT_USER=$(whoami 2>/dev/null || echo "${USER:-unknown}")
CURRENT_DESKTOP="${XDG_CURRENT_DESKTOP:-unknown}"
SESSION_TYPE="${XDG_SESSION_TYPE:-unknown}"
# Detect Display Manager
DISPLAY_MANAGER="unknown"
for dm in gdm sddm lightdm gdm3; do
if systemctl is-active --quiet "$dm" 2>/dev/null; then
DISPLAY_MANAGER="$dm"
break
fi
done
# Detect Hyprland binary
HYPRLAND_INSTALLED="false"
HYPRLAND_VERSION="none"
if command -v Hyprland &>/dev/null || command -v hyprland &>/dev/null; then
HYPRLAND_INSTALLED="true"
HYPRLAND_VERSION=$(Hyprland --version 2>/dev/null | head -n1 || hyprland --version 2>/dev/null | head -n1 || echo "installed")
fi
# Detect PipeWire & WirePlumber
PIPEWIRE_STATUS="inactive"
if systemctl --user is-active --quiet pipewire 2>/dev/null; then
PIPEWIRE_STATUS="active"
fi
WIREPLUMBER_STATUS="inactive"
if systemctl --user is-active --quiet wireplumber 2>/dev/null; then
WIREPLUMBER_STATUS="active"
fi
# Detect XDG Desktop Portal
PORTAL_INSTALLED="false"
if rpm -q xdg-desktop-portal &>/dev/null; then
PORTAL_INSTALLED="true"
fi
PORTAL_HYPRLAND_INSTALLED="false"
if rpm -q xdg-desktop-portal-hyprland &>/dev/null; then
PORTAL_HYPRLAND_INSTALLED="true"
fi
# Detect CPU
CPU_MODEL="unknown"
if [ -f /proc/cpuinfo ]; then
CPU_MODEL=$(grep -m1 "model name" /proc/cpuinfo | cut -d':' -f2 | sed 's/^ //' || echo "unknown")
fi
# Detect RAM
RAM_TOTAL="unknown"
if [ -f /proc/meminfo ]; then
RAM_KB=$(grep -m1 "MemTotal" /proc/meminfo | awk '{print $2}')
RAM_TOTAL="$((RAM_KB / 1024)) MB"
fi
# Detect Flatpak
FLATPAK_AVAILABLE="false"
if command -v flatpak &>/dev/null; then
FLATPAK_AVAILABLE="true"
fi
# Output JSON-formatted report
cat <<EOF
{
"fedora_release": "${FEDORA_VERSION}",
"kernel": "${KERNEL_RELEASE}",
"arch": "${ARCH}",
"user": "${CURRENT_USER}",
"cpu": "${CPU_MODEL}",
"ram": "${RAM_TOTAL}",
"current_desktop": "${CURRENT_DESKTOP}",
"session_type": "${SESSION_TYPE}",
"display_manager": "${DISPLAY_MANAGER}",
"hyprland_installed": ${HYPRLAND_INSTALLED},
"hyprland_version": "${HYPRLAND_VERSION}",
"pipewire_status": "${PIPEWIRE_STATUS}",
"wireplumber_status": "${WIREPLUMBER_STATUS}",
"portal_installed": ${PORTAL_INSTALLED},
"portal_hyprland_installed": ${PORTAL_HYPRLAND_INSTALLED},
"flatpak_available": ${FLATPAK_AVAILABLE}
}
EOF
@@ -0,0 +1,62 @@
#!/usr/bin/env bash
set -Eeuo pipefail
# Installation Script for Fedora Hyprland Installer
DRY_RUN="false"
UPDATE_MODE="false"
for arg in "$@"; do
case "$arg" in
--dry-run) DRY_RUN="true" ;;
--update) UPDATE_MODE="true" ;;
esac
done
echo "=== Installing Fedora Hyprland Packages ==="
# Base required Fedora packages for Hyprland desktop environment
CORE_PACKAGES=(
"hyprland"
"xdg-desktop-portal"
"xdg-desktop-portal-hyprland"
"xdg-desktop-portal-gtk"
"pipewire"
"wireplumber"
"kitty"
"wofi"
"waybar"
"dunst"
"grim"
"slurp"
"wl-clipboard"
"polkit-gnome"
"swaybg"
)
echo "Packages to ensure installed:"
for pkg in "${CORE_PACKAGES[@]}"; do
echo " - $pkg"
done
if [ "$DRY_RUN" = "true" ]; then
echo "[DRY-RUN] Would run: sudo dnf install -y ${CORE_PACKAGES[*]}"
exit 0
fi
if command -v dnf &>/dev/null; then
if [ "$UPDATE_MODE" = "true" ]; then
echo "[+] Updating Hyprland packages via dnf..."
# dnf install also handles upgrades for already-installed packages,
# ensuring missing packages are installed AND existing ones are updated.
sudo dnf install -y "${CORE_PACKAGES[@]}"
else
echo "[+] Installing Hyprland packages via dnf..."
sudo dnf install -y "${CORE_PACKAGES[@]}"
fi
else
echo "[!] Error: dnf package manager is missing."
exit 1
fi
echo "[✓] Core package installation completed."
@@ -0,0 +1,94 @@
#!/usr/bin/env bash
set -Eeuo pipefail
# Preflight Check Script for Fedora Hyprland Installer
echo "=== Fedora Hyprland Preflight Verification ==="
PASS_COUNT=0
WARN_COUNT=0
FAIL_COUNT=0
log_pass() { echo "[PASS] $1"; PASS_COUNT=$((PASS_COUNT + 1)); }
log_warn() { echo "[WARN] $1"; WARN_COUNT=$((WARN_COUNT + 1)); }
log_fail() { echo "[FAIL] $1"; FAIL_COUNT=$((FAIL_COUNT + 1)); }
# Check 1: Fedora Linux OS
if [ -f /etc/fedora-release ]; then
FEDORA_VER=$(cat /etc/fedora-release)
log_pass "Fedora Linux detected ($FEDORA_VER)"
else
log_fail "Not a Fedora Linux distribution! This skill is Fedora-first."
fi
# Check 2: System Architecture
ARCH=$(uname -m)
if [ "$ARCH" = "x86_64" ] || [ "$ARCH" = "aarch64" ]; then
log_pass "Supported architecture: $ARCH"
else
log_warn "Unusual architecture: $ARCH"
fi
# Check 3: Package Manager (dnf)
if command -v dnf &>/dev/null; then
log_pass "Package manager 'dnf' is available"
else
log_fail "Package manager 'dnf' not found"
fi
# Check 4: Network Access
if ping -c 1 -W 3 fedoraproject.org &>/dev/null || ping -c 1 -W 3 8.8.8.8 &>/dev/null; then
log_pass "Network connectivity active"
else
log_warn "Network connection could not be verified"
fi
# Check 5: Disk Space (require at least 2GB free on /)
FREE_KB=$(df -k / | awk 'NR==2 {print $4}')
FREE_GB=$((FREE_KB / 1024 / 1024))
if [ "$FREE_KB" -gt 2097152 ]; then
log_pass "Sufficient disk space available (${FREE_GB} GB free)"
else
log_warn "Low disk space (${FREE_GB} GB free, <2GB recommended)"
fi
# Check 6: Sudo availability
if command -v sudo &>/dev/null; then
log_pass "Sudo command utility is installed"
else
log_warn "Sudo command utility not found"
fi
# Check 7: Existing Hyprland installation
if command -v Hyprland &>/dev/null || command -v hyprland &>/dev/null; then
log_warn "Hyprland is already installed on this system"
else
log_pass "No existing Hyprland installation detected"
fi
# Check 8: GPU detection quick check
if command -v lspci &>/dev/null; then
GPU_LINE=$(lspci 2>/dev/null | grep -iE "VGA|3D" | head -n1 || echo "")
if [ -n "$GPU_LINE" ]; then
log_pass "GPU detected: $GPU_LINE"
else
log_warn "No GPU detected via lspci"
fi
else
log_warn "lspci not available — cannot detect GPU"
fi
# Check 9: PipeWire status
if systemctl --user is-active --quiet pipewire 2>/dev/null; then
log_pass "PipeWire audio server is running"
else
log_warn "PipeWire is not currently running"
fi
echo "----------------------------------------------"
echo "Preflight Summary: $PASS_COUNT passed, $WARN_COUNT warnings, $FAIL_COUNT failures"
if [ "$FAIL_COUNT" -gt 0 ]; then
exit 1
fi
exit 0
@@ -0,0 +1,92 @@
#!/usr/bin/env bash
set -Eeuo pipefail
# Repair Script for Fedora Hyprland Installer
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
APPLY="false"
if [ "${1:-}" = "--apply" ]; then
APPLY="true"
elif [ "$#" -gt 0 ]; then
echo "Usage: $0 [--apply]" >&2
exit 2
fi
echo "=== Hyprland Repair Subsystem ==="
REPAIRS_MADE=0
# Subsystem 1: Missing or corrupted hyprland.conf
HYPR_CONF="${HOME}/.config/hypr/hyprland.conf"
if [ ! -f "${HYPR_CONF}" ]; then
echo "[!] Missing hyprland.conf detected."
if [ "$APPLY" = "true" ]; then
bash "${SCRIPT_DIR}/configure.sh"
REPAIRS_MADE=$((REPAIRS_MADE + 1))
else
echo "[PLAN] Would run configure.sh to create a minimal configuration."
fi
fi
# Subsystem 2: XDG Desktop Portal repair
if ! rpm -q xdg-desktop-portal-hyprland &>/dev/null; then
echo "[!] Missing xdg-desktop-portal-hyprland."
if [ "$APPLY" = "true" ] && command -v dnf &>/dev/null; then
echo "[+] Installing portal packages..."
if sudo dnf install -y xdg-desktop-portal-hyprland xdg-desktop-portal-gtk; then
REPAIRS_MADE=$((REPAIRS_MADE + 1))
else
echo "[!] Warning: Failed to install portal packages."
fi
elif [ "$APPLY" = "false" ]; then
echo "[PLAN] Would install xdg-desktop-portal-hyprland and xdg-desktop-portal-gtk."
fi
fi
# Subsystem 3: PipeWire / WirePlumber user services
if command -v systemctl &>/dev/null; then
if ! systemctl --user is-active --quiet pipewire 2>/dev/null; then
if [ "$APPLY" = "true" ]; then
echo "[+] Enabling user service: pipewire"
if systemctl --user enable --now pipewire; then
REPAIRS_MADE=$((REPAIRS_MADE + 1))
else
echo "[!] Warning: Failed to enable pipewire."
fi
else
echo "[PLAN] Would enable and start the pipewire user service."
fi
fi
if ! systemctl --user is-active --quiet wireplumber 2>/dev/null; then
if [ "$APPLY" = "true" ]; then
echo "[+] Enabling user service: wireplumber"
if systemctl --user enable --now wireplumber; then
REPAIRS_MADE=$((REPAIRS_MADE + 1))
else
echo "[!] Warning: Failed to enable wireplumber."
fi
else
echo "[PLAN] Would enable and start the wireplumber user service."
fi
fi
fi
# Subsystem 4: Restart user portals
if [ "$APPLY" = "true" ] && command -v systemctl &>/dev/null; then
echo "[+] Resetting XDG portal user services..."
systemctl --user restart xdg-desktop-portal-hyprland 2>/dev/null || true
systemctl --user restart xdg-desktop-portal 2>/dev/null || true
fi
echo "---------------------------------"
if [ "$APPLY" = "false" ]; then
echo "[i] Diagnostic complete. Re-run with --apply after reviewing the plan."
elif [ "$REPAIRS_MADE" -gt 0 ]; then
echo "[✓] Repair complete. $REPAIRS_MADE issues addressed."
else
echo "[i] Repair check finished. No automated issues identified."
fi
if [ "$APPLY" = "true" ]; then
bash "${SCRIPT_DIR}/verify.sh"
fi
@@ -0,0 +1,57 @@
#!/usr/bin/env bash
set -Eeuo pipefail
# Uninstall Script for Fedora Hyprland Installer
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
if [ "${1:-}" != "--yes" ] || [ "$#" -ne 1 ]; then
echo "Usage: $0 --yes" >&2
echo "Review the package list in this script before confirming removal." >&2
exit 2
fi
echo "=== Uninstall Hyprland Setup ==="
PACKAGES_TO_REMOVE=(
"hyprland"
"xdg-desktop-portal-hyprland"
)
echo "The following Hyprland-specific packages will be removed:"
for pkg in "${PACKAGES_TO_REMOVE[@]}"; do
echo " - $pkg"
done
echo ""
echo "Note: Base desktop environments (GNOME, KDE Plasma, Xfce) and user backup files will NOT be touched."
# Run backup prior to uninstallation
if [ -f "${SCRIPT_DIR}/backup.sh" ]; then
echo "[+] Creating final backup before uninstallation..."
bash "${SCRIPT_DIR}/backup.sh" || true
fi
if command -v dnf &>/dev/null; then
echo "[+] Executing dnf removal..."
# Filter to only remove packages that are actually installed
INSTALLED_TO_REMOVE=()
for pkg in "${PACKAGES_TO_REMOVE[@]}"; do
if rpm -q "$pkg" &>/dev/null; then
INSTALLED_TO_REMOVE+=("$pkg")
else
echo "[i] Package '$pkg' is not installed, skipping."
fi
done
if [ "${#INSTALLED_TO_REMOVE[@]}" -gt 0 ]; then
sudo dnf remove -y "${INSTALLED_TO_REMOVE[@]}"
echo "[✓] Hyprland packages removed successfully."
else
echo "[i] No Hyprland packages found to remove."
fi
else
echo "[!] dnf package manager not found."
exit 1
fi
echo "Uninstallation finished cleanly."
@@ -0,0 +1,92 @@
#!/usr/bin/env bash
set -Eeuo pipefail
# Verification Script for Fedora Hyprland Installer
echo "=== Verification Report ==="
STATUS="SUCCESS"
CHECK_PASS=0
CHECK_WARN=0
CHECK_FAIL=0
log_check() {
local level="$1"
local msg="$2"
if [ "$level" = "PASS" ]; then
echo "$msg"
CHECK_PASS=$((CHECK_PASS + 1))
elif [ "$level" = "WARN" ]; then
echo " ! $msg"
CHECK_WARN=$((CHECK_WARN + 1))
else
echo "$msg"
CHECK_FAIL=$((CHECK_FAIL + 1))
fi
}
echo "Components Check:"
# 1. Hyprland executable
if command -v Hyprland &>/dev/null || command -v hyprland &>/dev/null; then
ver=$(Hyprland --version 2>/dev/null | head -n1 || hyprland --version 2>/dev/null | head -n1 || echo "installed")
log_check "PASS" "Hyprland binary found ($ver)"
else
log_check "FAIL" "Hyprland binary not found in PATH"
fi
# 2. Hyprland configuration file
HYPR_CONF="${HOME}/.config/hypr/hyprland.conf"
if [ -f "${HYPR_CONF}" ]; then
log_check "PASS" "Hyprland configuration exists at ${HYPR_CONF}"
else
log_check "FAIL" "Hyprland configuration missing at ${HYPR_CONF}"
fi
# 3. Session Desktop Entry
if [ -f /usr/share/wayland-sessions/hyprland.desktop ]; then
log_check "PASS" "Wayland session entry exists (/usr/share/wayland-sessions/hyprland.desktop)"
else
log_check "WARN" "Wayland session entry missing in /usr/share/wayland-sessions/"
fi
# 4. PipeWire & WirePlumber
if systemctl --user is-active --quiet pipewire 2>/dev/null || pgrep -x pipewire &>/dev/null; then
log_check "PASS" "PipeWire audio server is running"
else
log_check "WARN" "PipeWire audio server is not currently active"
fi
if systemctl --user is-active --quiet wireplumber 2>/dev/null || pgrep -x wireplumber &>/dev/null; then
log_check "PASS" "WirePlumber session manager is running"
else
log_check "WARN" "WirePlumber is not currently active"
fi
# 5. XDG Desktop Portal
if rpm -q xdg-desktop-portal-hyprland &>/dev/null; then
log_check "PASS" "XDG Desktop Portal Hyprland backend installed"
else
log_check "WARN" "XDG Desktop Portal backend for Hyprland not detected"
fi
# Determine overall status
if [ "$CHECK_FAIL" -gt 0 ]; then
STATUS="FAILED"
elif [ "$CHECK_WARN" -gt 0 ]; then
STATUS="PARTIAL"
fi
echo "----------------------------------------"
echo "Installation Status: ${STATUS}"
echo "Checks: ${CHECK_PASS} passed, ${CHECK_WARN} warnings, ${CHECK_FAIL} failed"
if [ "$STATUS" = "SUCCESS" ]; then
echo "Next steps: Log out and select 'Hyprland' from your login screen desktop session menu."
exit 0
elif [ "$STATUS" = "PARTIAL" ]; then
echo "Notice: Installation completed with minor warnings. Review warnings above."
exit 0
else
exit 1
fi