// Copyright 2019-2023 Tauri Programme within The Commons Conservancy // SPDX-License-Identifier: Apache-2.0 // SPDX-License-Identifier: MIT /** * Provides operating system-related utility methods and properties. * * @module */ declare global { interface Window { __TAURI_INVOKE__: (cmd: string, args?: unknown) => Promise; } } type Platform = | "linux" | "darwin" | "ios" | "freebsd" | "dragonfly" | "netbsd" | "openbsd" | "solaris" | "android" | "win32"; type OsType = "Linux" | "Darwin" | "Windows_NT"; type Arch = | "x86" | "x86_64" | "arm" | "aarch64" | "mips" | "mips64" | "powerpc" | "powerpc64" | "riscv64" | "s390x" | "sparc64"; function isWindows(): boolean { return navigator.appVersion.includes("Win"); } /** * The operating system-specific end-of-line marker. * - `\n` on POSIX * - `\r\n` on Windows * * @since 2.0.0 * */ const EOL = isWindows() ? "\r\n" : "\n"; /** * Returns a string identifying the operating system platform. * The value is set at compile time. Possible values are `'linux'`, `'darwin'`, `'ios'`, `'freebsd'`, `'dragonfly'`, `'netbsd'`, `'openbsd'`, `'solaris'`, `'android'`, `'win32'` * @example * ```typescript * import { platform } from '@tauri-apps/plugin-os'; * const platformName = await platform(); * ``` * * @since 2.0.0 * */ async function platform(): Promise { return window.__TAURI_INVOKE__("plugin:os|platform"); } /** * Returns a string identifying the kernel version. * @example * ```typescript * import { version } from '@tauri-apps/plugin-os'; * const osVersion = await version(); * ``` * * @since 2.0.0 */ async function version(): Promise { return window.__TAURI_INVOKE__("plugin:os|version"); } /** * Returns `'Linux'` on Linux, `'Darwin'` on macOS, and `'Windows_NT'` on Windows. * @example * ```typescript * import { type } from '@tauri-apps/plugin-os'; * const osType = await type(); * ``` * * @since 2.0.0 */ async function type(): Promise { return window.__TAURI_INVOKE__("plugin:os|kind"); } /** * Returns the operating system CPU architecture for which the tauri app was compiled. * Possible values are `'x86'`, `'x86_64'`, `'arm'`, `'aarch64'`, `'mips'`, `'mips64'`, `'powerpc'`, `'powerpc64'`, `'riscv64'`, `'s390x'`, `'sparc64'`. * @example * ```typescript * import { arch } from '@tauri-apps/plugin-os'; * const archName = await arch(); * ``` * * @since 2.0.0 */ async function arch(): Promise { return window.__TAURI_INVOKE__("plugin:os|arch"); } /** * Returns the operating system's default directory for temporary files as a string. * @example * ```typescript * import { tempdir } from '@tauri-apps/plugin-os'; * const tempdirPath = await tempdir(); * ``` * * @since 2.0.0 */ async function tempdir(): Promise { return window.__TAURI_INVOKE__("plugin:os|tempdir"); } /** * Returns a String with a `BCP-47` language tag inside. If the locale couldn’t be obtained, `null` is returned instead. * @example * ```typescript * import { locale } from '@tauri-apps/plugin-os'; * const locale = await locale(); * if (locale) { * // use the locale string here * } * ``` * * @since 2.0.0 */ async function locale(): Promise { return window.__TAURI_INVOKE__("plugin:os|locale"); } export { EOL, platform, version, type, arch, tempdir, locale }; export type { Platform, OsType, Arch };