opencode-skills-collection 4.0.11 → 4.0.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (55) hide show
  1. package/bundled-skills/.antigravity-install-manifest.json +4 -1
  2. package/bundled-skills/docs/integrations/jetski-cortex.md +3 -3
  3. package/bundled-skills/docs/integrations/jetski-gemini-loader/README.md +1 -1
  4. package/bundled-skills/docs/maintainers/repo-growth-seo.md +1 -1
  5. package/bundled-skills/docs/maintainers/skills-update-guide.md +1 -1
  6. package/bundled-skills/docs/users/aas-core.md +1 -1
  7. package/bundled-skills/docs/users/bundles.md +1 -1
  8. package/bundled-skills/docs/users/claude-code-skills.md +1 -1
  9. package/bundled-skills/docs/users/gemini-cli-skills.md +1 -1
  10. package/bundled-skills/docs/users/kiro-integration.md +1 -1
  11. package/bundled-skills/docs/users/usage.md +3 -3
  12. package/bundled-skills/docs/users/visual-guide.md +4 -4
  13. package/bundled-skills/fedora-hyprland-installer/LICENSE +21 -0
  14. package/bundled-skills/fedora-hyprland-installer/README.md +125 -0
  15. package/bundled-skills/fedora-hyprland-installer/SKILL.md +112 -0
  16. package/bundled-skills/fedora-hyprland-installer/references/amd.md +10 -0
  17. package/bundled-skills/fedora-hyprland-installer/references/fedora.md +24 -0
  18. package/bundled-skills/fedora-hyprland-installer/references/hyprland.md +22 -0
  19. package/bundled-skills/fedora-hyprland-installer/references/intel.md +8 -0
  20. package/bundled-skills/fedora-hyprland-installer/references/nvidia.md +29 -0
  21. package/bundled-skills/fedora-hyprland-installer/references/portals.md +18 -0
  22. package/bundled-skills/fedora-hyprland-installer/references/troubleshooting.md +53 -0
  23. package/bundled-skills/fedora-hyprland-installer/references/wayland.md +9 -0
  24. package/bundled-skills/fedora-hyprland-installer/scripts/backup.sh +65 -0
  25. package/bundled-skills/fedora-hyprland-installer/scripts/configure.sh +158 -0
  26. package/bundled-skills/fedora-hyprland-installer/scripts/detect-gpu.sh +71 -0
  27. package/bundled-skills/fedora-hyprland-installer/scripts/detect-system.sh +95 -0
  28. package/bundled-skills/fedora-hyprland-installer/scripts/install.sh +62 -0
  29. package/bundled-skills/fedora-hyprland-installer/scripts/preflight.sh +94 -0
  30. package/bundled-skills/fedora-hyprland-installer/scripts/repair.sh +92 -0
  31. package/bundled-skills/fedora-hyprland-installer/scripts/uninstall.sh +57 -0
  32. package/bundled-skills/fedora-hyprland-installer/scripts/verify.sh +92 -0
  33. package/bundled-skills/fedora-hyprland-installer/tests/test-detection.sh +22 -0
  34. package/bundled-skills/fedora-hyprland-installer/tests/test-scripts.sh +47 -0
  35. package/bundled-skills/find-complementary-founders/LICENSE.txt +21 -0
  36. package/bundled-skills/find-complementary-founders/SKILL.md +386 -0
  37. package/bundled-skills/find-complementary-founders/agents/openai.yaml +4 -0
  38. package/bundled-skills/find-complementary-founders/references/community-growth.md +140 -0
  39. package/bundled-skills/find-complementary-founders/references/evidence-model.md +94 -0
  40. package/bundled-skills/find-complementary-founders/references/moltbook.md +125 -0
  41. package/bundled-skills/find-complementary-founders/references/owner-onboarding.ru.md +105 -0
  42. package/bundled-skills/find-complementary-founders/references/privacy-safety.md +63 -0
  43. package/bundled-skills/find-complementary-founders/references/profile-schema.md +117 -0
  44. package/bundled-skills/find-complementary-founders/scripts/assess_profile.py +532 -0
  45. package/bundled-skills/find-complementary-founders/scripts/github_thread.py +466 -0
  46. package/bundled-skills/find-complementary-founders/scripts/match_profiles.py +251 -0
  47. package/bundled-skills/find-complementary-founders/scripts/moltbook_publish.py +672 -0
  48. package/bundled-skills/find-complementary-founders/scripts/profile_card.py +307 -0
  49. package/bundled-skills/find-complementary-founders/scripts/validate_profile.py +473 -0
  50. package/bundled-skills/find-complementary-founders/scripts/verify_github_submission.py +296 -0
  51. package/bundled-skills/orchestrate/SKILL.md +61 -0
  52. package/bundled-skills/orchestrate/agents/openai.yaml +4 -0
  53. package/bundled-skills/uizze-ui-research/SKILL.md +47 -12
  54. package/package.json +1 -1
  55. package/skills_index.json +101 -1
@@ -0,0 +1,65 @@
1
+ #!/usr/bin/env bash
2
+ set -Eeuo pipefail
3
+
4
+ # Backup Script for Fedora Hyprland Installer
5
+
6
+ TIMESTAMP=$(date +"%Y%m%d-%H%M%S")
7
+ BACKUP_BASE="${HOME:?HOME is not set}/.local/state/fedora-hyprland-installer/backups"
8
+ BACKUP_DIR="${BACKUP_BASE}/${TIMESTAMP}"
9
+
10
+ echo "=== Hyprland Configuration Backup ==="
11
+ echo "Target backup directory: ${BACKUP_DIR}"
12
+
13
+ CONFIG_ITEMS=(
14
+ ".config/hypr"
15
+ ".config/waybar"
16
+ ".config/wofi"
17
+ ".config/rofi"
18
+ ".config/kitty"
19
+ ".config/alacritty"
20
+ ".config/dunst"
21
+ ".config/mako"
22
+ )
23
+
24
+ # Check if any config items exist before creating backup directory
25
+ HAS_ITEMS="false"
26
+ for item in "${CONFIG_ITEMS[@]}"; do
27
+ if [ -e "${HOME}/${item}" ]; then
28
+ HAS_ITEMS="true"
29
+ break
30
+ fi
31
+ done
32
+
33
+ if [ "$HAS_ITEMS" = "false" ]; then
34
+ echo "[i] No pre-existing Hyprland configuration files found to back up."
35
+ echo "BACKUP_PATH=none"
36
+ exit 0
37
+ fi
38
+
39
+ mkdir -p "${BACKUP_DIR}"
40
+
41
+ BACKED_UP_COUNT=0
42
+
43
+ for item in "${CONFIG_ITEMS[@]}"; do
44
+ SRC_PATH="${HOME}/${item}"
45
+ if [ -e "${SRC_PATH}" ]; then
46
+ DEST_PATH="${BACKUP_DIR}/${item}"
47
+ mkdir -p "$(dirname "${DEST_PATH}")"
48
+ if cp -a "${SRC_PATH}" "${DEST_PATH}"; then
49
+ echo "[+] Backed up: ~/${item} -> ${DEST_PATH}"
50
+ BACKED_UP_COUNT=$((BACKED_UP_COUNT + 1))
51
+ else
52
+ echo "[!] Warning: Failed to back up ~/${item}"
53
+ fi
54
+ fi
55
+ done
56
+
57
+ echo "[✓] Successfully created backup of $BACKED_UP_COUNT items at: ${BACKUP_DIR}"
58
+
59
+ cat <<EOF > "${BACKUP_DIR}/manifest.txt"
60
+ Backup Date: $(date)
61
+ Backed up items count: ${BACKED_UP_COUNT}
62
+ User: $(whoami)
63
+ EOF
64
+
65
+ echo "BACKUP_PATH=${BACKUP_DIR}"
@@ -0,0 +1,158 @@
1
+ #!/usr/bin/env bash
2
+ set -Eeuo pipefail
3
+
4
+ # Configuration Script for Fedora Hyprland Installer
5
+
6
+ echo "=== Configuring Hyprland Desktop Environment ==="
7
+
8
+ HYPR_DIR="${HOME}/.config/hypr"
9
+ HYPR_CONF="${HYPR_DIR}/hyprland.conf"
10
+
11
+ mkdir -p "${HYPR_DIR}"
12
+
13
+ # 1. Detect Terminal — find which terminal is actually available
14
+ TERMINAL_BIN=""
15
+ if command -v kitty &>/dev/null; then
16
+ TERMINAL_BIN="kitty"
17
+ elif command -v alacritty &>/dev/null; then
18
+ TERMINAL_BIN="alacritty"
19
+ elif command -v foot &>/dev/null; then
20
+ TERMINAL_BIN="foot"
21
+ elif command -v gnome-terminal &>/dev/null; then
22
+ TERMINAL_BIN="gnome-terminal"
23
+ fi
24
+
25
+ if [ -z "$TERMINAL_BIN" ]; then
26
+ echo "[!] Warning: No supported terminal emulator detected. Defaulting to kitty."
27
+ TERMINAL_BIN="kitty"
28
+ fi
29
+
30
+ # 2. Detect Launcher
31
+ LAUNCHER_BIN=""
32
+ if command -v wofi &>/dev/null; then
33
+ LAUNCHER_BIN="wofi --show drun"
34
+ elif command -v rofi &>/dev/null; then
35
+ LAUNCHER_BIN="rofi -show drun"
36
+ fi
37
+
38
+ if [ -z "$LAUNCHER_BIN" ]; then
39
+ echo "[!] Warning: No supported application launcher detected. Defaulting to wofi."
40
+ LAUNCHER_BIN="wofi --show drun"
41
+ fi
42
+
43
+ # 3. Detect GPU Environment Variables
44
+ GPU_CONFIG=""
45
+ if command -v lspci &>/dev/null && lspci -nnk 2>/dev/null | grep -iq "nvidia"; then
46
+ echo "[i] NVIDIA GPU detected. Adding conservative NVIDIA compatibility settings."
47
+ GPU_CONFIG=$(cat <<'ENVEOF'
48
+
49
+ # NVIDIA compatibility
50
+ env = LIBVA_DRIVER_NAME,nvidia
51
+ env = GBM_BACKEND,nvidia-drm
52
+ env = __GLX_VENDOR_LIBRARY_NAME,nvidia
53
+ env = NVD_BACKEND,direct
54
+ cursor {
55
+ no_hardware_cursors = true
56
+ }
57
+ ENVEOF
58
+ )
59
+ fi
60
+
61
+ # 4. Generate hyprland.conf if missing
62
+ if [ ! -f "${HYPR_CONF}" ]; then
63
+ echo "[+] Creating clean ${HYPR_CONF}"
64
+ cat <<EOF > "${HYPR_CONF}"
65
+ # Fedora Hyprland Default Configuration
66
+ # Generated by hyprfedora — Antigravity Fedora Hyprland Installer Skill
67
+
68
+ # Monitor setup (auto detect resolution & position)
69
+ monitor=,preferred,auto,1
70
+
71
+ # Input config
72
+ input {
73
+ kb_layout = us
74
+ follow_mouse = 1
75
+ touchpad {
76
+ natural_scroll = true
77
+ }
78
+ }
79
+
80
+ general {
81
+ gaps_in = 5
82
+ gaps_out = 10
83
+ border_size = 2
84
+ col.active_border = rgba(33ccffee) rgba(00ff99ee) 45deg
85
+ col.inactive_border = rgba(595959aa)
86
+ layout = dwindle
87
+ }
88
+
89
+ decoration {
90
+ rounding = 8
91
+ blur {
92
+ enabled = true
93
+ size = 3
94
+ passes = 1
95
+ }
96
+ }
97
+
98
+ animations {
99
+ enabled = true
100
+ bezier = myBezier, 0.05, 0.9, 0.1, 1.05
101
+ animation = windows, 1, 5, myBezier
102
+ animation = windowsOut, 1, 5, default, popin 80%
103
+ animation = border, 1, 10, default
104
+ animation = fade, 1, 5, default
105
+ animation = workspaces, 1, 5, default
106
+ }
107
+
108
+ dwindle {
109
+ pseudotile = true
110
+ preserve_split = true
111
+ }
112
+
113
+ # Autostart essential services
114
+ exec-once = dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP
115
+ exec-once = /usr/libexec/polkit-gnome-authentication-agent-1
116
+ exec-once = waybar
117
+ exec-once = dunst
118
+ exec-once = swaybg -c '#1e1e2e'
119
+ ${GPU_CONFIG}
120
+
121
+ # Keybindings
122
+ \$mainMod = SUPER
123
+
124
+ bind = \$mainMod, RETURN, exec, ${TERMINAL_BIN}
125
+ bind = \$mainMod, SPACE, exec, ${LAUNCHER_BIN}
126
+ bind = \$mainMod, Q, killactive,
127
+ bind = \$mainMod, M, exit,
128
+ bind = \$mainMod, E, exec, nautilus || thunar || pcmanfm
129
+ bind = \$mainMod, V, togglefloating,
130
+ bind = \$mainMod, R, exec, hyprctl reload
131
+ bind = \$mainMod, P, pseudo, # dwindle
132
+ bind = \$mainMod, J, togglesplit, # dwindle
133
+
134
+ # Move focus
135
+ bind = \$mainMod, left, movefocus, l
136
+ bind = \$mainMod, right, movefocus, r
137
+ bind = \$mainMod, up, movefocus, u
138
+ bind = \$mainMod, down, movefocus, d
139
+
140
+ # Switch workspaces
141
+ bind = \$mainMod, 1, workspace, 1
142
+ bind = \$mainMod, 2, workspace, 2
143
+ bind = \$mainMod, 3, workspace, 3
144
+ bind = \$mainMod, 4, workspace, 4
145
+ bind = \$mainMod, 5, workspace, 5
146
+ bind = \$mainMod, 6, workspace, 6
147
+ bind = \$mainMod, 7, workspace, 7
148
+ bind = \$mainMod, 8, workspace, 8
149
+ bind = \$mainMod, 9, workspace, 9
150
+ bind = \$mainMod, 0, workspace, 10
151
+
152
+ # Screenshots
153
+ bind = , Print, exec, grim -g "\$(slurp)" - | wl-copy
154
+ EOF
155
+ echo "[✓] Configuration generated successfully."
156
+ else
157
+ echo "[i] ${HYPR_CONF} already exists. Skipping default creation to preserve user edits."
158
+ fi
@@ -0,0 +1,71 @@
1
+ #!/usr/bin/env bash
2
+ set -Eeuo pipefail
3
+
4
+ # GPU Detection Script for Fedora Hyprland Installer
5
+
6
+ PRIMARY_GPU="unknown"
7
+ NVIDIA_DETECTED="false"
8
+ AMD_DETECTED="false"
9
+ INTEL_DETECTED="false"
10
+ IS_HYBRID="false"
11
+ NVIDIA_DRIVER_ACTIVE="false"
12
+
13
+ LSPCI_OUTPUT=""
14
+ if command -v lspci &>/dev/null; then
15
+ LSPCI_OUTPUT=$(lspci -nnk 2>/dev/null | grep -A 2 -E "VGA|3D" || true)
16
+ fi
17
+
18
+ if echo "$LSPCI_OUTPUT" | grep -iq "nvidia" 2>/dev/null; then
19
+ NVIDIA_DETECTED="true"
20
+ fi
21
+
22
+ if echo "$LSPCI_OUTPUT" | grep -iq -E "amd|radeon|advanced micro devices" 2>/dev/null; then
23
+ AMD_DETECTED="true"
24
+ fi
25
+
26
+ if echo "$LSPCI_OUTPUT" | grep -iq "intel" 2>/dev/null; then
27
+ INTEL_DETECTED="true"
28
+ fi
29
+
30
+ # Count detected GPU vendors
31
+ GPU_COUNT=0
32
+ if [ "$NVIDIA_DETECTED" = "true" ]; then GPU_COUNT=$((GPU_COUNT + 1)); fi
33
+ if [ "$AMD_DETECTED" = "true" ]; then GPU_COUNT=$((GPU_COUNT + 1)); fi
34
+ if [ "$INTEL_DETECTED" = "true" ]; then GPU_COUNT=$((GPU_COUNT + 1)); fi
35
+
36
+ if [ "$GPU_COUNT" -gt 1 ]; then
37
+ IS_HYBRID="true"
38
+ fi
39
+
40
+ # Determine primary GPU label
41
+ if [ "$NVIDIA_DETECTED" = "true" ] && [ "$IS_HYBRID" = "false" ]; then
42
+ PRIMARY_GPU="nvidia"
43
+ elif [ "$AMD_DETECTED" = "true" ] && [ "$IS_HYBRID" = "false" ]; then
44
+ PRIMARY_GPU="amd"
45
+ elif [ "$INTEL_DETECTED" = "true" ] && [ "$IS_HYBRID" = "false" ]; then
46
+ PRIMARY_GPU="intel"
47
+ elif [ "$IS_HYBRID" = "true" ]; then
48
+ if [ "$NVIDIA_DETECTED" = "true" ]; then
49
+ PRIMARY_GPU="hybrid-nvidia"
50
+ else
51
+ PRIMARY_GPU="hybrid-other"
52
+ fi
53
+ fi
54
+
55
+ # Check if NVIDIA proprietary driver is loaded
56
+ if command -v nvidia-smi &>/dev/null && nvidia-smi &>/dev/null; then
57
+ NVIDIA_DRIVER_ACTIVE="true"
58
+ elif lsmod 2>/dev/null | grep -q "^nvidia" 2>/dev/null; then
59
+ NVIDIA_DRIVER_ACTIVE="true"
60
+ fi
61
+
62
+ cat <<EOF
63
+ {
64
+ "primary_gpu": "${PRIMARY_GPU}",
65
+ "nvidia_detected": ${NVIDIA_DETECTED},
66
+ "nvidia_driver_active": ${NVIDIA_DRIVER_ACTIVE},
67
+ "amd_detected": ${AMD_DETECTED},
68
+ "intel_detected": ${INTEL_DETECTED},
69
+ "is_hybrid": ${IS_HYBRID}
70
+ }
71
+ EOF
@@ -0,0 +1,95 @@
1
+ #!/usr/bin/env bash
2
+ set -Eeuo pipefail
3
+
4
+ # System Detection Script for Fedora Hyprland Installer
5
+
6
+ FEDORA_VERSION="unknown"
7
+ if [ -f /etc/fedora-release ]; then
8
+ FEDORA_VERSION=$(cat /etc/fedora-release)
9
+ fi
10
+
11
+ KERNEL_RELEASE=$(uname -r)
12
+ ARCH=$(uname -m)
13
+ CURRENT_USER=$(whoami 2>/dev/null || echo "${USER:-unknown}")
14
+ CURRENT_DESKTOP="${XDG_CURRENT_DESKTOP:-unknown}"
15
+ SESSION_TYPE="${XDG_SESSION_TYPE:-unknown}"
16
+
17
+ # Detect Display Manager
18
+ DISPLAY_MANAGER="unknown"
19
+ for dm in gdm sddm lightdm gdm3; do
20
+ if systemctl is-active --quiet "$dm" 2>/dev/null; then
21
+ DISPLAY_MANAGER="$dm"
22
+ break
23
+ fi
24
+ done
25
+
26
+ # Detect Hyprland binary
27
+ HYPRLAND_INSTALLED="false"
28
+ HYPRLAND_VERSION="none"
29
+ if command -v Hyprland &>/dev/null || command -v hyprland &>/dev/null; then
30
+ HYPRLAND_INSTALLED="true"
31
+ HYPRLAND_VERSION=$(Hyprland --version 2>/dev/null | head -n1 || hyprland --version 2>/dev/null | head -n1 || echo "installed")
32
+ fi
33
+
34
+ # Detect PipeWire & WirePlumber
35
+ PIPEWIRE_STATUS="inactive"
36
+ if systemctl --user is-active --quiet pipewire 2>/dev/null; then
37
+ PIPEWIRE_STATUS="active"
38
+ fi
39
+
40
+ WIREPLUMBER_STATUS="inactive"
41
+ if systemctl --user is-active --quiet wireplumber 2>/dev/null; then
42
+ WIREPLUMBER_STATUS="active"
43
+ fi
44
+
45
+ # Detect XDG Desktop Portal
46
+ PORTAL_INSTALLED="false"
47
+ if rpm -q xdg-desktop-portal &>/dev/null; then
48
+ PORTAL_INSTALLED="true"
49
+ fi
50
+
51
+ PORTAL_HYPRLAND_INSTALLED="false"
52
+ if rpm -q xdg-desktop-portal-hyprland &>/dev/null; then
53
+ PORTAL_HYPRLAND_INSTALLED="true"
54
+ fi
55
+
56
+ # Detect CPU
57
+ CPU_MODEL="unknown"
58
+ if [ -f /proc/cpuinfo ]; then
59
+ CPU_MODEL=$(grep -m1 "model name" /proc/cpuinfo | cut -d':' -f2 | sed 's/^ //' || echo "unknown")
60
+ fi
61
+
62
+ # Detect RAM
63
+ RAM_TOTAL="unknown"
64
+ if [ -f /proc/meminfo ]; then
65
+ RAM_KB=$(grep -m1 "MemTotal" /proc/meminfo | awk '{print $2}')
66
+ RAM_TOTAL="$((RAM_KB / 1024)) MB"
67
+ fi
68
+
69
+ # Detect Flatpak
70
+ FLATPAK_AVAILABLE="false"
71
+ if command -v flatpak &>/dev/null; then
72
+ FLATPAK_AVAILABLE="true"
73
+ fi
74
+
75
+ # Output JSON-formatted report
76
+ cat <<EOF
77
+ {
78
+ "fedora_release": "${FEDORA_VERSION}",
79
+ "kernel": "${KERNEL_RELEASE}",
80
+ "arch": "${ARCH}",
81
+ "user": "${CURRENT_USER}",
82
+ "cpu": "${CPU_MODEL}",
83
+ "ram": "${RAM_TOTAL}",
84
+ "current_desktop": "${CURRENT_DESKTOP}",
85
+ "session_type": "${SESSION_TYPE}",
86
+ "display_manager": "${DISPLAY_MANAGER}",
87
+ "hyprland_installed": ${HYPRLAND_INSTALLED},
88
+ "hyprland_version": "${HYPRLAND_VERSION}",
89
+ "pipewire_status": "${PIPEWIRE_STATUS}",
90
+ "wireplumber_status": "${WIREPLUMBER_STATUS}",
91
+ "portal_installed": ${PORTAL_INSTALLED},
92
+ "portal_hyprland_installed": ${PORTAL_HYPRLAND_INSTALLED},
93
+ "flatpak_available": ${FLATPAK_AVAILABLE}
94
+ }
95
+ EOF
@@ -0,0 +1,62 @@
1
+ #!/usr/bin/env bash
2
+ set -Eeuo pipefail
3
+
4
+ # Installation Script for Fedora Hyprland Installer
5
+
6
+ DRY_RUN="false"
7
+ UPDATE_MODE="false"
8
+
9
+ for arg in "$@"; do
10
+ case "$arg" in
11
+ --dry-run) DRY_RUN="true" ;;
12
+ --update) UPDATE_MODE="true" ;;
13
+ esac
14
+ done
15
+
16
+ echo "=== Installing Fedora Hyprland Packages ==="
17
+
18
+ # Base required Fedora packages for Hyprland desktop environment
19
+ CORE_PACKAGES=(
20
+ "hyprland"
21
+ "xdg-desktop-portal"
22
+ "xdg-desktop-portal-hyprland"
23
+ "xdg-desktop-portal-gtk"
24
+ "pipewire"
25
+ "wireplumber"
26
+ "kitty"
27
+ "wofi"
28
+ "waybar"
29
+ "dunst"
30
+ "grim"
31
+ "slurp"
32
+ "wl-clipboard"
33
+ "polkit-gnome"
34
+ "swaybg"
35
+ )
36
+
37
+ echo "Packages to ensure installed:"
38
+ for pkg in "${CORE_PACKAGES[@]}"; do
39
+ echo " - $pkg"
40
+ done
41
+
42
+ if [ "$DRY_RUN" = "true" ]; then
43
+ echo "[DRY-RUN] Would run: sudo dnf install -y ${CORE_PACKAGES[*]}"
44
+ exit 0
45
+ fi
46
+
47
+ if command -v dnf &>/dev/null; then
48
+ if [ "$UPDATE_MODE" = "true" ]; then
49
+ echo "[+] Updating Hyprland packages via dnf..."
50
+ # dnf install also handles upgrades for already-installed packages,
51
+ # ensuring missing packages are installed AND existing ones are updated.
52
+ sudo dnf install -y "${CORE_PACKAGES[@]}"
53
+ else
54
+ echo "[+] Installing Hyprland packages via dnf..."
55
+ sudo dnf install -y "${CORE_PACKAGES[@]}"
56
+ fi
57
+ else
58
+ echo "[!] Error: dnf package manager is missing."
59
+ exit 1
60
+ fi
61
+
62
+ echo "[✓] Core package installation completed."
@@ -0,0 +1,94 @@
1
+ #!/usr/bin/env bash
2
+ set -Eeuo pipefail
3
+
4
+ # Preflight Check Script for Fedora Hyprland Installer
5
+
6
+ echo "=== Fedora Hyprland Preflight Verification ==="
7
+
8
+ PASS_COUNT=0
9
+ WARN_COUNT=0
10
+ FAIL_COUNT=0
11
+
12
+ log_pass() { echo "[PASS] $1"; PASS_COUNT=$((PASS_COUNT + 1)); }
13
+ log_warn() { echo "[WARN] $1"; WARN_COUNT=$((WARN_COUNT + 1)); }
14
+ log_fail() { echo "[FAIL] $1"; FAIL_COUNT=$((FAIL_COUNT + 1)); }
15
+
16
+ # Check 1: Fedora Linux OS
17
+ if [ -f /etc/fedora-release ]; then
18
+ FEDORA_VER=$(cat /etc/fedora-release)
19
+ log_pass "Fedora Linux detected ($FEDORA_VER)"
20
+ else
21
+ log_fail "Not a Fedora Linux distribution! This skill is Fedora-first."
22
+ fi
23
+
24
+ # Check 2: System Architecture
25
+ ARCH=$(uname -m)
26
+ if [ "$ARCH" = "x86_64" ] || [ "$ARCH" = "aarch64" ]; then
27
+ log_pass "Supported architecture: $ARCH"
28
+ else
29
+ log_warn "Unusual architecture: $ARCH"
30
+ fi
31
+
32
+ # Check 3: Package Manager (dnf)
33
+ if command -v dnf &>/dev/null; then
34
+ log_pass "Package manager 'dnf' is available"
35
+ else
36
+ log_fail "Package manager 'dnf' not found"
37
+ fi
38
+
39
+ # Check 4: Network Access
40
+ if ping -c 1 -W 3 fedoraproject.org &>/dev/null || ping -c 1 -W 3 8.8.8.8 &>/dev/null; then
41
+ log_pass "Network connectivity active"
42
+ else
43
+ log_warn "Network connection could not be verified"
44
+ fi
45
+
46
+ # Check 5: Disk Space (require at least 2GB free on /)
47
+ FREE_KB=$(df -k / | awk 'NR==2 {print $4}')
48
+ FREE_GB=$((FREE_KB / 1024 / 1024))
49
+ if [ "$FREE_KB" -gt 2097152 ]; then
50
+ log_pass "Sufficient disk space available (${FREE_GB} GB free)"
51
+ else
52
+ log_warn "Low disk space (${FREE_GB} GB free, <2GB recommended)"
53
+ fi
54
+
55
+ # Check 6: Sudo availability
56
+ if command -v sudo &>/dev/null; then
57
+ log_pass "Sudo command utility is installed"
58
+ else
59
+ log_warn "Sudo command utility not found"
60
+ fi
61
+
62
+ # Check 7: Existing Hyprland installation
63
+ if command -v Hyprland &>/dev/null || command -v hyprland &>/dev/null; then
64
+ log_warn "Hyprland is already installed on this system"
65
+ else
66
+ log_pass "No existing Hyprland installation detected"
67
+ fi
68
+
69
+ # Check 8: GPU detection quick check
70
+ if command -v lspci &>/dev/null; then
71
+ GPU_LINE=$(lspci 2>/dev/null | grep -iE "VGA|3D" | head -n1 || echo "")
72
+ if [ -n "$GPU_LINE" ]; then
73
+ log_pass "GPU detected: $GPU_LINE"
74
+ else
75
+ log_warn "No GPU detected via lspci"
76
+ fi
77
+ else
78
+ log_warn "lspci not available — cannot detect GPU"
79
+ fi
80
+
81
+ # Check 9: PipeWire status
82
+ if systemctl --user is-active --quiet pipewire 2>/dev/null; then
83
+ log_pass "PipeWire audio server is running"
84
+ else
85
+ log_warn "PipeWire is not currently running"
86
+ fi
87
+
88
+ echo "----------------------------------------------"
89
+ echo "Preflight Summary: $PASS_COUNT passed, $WARN_COUNT warnings, $FAIL_COUNT failures"
90
+
91
+ if [ "$FAIL_COUNT" -gt 0 ]; then
92
+ exit 1
93
+ fi
94
+ exit 0
@@ -0,0 +1,92 @@
1
+ #!/usr/bin/env bash
2
+ set -Eeuo pipefail
3
+
4
+ # Repair Script for Fedora Hyprland Installer
5
+
6
+ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
7
+ APPLY="false"
8
+ if [ "${1:-}" = "--apply" ]; then
9
+ APPLY="true"
10
+ elif [ "$#" -gt 0 ]; then
11
+ echo "Usage: $0 [--apply]" >&2
12
+ exit 2
13
+ fi
14
+
15
+ echo "=== Hyprland Repair Subsystem ==="
16
+
17
+ REPAIRS_MADE=0
18
+
19
+ # Subsystem 1: Missing or corrupted hyprland.conf
20
+ HYPR_CONF="${HOME}/.config/hypr/hyprland.conf"
21
+ if [ ! -f "${HYPR_CONF}" ]; then
22
+ echo "[!] Missing hyprland.conf detected."
23
+ if [ "$APPLY" = "true" ]; then
24
+ bash "${SCRIPT_DIR}/configure.sh"
25
+ REPAIRS_MADE=$((REPAIRS_MADE + 1))
26
+ else
27
+ echo "[PLAN] Would run configure.sh to create a minimal configuration."
28
+ fi
29
+ fi
30
+
31
+ # Subsystem 2: XDG Desktop Portal repair
32
+ if ! rpm -q xdg-desktop-portal-hyprland &>/dev/null; then
33
+ echo "[!] Missing xdg-desktop-portal-hyprland."
34
+ if [ "$APPLY" = "true" ] && command -v dnf &>/dev/null; then
35
+ echo "[+] Installing portal packages..."
36
+ if sudo dnf install -y xdg-desktop-portal-hyprland xdg-desktop-portal-gtk; then
37
+ REPAIRS_MADE=$((REPAIRS_MADE + 1))
38
+ else
39
+ echo "[!] Warning: Failed to install portal packages."
40
+ fi
41
+ elif [ "$APPLY" = "false" ]; then
42
+ echo "[PLAN] Would install xdg-desktop-portal-hyprland and xdg-desktop-portal-gtk."
43
+ fi
44
+ fi
45
+
46
+ # Subsystem 3: PipeWire / WirePlumber user services
47
+ if command -v systemctl &>/dev/null; then
48
+ if ! systemctl --user is-active --quiet pipewire 2>/dev/null; then
49
+ if [ "$APPLY" = "true" ]; then
50
+ echo "[+] Enabling user service: pipewire"
51
+ if systemctl --user enable --now pipewire; then
52
+ REPAIRS_MADE=$((REPAIRS_MADE + 1))
53
+ else
54
+ echo "[!] Warning: Failed to enable pipewire."
55
+ fi
56
+ else
57
+ echo "[PLAN] Would enable and start the pipewire user service."
58
+ fi
59
+ fi
60
+ if ! systemctl --user is-active --quiet wireplumber 2>/dev/null; then
61
+ if [ "$APPLY" = "true" ]; then
62
+ echo "[+] Enabling user service: wireplumber"
63
+ if systemctl --user enable --now wireplumber; then
64
+ REPAIRS_MADE=$((REPAIRS_MADE + 1))
65
+ else
66
+ echo "[!] Warning: Failed to enable wireplumber."
67
+ fi
68
+ else
69
+ echo "[PLAN] Would enable and start the wireplumber user service."
70
+ fi
71
+ fi
72
+ fi
73
+
74
+ # Subsystem 4: Restart user portals
75
+ if [ "$APPLY" = "true" ] && command -v systemctl &>/dev/null; then
76
+ echo "[+] Resetting XDG portal user services..."
77
+ systemctl --user restart xdg-desktop-portal-hyprland 2>/dev/null || true
78
+ systemctl --user restart xdg-desktop-portal 2>/dev/null || true
79
+ fi
80
+
81
+ echo "---------------------------------"
82
+ if [ "$APPLY" = "false" ]; then
83
+ echo "[i] Diagnostic complete. Re-run with --apply after reviewing the plan."
84
+ elif [ "$REPAIRS_MADE" -gt 0 ]; then
85
+ echo "[✓] Repair complete. $REPAIRS_MADE issues addressed."
86
+ else
87
+ echo "[i] Repair check finished. No automated issues identified."
88
+ fi
89
+
90
+ if [ "$APPLY" = "true" ]; then
91
+ bash "${SCRIPT_DIR}/verify.sh"
92
+ fi
@@ -0,0 +1,57 @@
1
+ #!/usr/bin/env bash
2
+ set -Eeuo pipefail
3
+
4
+ # Uninstall Script for Fedora Hyprland Installer
5
+
6
+ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
7
+ if [ "${1:-}" != "--yes" ] || [ "$#" -ne 1 ]; then
8
+ echo "Usage: $0 --yes" >&2
9
+ echo "Review the package list in this script before confirming removal." >&2
10
+ exit 2
11
+ fi
12
+
13
+ echo "=== Uninstall Hyprland Setup ==="
14
+
15
+ PACKAGES_TO_REMOVE=(
16
+ "hyprland"
17
+ "xdg-desktop-portal-hyprland"
18
+ )
19
+
20
+ echo "The following Hyprland-specific packages will be removed:"
21
+ for pkg in "${PACKAGES_TO_REMOVE[@]}"; do
22
+ echo " - $pkg"
23
+ done
24
+
25
+ echo ""
26
+ echo "Note: Base desktop environments (GNOME, KDE Plasma, Xfce) and user backup files will NOT be touched."
27
+
28
+ # Run backup prior to uninstallation
29
+ if [ -f "${SCRIPT_DIR}/backup.sh" ]; then
30
+ echo "[+] Creating final backup before uninstallation..."
31
+ bash "${SCRIPT_DIR}/backup.sh" || true
32
+ fi
33
+
34
+ if command -v dnf &>/dev/null; then
35
+ echo "[+] Executing dnf removal..."
36
+ # Filter to only remove packages that are actually installed
37
+ INSTALLED_TO_REMOVE=()
38
+ for pkg in "${PACKAGES_TO_REMOVE[@]}"; do
39
+ if rpm -q "$pkg" &>/dev/null; then
40
+ INSTALLED_TO_REMOVE+=("$pkg")
41
+ else
42
+ echo "[i] Package '$pkg' is not installed, skipping."
43
+ fi
44
+ done
45
+
46
+ if [ "${#INSTALLED_TO_REMOVE[@]}" -gt 0 ]; then
47
+ sudo dnf remove -y "${INSTALLED_TO_REMOVE[@]}"
48
+ echo "[✓] Hyprland packages removed successfully."
49
+ else
50
+ echo "[i] No Hyprland packages found to remove."
51
+ fi
52
+ else
53
+ echo "[!] dnf package manager not found."
54
+ exit 1
55
+ fi
56
+
57
+ echo "Uninstallation finished cleanly."