From ac2f526d8a3e893ae30d8027df7d1f59d8f6eac2 Mon Sep 17 00:00:00 2001 From: Elizabeth Cray Date: Sun, 23 Jul 2023 18:32:43 -0400 Subject: [PATCH] Multi-platform support! --- src-tauri/src/main.rs | 38 +++++++++++++++++++++++++++++++------- src-tauri/tauri.conf.json | 25 ++++++++++++++++++++----- src/App.tsx | 21 +++++++++++++++++++-- 3 files changed, 70 insertions(+), 14 deletions(-) diff --git a/src-tauri/src/main.rs b/src-tauri/src/main.rs index fe92add..0906ec1 100644 --- a/src-tauri/src/main.rs +++ b/src-tauri/src/main.rs @@ -24,15 +24,40 @@ fn type_str(input: String) { // Load input into clipboard clipboard.set_text(input).unwrap(); - // TODO: Multi-platform window switch - enigo.key_down(Key::Alt); - enigo.key_click(Key::Tab); - enigo.key_up(Key::Alt); + // TODO: Set the Command/Alt key configured by user + #[cfg(target_os = "macos")] { + enigo.key_down(Key::Command); + enigo.key_click(Key::Tab); + enigo.key_up(Key::Command); + } + + #[cfg(target_os = "windows")] { + enigo.key_down(Key::Alt); + enigo.key_click(Key::Tab); + enigo.key_up(Key::Alt); + } + + #[cfg(target_os = "linux")] { + enigo.key_down(Key::Alt); + enigo.key_click(Key::Tab); + enigo.key_up(Key::Alt); + } thread::sleep(Duration::from_millis(200)); - // TODO: Multi-platform paste - #[cfg(not(dev))]{ + #[cfg(target_os = "windows")]{ + enigo.key_down(Key::Control); + enigo.key_click(Key::Layout('v')); + enigo.key_up(Key::Control); + } + + #[cfg(target_os = "macos")]{ + enigo.key_down(Key::Command); + enigo.key_click(Key::Layout('v')); + enigo.key_up(Key::Command); + } + + #[cfg(target_os = "linux")]{ enigo.key_down(Key::Control); enigo.key_click(Key::Layout('v')); enigo.key_up(Key::Control); @@ -47,7 +72,6 @@ fn type_str(input: String) { } fn main() { - // TODO: Set Window location on launch tauri::Builder::default() .plugin(tauri_plugin_positioner::init()) .invoke_handler(tauri::generate_handler![type_str, get_mouse_pos]) diff --git a/src-tauri/tauri.conf.json b/src-tauri/tauri.conf.json index e79493c..1305d46 100644 --- a/src-tauri/tauri.conf.json +++ b/src-tauri/tauri.conf.json @@ -18,11 +18,23 @@ "sidecar": true, "execute": true, "open": true, - "scope": [{ - "name" : "open-link", - "cmd": "powershell.exe", - "args": ["-Command", "Start-Process", {"validator": "\\S+"}] - }] + "scope": [ + { + "name" : "open-link-win", + "cmd": "powershell.exe", + "args": ["-Command", "Start-Process", {"validator": "\\S+"}] + }, + { + "name" : "open-link-linux", + "cmd": "/bin/sh", + "args": ["-c", "xdg-open", {"validator": "\\S+"}] + }, + { + "name" : "open-link-macos", + "cmd": "/bin/bash", + "args": ["-c", "open", {"validator": "\\S+"}] + } + ] }, "fs": { "all": true, @@ -30,6 +42,9 @@ }, "path": { "all": true + }, + "os": { + "all": true } }, "bundle": { diff --git a/src/App.tsx b/src/App.tsx index e0e727c..7224621 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -3,6 +3,7 @@ import { resolveResource } from "@tauri-apps/api/path"; import { readTextFile } from "@tauri-apps/api/fs"; import { invoke } from '@tauri-apps/api/tauri' import Modal from "react-modal"; +import { platform } from '@tauri-apps/api/os'; import "./App.css"; import { Command } from '@tauri-apps/api/shell' import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; @@ -168,8 +169,24 @@ function App() {
{ let url = "https://git.corrupt.link/liz/AllenWrench"; - // TODO: Make multi-platform - new Command("open-link", ["-Command", "Start-Process", `${url}`]).spawn(); + platform().then((os: string) => { + switch(os) { + case "win32": + new Command("open-link-win", ["-Command", "Start-Process", `${url}`]).spawn(); + break; + case "linux": + new Command("open-link-linux", ["-c", "xdg-open", `${url}`]).spawn(); + break; + case "macos": + new Command("open-link-macos", ["-c", "open", `${url}`]).spawn(); + break; + default: + console.log(`Unknown OS: ${os}`); + break; + } + + }); + }}>