feat: add Linux platform support - #15
Open
bet4it wants to merge 8 commits into
Open
Conversation
- Add handy-keys dependency for Linux under tauri-plugin-keyhook - Implement Linux keyboard listener thread using evdev and handy-keys - Map physical key and modifier events to normalized KeyEventPayload - Unify ShortcutService to use keyhook on all platforms (Windows, macOS, Linux) - Add default shortcuts for Linux in config store
- Convert local recording files to Blob URLs on Linux to avoid WebKitGTK asset protocol failure with GStreamer - Add automatic Blob URL revocation and error event handling in WxAudioPlayer
… indicator window focus
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
This PR adds comprehensive Linux platform support (Wayland and X11), enabling FlashVoice to run smoothly across modern Linux desktop environments.
Key Changes:
Window Management & Floating Indicator:
tauri-plugin-windows, preserving the pill capsule shape and preventing window decorations from disrupting indicator layout.set_focusable(false)for the floating indicator window so clicking it does not steal keyboard focus from target input fields.Global Shortcuts:
handy-keysintauri-plugin-keyhook, supporting push-to-talk and toggle-to-talk without stealing key input.Text Injection (Auto-Type):
tauri-plugin-textinjectusingydotoolandwl-copy/clipboard injection.Tray & Audio Playback:
Verification
pnpm lintpnpm type-checkpnpm testpnpm buildpnpm rust:fmt:checkpnpm rust:clippypnpm rust:testManual verification conducted on Linux (NixOS, Linux 6.12, GNOME 47 on Wayland):
Risks and impact
#[cfg(target_os = "linux")]or runtime platform checks (isLinux). macOS and Windows execution paths remain completely untouched.Checklist