49 lines
1.2 KiB
Rust
49 lines
1.2 KiB
Rust
use std::process::Command;
|
|
|
|
#[tauri::command]
|
|
pub async fn show_in_folder(path: String) {
|
|
#[cfg(target_os = "windows")]
|
|
{
|
|
Command::new("explorer")
|
|
.args(["/select,", &path]) // The comma after select is not a typo
|
|
.spawn()
|
|
.unwrap();
|
|
}
|
|
|
|
#[cfg(target_os = "linux")]
|
|
{
|
|
use std::fs::metadata;
|
|
use std::path::PathBuf;
|
|
if path.contains(",") {
|
|
// see https://gitlab.freedesktop.org/dbus/dbus/-/issues/76
|
|
let new_path = match metadata(&path).unwrap().is_dir() {
|
|
true => path,
|
|
false => {
|
|
let mut path2 = PathBuf::from(path);
|
|
path2.pop();
|
|
path2.into_os_string().into_string().unwrap()
|
|
}
|
|
};
|
|
Command::new("xdg-open").arg(&new_path).spawn().unwrap();
|
|
} else {
|
|
Command::new("dbus-send")
|
|
.args([
|
|
"--session",
|
|
"--dest=org.freedesktop.FileManager1",
|
|
"--type=method_call",
|
|
"/org/freedesktop/FileManager1",
|
|
"org.freedesktop.FileManager1.ShowItems",
|
|
format!("array:string:file://{path}").as_str(),
|
|
"string:\"\"",
|
|
])
|
|
.spawn()
|
|
.unwrap();
|
|
}
|
|
}
|
|
|
|
#[cfg(target_os = "macos")]
|
|
{
|
|
Command::new("open").args(["-R", &path]).spawn().unwrap();
|
|
}
|
|
}
|