mirror of
https://github.com/tauri-apps/plugins-workspace.git
synced 2026-05-09 12:36:07 +02:00
65 lines
1.9 KiB
Rust
65 lines
1.9 KiB
Rust
// Copyright 2019-2023 Tauri Programme within The Commons Conservancy
|
|
// SPDX-License-Identifier: Apache-2.0
|
|
// SPDX-License-Identifier: MIT
|
|
|
|
//! Types and functions related to shell.
|
|
|
|
use std::{ffi::OsStr, path::Path};
|
|
|
|
pub(crate) fn open<P: AsRef<OsStr>, S: AsRef<str>>(path: P, with: Option<S>) -> crate::Result<()> {
|
|
match with {
|
|
Some(program) => ::open::with_detached(path, program.as_ref()),
|
|
None => {
|
|
// ref https://github.com/tauri-apps/tauri/issues/10617
|
|
#[cfg(target_os = "linux")]
|
|
return ::open::with_detached(&path, "/usr/bin/xdg-open")
|
|
.or_else(|_| ::open::that_detached(path));
|
|
#[cfg(not(target_os = "linux"))]
|
|
::open::that_detached(path)
|
|
}
|
|
}
|
|
.map_err(Into::into)
|
|
}
|
|
|
|
/// Opens URL with the program specified in `with`, or system default if `None`.
|
|
///
|
|
/// ## Platform-specific:
|
|
///
|
|
/// - **Android / iOS**: Always opens using default program.
|
|
///
|
|
/// # Examples
|
|
///
|
|
/// ```rust,no_run
|
|
/// tauri::Builder::default()
|
|
/// .setup(|app| {
|
|
/// // open the given URL on the system default browser
|
|
/// tauri_plugin_opener::open_url("https://github.com/tauri-apps/tauri", None)?;
|
|
/// Ok(())
|
|
/// });
|
|
/// ```
|
|
pub fn open_url<P: AsRef<str>, S: AsRef<str>>(url: P, with: Option<S>) -> crate::Result<()> {
|
|
let url = url.as_ref();
|
|
open(url, with)
|
|
}
|
|
|
|
/// Opens path with the program specified in `with`, or system default if `None`.
|
|
///
|
|
/// ## Platform-specific:
|
|
///
|
|
/// - **Android / iOS**: Always opens using default program.
|
|
///
|
|
/// # Examples
|
|
///
|
|
/// ```rust,no_run
|
|
/// tauri::Builder::default()
|
|
/// .setup(|app| {
|
|
/// // open the given URL on the system default browser
|
|
/// tauri_plugin_opener::open_path("/path/to/file", None)?;
|
|
/// Ok(())
|
|
/// });
|
|
/// ```
|
|
pub fn open_path<P: AsRef<Path>, S: AsRef<str>>(path: P, with: Option<S>) -> crate::Result<()> {
|
|
let path = path.as_ref();
|
|
open(path, with)
|
|
}
|