mirror of
https://github.com/Alkatrazz24/Funk-lab.git
synced 2026-07-12 14:04:41 +02:00
fix(stt): détection navigateur cross-distro (AlmaLinux/Fedora + Debian/Ubuntu)
_open_browser tente les binaires natifs (rpm + deb : brave-browser / chromium / chromium-browser / google-chrome…) puis Flatpak (com.brave.Browser, org.chromium.Chromium, com.google.Chrome…), sinon repli sur le navigateur par défaut. systemd --user, lanceurs .desktop et pipx sont déjà identiques sur les deux familles. Doc : note de compatibilité distros. Bump 0.4.0 → 0.4.1. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017Qjq5jHiqNepnobJpHYpCa
This commit is contained in:
parent
c0da379755
commit
c5de427a85
3 changed files with 35 additions and 7 deletions
|
|
@ -210,6 +210,13 @@ stt --version # version installée
|
||||||
avoir installé via `pipx` depuis git. Astuce : toujours bumper la version du paquet à chaque
|
avoir installé via `pipx` depuis git. Astuce : toujours bumper la version du paquet à chaque
|
||||||
release, sinon le cache de build pipx/uv peut resservir l'ancienne (cf. `pyproject.toml`).
|
release, sinon le cache de build pipx/uv peut resservir l'ancienne (cf. `pyproject.toml`).
|
||||||
|
|
||||||
|
**Compatibilité distros** : tout le client repose sur des standards communs — `systemd --user`,
|
||||||
|
lanceurs `.desktop` (XDG `~/.local/share/applications/`), `pipx` — donc **identique sur
|
||||||
|
AlmaLinux/Fedora (RHEL) et Debian/Ubuntu**. Seul le navigateur diffère : `_open_browser` teste
|
||||||
|
les binaires natifs (rpm + deb) puis **Flatpak** (`com.brave.Browser`, `org.chromium.Chromium`…),
|
||||||
|
sinon repli sur le navigateur par défaut. `update-desktop-database` (`desktop-file-utils`) est
|
||||||
|
optionnel — son absence n'empêche rien.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Roadmap
|
## Roadmap
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
[project]
|
[project]
|
||||||
name = "stt"
|
name = "stt"
|
||||||
version = "0.4.0"
|
version = "0.4.1"
|
||||||
description = "STT — client vocal Jarvis du homelab Funk (voix + HUD, parle au STT-server)"
|
description = "STT — client vocal Jarvis du homelab Funk (voix + HUD, parle au STT-server)"
|
||||||
requires-python = ">=3.11"
|
requires-python = ">=3.11"
|
||||||
readme = "README.md"
|
readme = "README.md"
|
||||||
|
|
|
||||||
|
|
@ -114,21 +114,42 @@ def _run_engine(engine, emit) -> None:
|
||||||
|
|
||||||
|
|
||||||
def _open_browser(url: str, mode: str) -> None:
|
def _open_browser(url: str, mode: str) -> None:
|
||||||
"""Ouvre le HUD. mode : 'app' (fenêtre chromeless, type Discord) | 'kiosk' (plein écran)."""
|
"""Ouvre le HUD. mode : 'app' (fenêtre chromeless, type Discord) | 'kiosk' (plein écran).
|
||||||
|
|
||||||
|
Cross-distro AlmaLinux/Fedora (RHEL) et Debian/Ubuntu : on tente les binaires natifs
|
||||||
|
(noms rpm + deb), puis Flatpak (courant sur Fedora/AlmaLinux), sinon repli sur le
|
||||||
|
navigateur par défaut. Chromium-like : `--app=<url>` = fenêtre sans onglets, `--kiosk` = plein écran.
|
||||||
|
"""
|
||||||
import shutil
|
import shutil
|
||||||
import subprocess
|
import subprocess
|
||||||
import webbrowser
|
import webbrowser
|
||||||
|
|
||||||
# Chromium-like : --app=<url> = fenêtre dédiée sans onglets ; --kiosk = plein écran.
|
flags = ["--kiosk", url] if mode == "kiosk" else [f"--app={url}"]
|
||||||
|
|
||||||
|
# 1) Binaire natif (rpm/deb)
|
||||||
for browser in (
|
for browser in (
|
||||||
"brave-browser", "brave", "chromium", "chromium-browser",
|
"brave-browser", "brave",
|
||||||
|
"chromium", "chromium-browser",
|
||||||
"google-chrome", "google-chrome-stable",
|
"google-chrome", "google-chrome-stable",
|
||||||
|
"microsoft-edge", "vivaldi",
|
||||||
):
|
):
|
||||||
if shutil.which(browser):
|
if shutil.which(browser):
|
||||||
args = [browser, "--kiosk", url] if mode == "kiosk" else [browser, f"--app={url}"]
|
subprocess.Popen([browser, *flags])
|
||||||
subprocess.Popen(args)
|
|
||||||
return
|
return
|
||||||
webbrowser.open(url) # repli : onglet dans le navigateur par défaut
|
|
||||||
|
# 2) Flatpak (universel — souvent la voie sur Fedora/AlmaLinux)
|
||||||
|
if shutil.which("flatpak"):
|
||||||
|
for appid in ("com.brave.Browser", "org.chromium.Chromium",
|
||||||
|
"com.google.Chrome", "com.microsoft.Edge"):
|
||||||
|
installed = subprocess.run(
|
||||||
|
["flatpak", "info", appid], capture_output=True
|
||||||
|
).returncode == 0
|
||||||
|
if installed:
|
||||||
|
subprocess.Popen(["flatpak", "run", appid, *flags])
|
||||||
|
return
|
||||||
|
|
||||||
|
# 3) Repli : onglet dans le navigateur par défaut
|
||||||
|
webbrowser.open(url)
|
||||||
|
|
||||||
|
|
||||||
def _apply_settings(client, engine, data: dict, loop) -> None:
|
def _apply_settings(client, engine, data: dict, loop) -> None:
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue