signal-desktop/ts/OS.ts

49 lines
1.1 KiB
TypeScript
Raw Normal View History

2023-01-03 19:55:46 +00:00
// Copyright 2018 Signal Messenger, LLC
2020-10-30 20:34:04 +00:00
// SPDX-License-Identifier: AGPL-3.0-only
2023-01-18 23:31:10 +00:00
import { release as osRelease } from 'os';
2018-05-02 23:57:02 +00:00
import semver from 'semver';
2023-01-18 23:31:10 +00:00
const createIsPlatform = (
platform: typeof process.platform
): ((minVersion?: string) => boolean) => {
return minVersion => {
if (process.platform !== platform) {
return false;
}
if (minVersion === undefined) {
return true;
}
2018-05-02 23:57:02 +00:00
2023-01-18 23:31:10 +00:00
return semver.gte(osRelease(), minVersion);
};
2018-05-02 23:57:02 +00:00
};
2022-07-05 16:44:53 +00:00
2023-01-18 23:31:10 +00:00
export const isMacOS = createIsPlatform('darwin');
export const isLinux = createIsPlatform('linux');
export const isWindows = createIsPlatform('win32');
2022-07-05 16:44:53 +00:00
// Windows 10 and above
export const hasCustomTitleBar = (): boolean =>
isWindows('10.0.0') || Boolean(process.env.CUSTOM_TITLEBAR);
2023-01-18 23:31:10 +00:00
export const getName = (): string => {
if (isMacOS()) {
return 'macOS';
}
if (isWindows()) {
return 'Windows';
}
return 'Linux';
};
2023-02-23 21:32:19 +00:00
export const getClassName = (): string => {
if (isMacOS()) {
return 'os-macos';
}
if (isWindows()) {
return 'os-windows';
}
return 'os-linux';
};