2026-01-04 09:00:51 +05:00
|
|
|
#[cfg(target_os = "linux")]
|
|
|
|
|
use std::fs::metadata;
|
|
|
|
|
#[cfg(target_os = "linux")]
|
|
|
|
|
use std::path::PathBuf;
|
|
|
|
|
|
2023-06-11 19:18:58 +05:00
|
|
|
use std::process::Command;
|
|
|
|
|
|
|
|
|
|
// taken from https://github.com/tauri-apps/tauri/issues/4062#issuecomment-1338048169
|
|
|
|
|
#[tauri::command]
|
|
|
|
|
pub 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")]
|
|
|
|
|
{
|
|
|
|
|
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();
|
|
|
|
|
}
|
|
|
|
|
}
|