### Install Whispering via GitHub Release Source: https://context7.com/braden-w/whispering/llms.txt Download the appropriate installer for your platform from the Epicenter releases page. ```bash # macOS (Apple Silicon / Intel) # Download the .dmg from: # https://github.com/epicenter-so/epicenter/releases # Windows # Download the .msi or .exe installer from: # https://github.com/epicenter-so/epicenter/releases # Linux # Download the .AppImage or .deb from: # https://github.com/epicenter-so/epicenter/releases ``` -------------------------------- ### Build Whispering from Source Source: https://context7.com/braden-w/whispering/llms.txt Clone the Epicenter monorepo and build Whispering locally using Node.js, Rust, and the Tauri CLI. Ensure Node.js, Rust, and Tauri CLI are installed. ```bash # 1. Clone the Epicenter monorepo git clone https://github.com/epicenter-so/epicenter.git cd epicenter # 2. Install Node.js dependencies (uses pnpm workspaces) pnpm install # 3. Navigate to the Whispering app cd apps/whispering # 4. Run in development mode (opens the desktop app with hot-reload) pnpm tauri dev # 5. Build a production binary for your current platform pnpm tauri build # Output binaries are placed in: src-tauri/target/release/bundle/ ``` -------------------------------- ### Register Global Shortcut in Tauri Source: https://context7.com/braden-w/whispering/llms.txt Conceptual example of registering a global shortcut in the Tauri backend using Rust. This allows triggering actions like toggling recording with a keyboard shortcut. ```rust # src-tauri/src/main.rs (conceptual) app.global_shortcut_manager() .register("CmdOrCtrl+Shift+Space", move || { // toggle recording state toggle_recording(); }) .expect("Failed to register global shortcut"); ``` -------------------------------- ### Set Tray Icon in Tauri Source: https://context7.com/braden-w/whispering/llms.txt Conceptual example of setting a system tray icon in Tauri using Rust. This is used to provide visual feedback on the recorder's state. ```rust app.tray_handle() .set_icon(tauri::Icon::File( std::path::PathBuf::from("recorder-state-icons/studio_microphone.png") )) .unwrap(); ``` -------------------------------- ### Invoke Tauri Commands from Svelte Frontend Source: https://context7.com/braden-w/whispering/llms.txt Use the `invoke` function from `@tauri-apps/api/core` to trigger backend commands. Ensure proper error handling for asynchronous operations. ```typescript import { invoke } from "@tauri-apps/api/core"; // Start recording async function startRecording(): Promise { try { await invoke ("start_recording"); console.log("Recording started"); } catch (error) { console.error("Failed to start recording:", error); } } // Stop recording and retrieve transcription async function stopRecording(): Promise { try { const transcription = await invoke("stop_recording"); console.log("Transcribed text:", transcription); return transcription; } catch (error) { console.error("Failed to stop recording:", error); return ""; } } ``` === COMPLETE CONTENT === This response contains all available snippets from this library. No additional content exists. Do not make further requests.