Use wayland if possible on linux
All checks were successful
Queue Release Build / prepare (push) Successful in 58s
Deploy Web Apps / deploy (push) Successful in 22m58s
Queue Release Build / build-linux (push) Successful in 1h10m11s
Queue Release Build / build-windows (push) Successful in 32m8s
Queue Release Build / finalize (push) Successful in 3m11s

This commit is contained in:
2026-03-13 20:13:05 +01:00
parent 00adf39121
commit 150c45c31a
7 changed files with 177 additions and 14 deletions

View File

@@ -15,6 +15,10 @@ export interface DebugExportEnvironment {
userId: string;
}
interface DebugConsoleElectronApi {
linuxDisplayServer?: string;
}
@Injectable({ providedIn: 'root' })
export class DebugConsoleEnvironmentService {
private readonly store = inject(Store);
@@ -113,19 +117,24 @@ export class DebugConsoleEnvironmentService {
if (!navigator.userAgent.includes('Linux'))
return 'N/A';
const electronDisplayServer = this.readElectronDisplayServer();
if (electronDisplayServer)
return electronDisplayServer;
try {
const ua = navigator.userAgent.toLowerCase();
if (ua.includes('wayland'))
return 'Wayland';
if (ua.includes('x11'))
return 'X11';
const isOzone = ua.includes('ozone');
if (isOzone)
return 'Ozone (Wayland likely)';
if (ua.includes('x11'))
return 'X11';
} catch {
// Ignore
}
@@ -133,11 +142,22 @@ export class DebugConsoleEnvironmentService {
return this.detectDisplayServerFromEnv();
}
private readElectronDisplayServer(): string | null {
try {
const displayServer = this.getElectronApi()?.linuxDisplayServer;
return typeof displayServer === 'string' && displayServer.trim().length > 0
? displayServer
: null;
} catch {
return null;
}
}
private detectDisplayServerFromEnv(): string {
try {
// Electron may expose env vars
const api = this.getElectronApi() as
Record<string, unknown> | null;
const api = this.getElectronApi();
if (!api)
return 'Unknown (Linux)';
@@ -201,10 +221,10 @@ export class DebugConsoleEnvironmentService {
}
}
private getElectronApi(): Record<string, unknown> | null {
private getElectronApi(): DebugConsoleElectronApi | null {
try {
const win = window as Window &
{ electronAPI?: Record<string, unknown> };
{ electronAPI?: DebugConsoleElectronApi };
return win.electronAPI ?? null;
} catch {