fix : opening link 1
This commit is contained in:
@@ -80,10 +80,47 @@ export function resolveDisplay(): string {
|
||||
return ':0';
|
||||
}
|
||||
|
||||
/** Environnement d'exécution des outils graphiques (xdotool, navigateur). */
|
||||
export function x11Env(): NodeJS.ProcessEnv {
|
||||
/**
|
||||
* Bus de session de l'utilisateur.
|
||||
*
|
||||
* Firefox s'en sert pour confier une URL à l'instance déjà lancée. Sans lui, le
|
||||
* nouveau processus ne la trouve pas, bute sur le verrou de profil et affiche
|
||||
* « Firefox est déjà ouvert » au lieu d'ouvrir la page — c'est le mécanisme
|
||||
* retenu sous Wayland, où le protocole X de remoting n'existe pas.
|
||||
*/
|
||||
export function resolveSessionBus(): string | null {
|
||||
if (process.env.DBUS_SESSION_BUS_ADDRESS) return process.env.DBUS_SESSION_BUS_ADDRESS;
|
||||
|
||||
const runtime = runtimeDir();
|
||||
if (!runtime) return null;
|
||||
|
||||
const socket = path.join(runtime, 'bus');
|
||||
try {
|
||||
if (fs.statSync(socket).isSocket()) return `unix:path=${socket}`;
|
||||
} catch {
|
||||
/* pas de bus de session accessible */
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Environnement d'exécution des outils de session (xdotool, navigateur).
|
||||
*
|
||||
* Un service systemd « system » n'hérite de rien de la session graphique : ni
|
||||
* écran, ni cookie d'autorisation, ni bus. Les trois se résolvent ici, à chaque
|
||||
* appel, pour survivre à un changement de session sans réinstallation.
|
||||
*/
|
||||
export function sessionEnv(): NodeJS.ProcessEnv {
|
||||
const env: NodeJS.ProcessEnv = { ...process.env, DISPLAY: resolveDisplay() };
|
||||
|
||||
const auth = resolveXauthority();
|
||||
if (auth) env.XAUTHORITY = auth;
|
||||
|
||||
const runtime = runtimeDir();
|
||||
if (runtime) env.XDG_RUNTIME_DIR = runtime;
|
||||
|
||||
const bus = resolveSessionBus();
|
||||
if (bus) env.DBUS_SESSION_BUS_ADDRESS = bus;
|
||||
|
||||
return env;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user