2c5f08330a
Rename fws-hypr-keys to fws-keys and extend it to support both Hyprland and i3 desktop environments. The tool now detects the session type and uses appropriate methods: - Hyprland: queries hyprctl binds for real loaded bindings (wofi dmenu) - i3: parses ~/.config/i3/config with variable resolution (rofi dmenu) Update all references in configs and templates. Add VM detection warning in fws-vr-setup to prevent VR attempts in virtual machines where GPU/USB access is unavailable. Add ttf-liberation font dependency for Steam UI stability on minimal installations and improve error guidance for Steam crashes.
116 lines
5.7 KiB
Bash
Executable File
116 lines
5.7 KiB
Bash
Executable File
#!/bin/bash
|
|
# ============================================================================
|
|
# FWS — installation des drivers/runtimes VR selon le casque.
|
|
#
|
|
# À lancer depuis un terminal (Super+Shift+V sous i3, ou l'entrée
|
|
# « Installation VR (FWS) » du menu d'applications). Réservé aux sessions
|
|
# X11 (i3) : SteamVR ne fonctionne PAS sous Wayland/Hyprland.
|
|
#
|
|
# Réalité du support Linux (résumé honnête) :
|
|
# • HTC Vive / Vive Pro / Valve Index (stations lighthouse) → NATIF via
|
|
# SteamVR. C'est le chemin le plus fiable.
|
|
# • Meta/Oculus Quest 1-3, Pico → PAS de support officiel ; streaming
|
|
# Wi-Fi via ALVR (+ SteamVR). ALVR n'est pas dans les dépôts Arch :
|
|
# le script installe la base et donne la marche à suivre.
|
|
# • Oculus Rift CV1/S (filaire) → pas de support utilisable.
|
|
# • Monado : runtime OpenXR libre (déjà proposé par fws-setup-hardware),
|
|
# utile pour les applis OpenXR natives sans SteamVR.
|
|
# ============================================================================
|
|
set -u
|
|
say() { printf '\n\033[1;34m==> %s\033[0m\n' "$*"; }
|
|
warn() { printf '\033[1;33m ⚠ %s\033[0m\n' "$*"; }
|
|
|
|
if [ "$(id -u)" -ne 0 ]; then
|
|
exec sudo "$0" "$@"
|
|
fi
|
|
|
|
# VM = cul-de-sac VR : pas d'accès direct au GPU ni à l'USB/DisplayPort du
|
|
# casque, et Steam (steamwebhelper) est INSTABLE en rendu logiciel (llvmpipe).
|
|
# On prévient au lieu de laisser l'utilisateur croire à une panne de FWS.
|
|
if systemd-detect-virt --quiet 2>/dev/null; then
|
|
warn "Machine VIRTUELLE détectée ($(systemd-detect-virt 2>/dev/null))."
|
|
warn "La VR ne fonctionnera PAS ici : casque et GPU inaccessibles depuis une VM."
|
|
warn "Steam lui-même peut planter en rendu logiciel (steamwebhelper)."
|
|
echo " → Fais cette installation sur la machine RÉELLE avec le casque branché."
|
|
read -rp " Continuer quand même (tests uniquement) ? [o/N] " _ok
|
|
case "$_ok" in o|O|oui) ;; *) exit 0 ;; esac
|
|
fi
|
|
|
|
# lib32 Vulkan selon le GPU (indispensable à SteamVR, qui est 32/64 bits).
|
|
GPU="$(lspci 2>/dev/null | grep -iE 'VGA compatible controller|3D controller|Display controller')"
|
|
LIB32="lib32-mesa"
|
|
case "$GPU" in
|
|
*NVIDIA*|*GeForce*) LIB32="$LIB32 lib32-nvidia-utils" ;;
|
|
*AMD*|*ATI*|*Radeon*) LIB32="$LIB32 lib32-vulkan-radeon" ;;
|
|
*Intel*) LIB32="$LIB32 lib32-vulkan-intel" ;;
|
|
esac
|
|
|
|
install_pkgs() {
|
|
# multilib requis pour Steam/lib32.
|
|
grep -qE '^\[multilib\]' /etc/pacman.conf \
|
|
|| printf '\n[multilib]\nInclude = /etc/pacman.d/mirrorlist\n' >> /etc/pacman.conf
|
|
pacman -Sy --noconfirm || { warn "synchro pacman échouée (réseau ?)"; return 1; }
|
|
local valid="" p
|
|
for p in "$@"; do
|
|
pacman -Si "$p" >/dev/null 2>&1 && valid="$valid $p" || warn "paquet inconnu ignoré : $p"
|
|
done
|
|
# shellcheck disable=SC2086
|
|
pacman -S --noconfirm --needed $valid
|
|
}
|
|
|
|
steamvr_base() {
|
|
say "Installation de la base SteamVR (Steam + Vulkan 32 bits : $LIB32)…"
|
|
# ttf-liberation : polices attendues par l'interface Steam (évite des
|
|
# rendus cassés/plantages cosmétiques sur install minimale).
|
|
# shellcheck disable=SC2086
|
|
install_pkgs steam $LIB32 ttf-liberation || return 1
|
|
say "Base installée. Étapes suivantes :"
|
|
echo " 1. Lance Steam, connecte-toi, puis installe « SteamVR » (Bibliothèque → Outils)."
|
|
echo " 2. Branche le casque et les stations, puis lance SteamVR."
|
|
echo " 3. Premier lancement : SteamVR peut demander à ajuster les règles udev — accepte."
|
|
say "Si Steam PLANTE (fenêtre qui se ferme, souvent steamwebhelper) :"
|
|
echo " • Vérifie l'espace disque (SteamVR ≈ 5 Go) : df -h ~"
|
|
echo " • GPU faible / VM / rendu logiciel — lance :"
|
|
echo " steam -cef-disable-gpu -cef-disable-gpu-compositing"
|
|
echo " • Pour voir l'erreur exacte : lance « steam » depuis un terminal,"
|
|
echo " ou regarde ~/.steam/steam/logs/ (console_log.txt, bootstrap_log.txt)."
|
|
}
|
|
|
|
case "${1:-menu}" in
|
|
menu)
|
|
cat <<'MENU'
|
|
|
|
╔══════════════════════════════════════════════════════════╗
|
|
║ FWS — Installation VR (session X11 requise) ║
|
|
╠══════════════════════════════════════════════════════════╣
|
|
║ 1) HTC Vive / Vive Pro / Valve Index (natif, SteamVR) ║
|
|
║ 2) Meta Quest / Pico (streaming ALVR) ║
|
|
║ 3) Monado (runtime OpenXR libre, sans SteamVR) ║
|
|
║ q) Quitter ║
|
|
╚══════════════════════════════════════════════════════════╝
|
|
MENU
|
|
read -rp " Choix : " choice
|
|
exec "$0" "$choice"
|
|
;;
|
|
1|vive|index)
|
|
steamvr_base || exit 1
|
|
;;
|
|
2|quest|pico)
|
|
steamvr_base || exit 1
|
|
say "Streaming Quest/Pico : il faut AUSSI ALVR (pas dans les dépôts Arch) :"
|
|
echo " 1. Télécharge le .tar.gz « ALVR Launcher » : https://github.com/alvr-org/ALVR/releases"
|
|
echo " 2. Sur le casque, installe le client ALVR (App Lab / SideQuest)."
|
|
echo " 3. Lance ALVR sur le PC (même Wi-Fi 5 GHz que le casque) — il pilote SteamVR."
|
|
;;
|
|
3|monado)
|
|
say "Installation de Monado (OpenXR) + outils…"
|
|
install_pkgs monado || exit 1
|
|
say "Monado installé. Les applis OpenXR le trouvent via /usr/share/openxr/."
|
|
;;
|
|
q|Q) exit 0 ;;
|
|
*) warn "choix inconnu : ${1}"; exec "$0" menu ;;
|
|
esac
|
|
|
|
echo
|
|
read -rp "Terminé — appuie sur Entrée pour fermer. " _
|