Name: shiva-deck-hub Version: 1.0 Release: 17%{?dist} Summary: ShivaOS Deck Hub — Gaming launcher controller-navigable License: MIT URL: https://deck.shivaos.com BuildArch: noarch BuildRequires: python3 Source0: shiva-deck-hub.py Source1: shiva-deck-hub.svg Source2: hub.html Source3: shiva-tdp-daemon Requires: python3, python3-pyqt6 Requires: python3-qt6-webengine Requires: python3-evdev %description Launcher gaming plein écran et navigable à la manette pour ShivaOS Steam Edition. Accès rapide Steam, Heroic, Lutris, TDP, mises à jour et plus. Rendu via QtWebEngine (Chromium) pour un visuel identique au launcher Windows. Inclut le daemon TDP (socket Unix root) et un son de démarrage console. %prep # no prep %build # no build %install mkdir -p %{buildroot}/usr/share/shiva-deck-hub mkdir -p %{buildroot}/usr/bin mkdir -p %{buildroot}/usr/share/applications mkdir -p %{buildroot}/usr/share/icons/hicolor/scalable/apps mkdir -p %{buildroot}/usr/lib/systemd/system install -m755 %{_sourcedir}/shiva-deck-hub.py \ %{buildroot}/usr/share/shiva-deck-hub/shiva-deck-hub.py install -m644 %{_sourcedir}/hub.html \ %{buildroot}/usr/share/shiva-deck-hub/hub.html install -m644 %{_sourcedir}/shiva-deck-hub.svg \ %{buildroot}/usr/share/icons/hicolor/scalable/apps/shiva-deck-hub.svg install -m755 %{_sourcedir}/shiva-tdp-daemon \ %{buildroot}/usr/bin/shiva-tdp-daemon # Service systemd pour le daemon TDP root cat > %{buildroot}/usr/lib/systemd/system/shiva-tdp.service << 'EOF' [Unit] Description=ShivaOS TDP Control Daemon After=local-fs.target [Service] Type=simple ExecStart=/usr/bin/shiva-tdp-daemon Restart=always User=root [Install] WantedBy=multi-user.target EOF # Son de démarrage console (synth 3 harmoniques, 1.6s, 44100Hz stéréo) python3 << 'PYEOF' import wave, struct, math, os dst = os.path.join(os.environ.get('RPM_BUILD_ROOT', ''), 'usr/share/shiva-deck-hub/startup.wav') os.makedirs(os.path.dirname(dst), exist_ok=True) rate = 44100; dur = 1.6; n = int(rate * dur) data = [] for i in range(n): t = i / rate f1 = 110 + 330 * (t / dur) ** 0.5 f2, f3 = f1 * 2.0, f1 * 3.0 env = min(t / 0.12, 1.0) * min((dur - t) / 0.5, 1.0) v = int(24000 * env * ( 0.60 * math.sin(2 * math.pi * f1 * t) + 0.25 * math.sin(2 * math.pi * f2 * t) + 0.15 * math.sin(2 * math.pi * f3 * t))) v = max(-32767, min(32767, v)) data.append(struct.pack(' %{buildroot}/usr/bin/shiva-deck-hub << 'EOF' #!/bin/bash exec python3 /usr/share/shiva-deck-hub/shiva-deck-hub.py "$@" EOF chmod 755 %{buildroot}/usr/bin/shiva-deck-hub cat > %{buildroot}/usr/share/applications/shiva-deck-hub.desktop << 'EOF' [Desktop Entry] Version=1.0 Type=Application Name=ShivaOS Deck Hub GenericName=Gaming Hub Comment=Gaming launcher controller-navigable pour ShivaOS Steam Edition Exec=shiva-deck-hub Icon=shiva-deck-hub Terminal=false Categories=Game; Keywords=gaming;deck;launcher;shivaos;steam; StartupWMClass=shiva-deck-hub X-KDE-StartupNotify=false EOF %files /usr/share/shiva-deck-hub/shiva-deck-hub.py /usr/share/shiva-deck-hub/hub.html /usr/share/shiva-deck-hub/startup.wav /usr/bin/shiva-deck-hub /usr/bin/shiva-tdp-daemon /usr/lib/systemd/system/shiva-tdp.service /usr/share/applications/shiva-deck-hub.desktop /usr/share/icons/hicolor/scalable/apps/shiva-deck-hub.svg %changelog * Sun Jun 21 2026 Cédric - 1.0-17 - Panneau Réseau complet (WiFi scan/connect, LAN DHCP/statique, Bluetooth, Infos Système) - Tiles "Réseau" et "Infos Système" dans le hub (catégorie Système) - Onglets WiFi / LAN / Bluetooth / Système dans le panneau réseau - Scan WiFi avec barres signal, connexion avec mot de passe - Config LAN DHCP ou IP statique via nmcli - Scan Bluetooth : coupler, connecter, déconnecter, retirer un périphérique - Infos Système : CPU, GPU, RAM, disque, kernel, OS, températures (barres de progression) * Sat Jun 21 2026 Cédric - 1.0-16 - Toast MAJ style console : vérif silencieuse 8s après démarrage, notification bas-droite - Barre de progression animée (téléchargement 0→70%, installation 70→95%, puis 100%) - onUpgradeDone() : compte à rebours 10s puis reboot automatique - onUpgradeFailed() : bouton Réessayer - UpgradeWorker QThread + slot start_upgrade() + reboot_now() - Bouton Bureau KDE dans tile Session → minimize instantané (sans reboot) - KWin rule : hub Always On Top + fullscreen forcé * Sat Jun 21 2026 Cédric - 1.0-15 - Bouton "Bureau KDE" dans tile Session → minimize_hub() instantané (sans reboot) - Bouton "Gamescope Steam" conservé pour handhelds (avec reboot) - Descriptions des boutons session (accès bureau vs mode handheld) * Sat Jun 21 2026 Cédric - 1.0-14 - 🍌 Banane dans le splash screen (essentiel) * Sat Jun 21 2026 Cédric - 1.0-13 - Fix build : BuildRequires python3 pour génération startup.wav dans %install * Sat Jun 21 2026 Cédric - 1.0-12 - Splash screen instantané SHIVA OS / STEAM EDITION (QStackedWidget, affiché avant Chromium) - Son de démarrage console startup.wav (synth 3 harmoniques, 1.6s, joué via paplay/pw-play) - TDP sans pkexec : daemon root shiva-tdp-daemon + socket Unix /run/shiva-tdp.sock - Service systemd shiva-tdp.service (User=root, Restart=always) - Tile Discord remise dans le hub (catégorie Social) - Bouton "Installer et redémarrer" visible uniquement quand MAJ détectée * Sat Jun 21 2026 Cédric - 1.0-11 - Tile Discord remise (catégorie Social, flatpak com.discordapp.Discord, violet #5865F2) * Sat Jun 21 2026 Cédric - 1.0-10 - Fix check_updates() : utilise UpdateWorker._result (w.wait() bloque le main thread Qt) - Ajout bouton "Installer et redémarrer" visible uniquement quand une MAJ est détectée - Ajout install_updates() Python slot : rpm-ostree upgrade && systemctl reboot * Sat Jun 21 2026 Cédric - 1.0-9 - Screenshots Flathub en fond hero (Steam, Heroic, Lutris, Bottles, Kodi, ProtonPlus, GOverlay) - Debounce 180ms navigation clavier/manette (fix défilement multiple) - LB/RB manette (BTN 310/311) pour changer de catégorie - Hints affichent LB/RB * Sat Jun 21 2026 Cédric - 1.0-8 - Logos réels Flathub/simpleicons pour toutes les tiles (Heroic, Lutris, Bottles, Discord, Kodi, ProtonPlus, ProtonDB, GOverlay, KDE, AMD) - Suppression label mlbl résiduel (song sous le bouton Lancer) - Ajout qwebchannel.js pour activer le bridge Python QWebChannel (bouton Lancer fonctionnel) * Sat Jun 21 2026 Cédric - 1.0-7 - Remplacement complet PyQt6 widgets → QtWebEngine (Chromium) - hub.html installé dans /usr/share/shiva-deck-hub/ (même design que launcher Windows) - QWebChannel bridge Python ↔ JS : launch_app, set_tdp, check_updates, battery_status - GamepadThread émet des noms de touches JS (ArrowLeft/Right/Up/Down, Enter, Escape) - Nouvelle dépendance : python3-qt6-webengine * Thu May 29 2026 Cédric - 1.0-1 - Initial release — Gaming hub controller-navigable pour Deck Edition