mirror of
https://git.sanhost.net/sanasol/hytale-f2p.git
synced 2026-02-26 06:41:47 -03:00
refactor: split main file into smaller modules for better maintainability
This commit is contained in:
73
backend/utils/platformUtils.js
Normal file
73
backend/utils/platformUtils.js
Normal file
@@ -0,0 +1,73 @@
|
||||
const { execSync } = require('child_process');
|
||||
|
||||
function getOS() {
|
||||
if (process.platform === 'win32') return 'windows';
|
||||
if (process.platform === 'darwin') return 'darwin';
|
||||
if (process.platform === 'linux') return 'linux';
|
||||
return 'unknown';
|
||||
}
|
||||
|
||||
function getArch() {
|
||||
return process.arch === 'x64' ? 'amd64' : process.arch;
|
||||
}
|
||||
|
||||
function isWaylandSession() {
|
||||
if (process.platform !== 'linux') {
|
||||
return false;
|
||||
}
|
||||
|
||||
const sessionType = process.env.XDG_SESSION_TYPE;
|
||||
if (sessionType && sessionType.toLowerCase() === 'wayland') {
|
||||
return true;
|
||||
}
|
||||
|
||||
if (process.env.WAYLAND_DISPLAY) {
|
||||
return true;
|
||||
}
|
||||
|
||||
try {
|
||||
const sessionId = process.env.XDG_SESSION_ID;
|
||||
if (sessionId) {
|
||||
const output = execSync(`loginctl show-session ${sessionId} -p Type`, { encoding: 'utf8' });
|
||||
if (output && output.toLowerCase().includes('wayland')) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
} catch (err) {
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
function setupWaylandEnvironment() {
|
||||
if (process.platform !== 'linux') {
|
||||
return {};
|
||||
}
|
||||
|
||||
if (!isWaylandSession()) {
|
||||
console.log('Detected X11 session, using default environment');
|
||||
return {};
|
||||
}
|
||||
|
||||
console.log('Detected Wayland session, configuring environment...');
|
||||
|
||||
const envVars = {
|
||||
SDL_VIDEODRIVER: 'wayland',
|
||||
GDK_BACKEND: 'wayland',
|
||||
QT_QPA_PLATFORM: 'wayland',
|
||||
MOZ_ENABLE_WAYLAND: '1',
|
||||
_JAVA_AWT_WM_NONREPARENTING: '1'
|
||||
};
|
||||
|
||||
envVars.ELECTRON_OZONE_PLATFORM_HINT = 'wayland';
|
||||
|
||||
console.log('Wayland environment variables:', envVars);
|
||||
return envVars;
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
getOS,
|
||||
getArch,
|
||||
isWaylandSession,
|
||||
setupWaylandEnvironment
|
||||
};
|
||||
Reference in New Issue
Block a user