fix : Firefox handling 1
All checks were successful
release / build (push) Successful in 26s
release / verify-windows (push) Successful in 1m13s

This commit is contained in:
jeanotx32
2026-08-12 02:05:35 +02:00
parent 77bfa0b8c5
commit dcbc846ae7
4 changed files with 168 additions and 17 deletions

View File

@@ -193,8 +193,7 @@ Séquence du rappel de plein écran, dans cet ordre volontaire :
**Un profil Firefox dédié est obligatoire**, pas cosmétique : le port de pilotage ne
s'ouvre qu'au démarrage du processus, et deux instances ne peuvent pas partager un profil.
L'agent en gère un sous `~/.stream-control/firefox-profile` et y réécrit un `user.js` à
chaque lancement — chaque préférence y supprime quelque chose qui finirait dans le fichier
L'agent en gère un et y réécrit un `user.js` à chaque lancement — chaque préférence y supprime quelque chose qui finirait dans le fichier
enregistré, ou qui empêcherait un démarrage sans surveillance :
| Préférence | Pourquoi |
@@ -205,6 +204,26 @@ enregistré, ou qui empêcherait un démarrage sans surveillance :
| `browser.sessionstore.resume_from_crash = false` | un dialogue modal bloquerait toute commande |
| `app.update.auto = false` | une mise à jour fermerait la fenêtre que capture OBS, en plein enregistrement |
#### Firefox en snap (Ubuntu)
Sur Ubuntu, `firefox` est un snap, et cela impose deux choses.
L'interface `home` d'un snap **exclut délibérément les fichiers et répertoires cachés**
ceux commençant par un point, réputés contenir des données sensibles. Un profil sous
`~/.stream-control/` y est donc inaccessible, et Firefox meurt sans jamais ouvrir son port.
L'agent détecte le paquet snap en suivant la chaîne de liens de la commande
(`/usr/bin/firefox``/snap/bin/firefox``/usr/bin/snap`) et place alors son profil sous
`~/snap/firefox/common/stream-control-profile`. Un profil explicitement configuré dans un
répertoire caché est refusé **avant** le lancement, avec l'explication.
Par ailleurs, `firefox` n'est ici qu'un lanceur : il passe la main au snap et **sort
aussitôt en code 0** pendant que le vrai navigateur démarre derrière. L'agent ne traite donc
qu'une sortie non nulle comme un échec ; sinon il abandonnerait le cas nominal au bout de
quelques centaines de millisecondes.
La sortie de Firefox est redirigée vers `<profil>/firefox.log`, et ses dernières lignes
accompagnent tout échec de démarrage — c'est le seul endroit où il explique son refus.
**Au premier passage en BiDi, une nouvelle fenêtre Firefox s'ouvre** : pointe la source
« capture de fenêtre » d'OBS dessus une fois. Ensuite elle survit aux enregistrements
comme aux redémarrages de l'agent — le processus est lancé détaché, et l'agent se