mirror of
https://github.com/Alkatrazz24/Funk-lab.git
synced 2026-07-09 06:04:42 +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
|
||||
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
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
[project]
|
||||
name = "stt"
|
||||
version = "0.4.0"
|
||||
version = "0.4.1"
|
||||
description = "STT — client vocal Jarvis du homelab Funk (voix + HUD, parle au STT-server)"
|
||||
requires-python = ">=3.11"
|
||||
readme = "README.md"
|
||||
|
|
|
|||
|
|
@ -114,21 +114,42 @@ def _run_engine(engine, emit) -> 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 subprocess
|
||||
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 (
|
||||
"brave-browser", "brave", "chromium", "chromium-browser",
|
||||
"brave-browser", "brave",
|
||||
"chromium", "chromium-browser",
|
||||
"google-chrome", "google-chrome-stable",
|
||||
"microsoft-edge", "vivaldi",
|
||||
):
|
||||
if shutil.which(browser):
|
||||
args = [browser, "--kiosk", url] if mode == "kiosk" else [browser, f"--app={url}"]
|
||||
subprocess.Popen(args)
|
||||
subprocess.Popen([browser, *flags])
|
||||
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:
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue