Feat : open link on current firefox session
This commit is contained in:
@@ -379,20 +379,36 @@ export interface BrowserSettings {
|
||||
enabled: boolean;
|
||||
/** Exécutable du navigateur. */
|
||||
command: string;
|
||||
/** Arguments placés avant l'URL. */
|
||||
/**
|
||||
* Arguments placés avant l'URL. Vide par défaut, et ce n'est pas un oubli :
|
||||
* `--new-window` créerait une fenêtre neuve à chaque capture, avec un nouvel
|
||||
* identifiant X11 — la source « capture de fenêtre » d'OBS perdrait sa cible
|
||||
* et il faudrait la repointer à la main. Sans argument, Firefox confie l'URL à
|
||||
* la fenêtre déjà ouverte, qu'OBS continue de capturer.
|
||||
*/
|
||||
args: string[];
|
||||
/** Délai avant l'envoi du plein écran, le temps que le lecteur démarre. */
|
||||
readyDelayMs: number;
|
||||
/** Fermer la fenêtre quand l'enregistrement s'arrête. */
|
||||
closeOnStop: boolean;
|
||||
/**
|
||||
* Sort de la fenêtre à l'arrêt de l'enregistrement.
|
||||
*
|
||||
* `blank` charge une page vide : la fenêtre survit, donc la source OBS aussi,
|
||||
* et le lecteur cesse de décoder la vidéo. `close` ferme la fenêtre — c'est
|
||||
* précisément ce qui casse la capture OBS. `keep` ne touche à rien et laisse
|
||||
* le flux tourner.
|
||||
*/
|
||||
onStop: BrowserStopAction;
|
||||
}
|
||||
|
||||
export const BROWSER_STOP_ACTIONS = ['blank', 'keep', 'close'] as const;
|
||||
export type BrowserStopAction = (typeof BROWSER_STOP_ACTIONS)[number];
|
||||
|
||||
export const DEFAULT_BROWSER_SETTINGS: BrowserSettings = {
|
||||
enabled: false,
|
||||
command: 'firefox',
|
||||
args: ['--new-window'],
|
||||
args: [],
|
||||
readyDelayMs: 8000,
|
||||
closeOnStop: true,
|
||||
onStop: 'blank',
|
||||
};
|
||||
|
||||
export function normalizeBrowserSettings(raw: unknown): BrowserSettings {
|
||||
@@ -412,10 +428,21 @@ export function normalizeBrowserSettings(raw: unknown): BrowserSettings {
|
||||
readyDelayMs: Number.isFinite(delay)
|
||||
? Math.min(Math.max(Math.round(delay), 0), 120_000)
|
||||
: base.readyDelayMs,
|
||||
closeOnStop: input.closeOnStop !== false,
|
||||
onStop: readStopAction(raw),
|
||||
};
|
||||
}
|
||||
|
||||
/** Lit le sort de la fenêtre, en acceptant l'ancien booléen `closeOnStop`. */
|
||||
function readStopAction(raw: unknown): BrowserStopAction {
|
||||
const input = (raw ?? {}) as Partial<BrowserSettings> & { closeOnStop?: boolean };
|
||||
if ((BROWSER_STOP_ACTIONS as readonly string[]).includes(input.onStop as string)) {
|
||||
return input.onStop as BrowserStopAction;
|
||||
}
|
||||
// Configuration écrite avant l'introduction du choix à trois valeurs.
|
||||
if (typeof input.closeOnStop === 'boolean') return input.closeOnStop ? 'close' : 'keep';
|
||||
return DEFAULT_BROWSER_SETTINGS.onStop;
|
||||
}
|
||||
|
||||
export const DEFAULT_WATCH_SETTINGS: WatchSettings = {
|
||||
enabled: false,
|
||||
provider: 'stripchat',
|
||||
|
||||
Reference in New Issue
Block a user