disable cancel on linux (#392)

This commit is contained in:
CJ Pais 2025-11-29 01:44:49 -08:00 committed by GitHub
parent 6d6d7fb279
commit 6c35a8d912
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 44 additions and 19 deletions

View file

@ -739,6 +739,15 @@ pub fn resume_binding(app: AppHandle, id: String) -> Result<(), String> {
} }
pub fn register_cancel_shortcut(app: &AppHandle) { pub fn register_cancel_shortcut(app: &AppHandle) {
// Cancel shortcut is disabled on Linux due to instability with dynamic shortcut registration
#[cfg(target_os = "linux")]
{
let _ = app;
return;
}
#[cfg(not(target_os = "linux"))]
{
let app_clone = app.clone(); let app_clone = app.clone();
tauri::async_runtime::spawn(async move { tauri::async_runtime::spawn(async move {
if let Some(cancel_binding) = get_settings(&app_clone).bindings.get("cancel").cloned() { if let Some(cancel_binding) = get_settings(&app_clone).bindings.get("cancel").cloned() {
@ -748,8 +757,18 @@ pub fn register_cancel_shortcut(app: &AppHandle) {
} }
}); });
} }
}
pub fn unregister_cancel_shortcut(app: &AppHandle) { pub fn unregister_cancel_shortcut(app: &AppHandle) {
// Cancel shortcut is disabled on Linux due to instability with dynamic shortcut registration
#[cfg(target_os = "linux")]
{
let _ = app;
return;
}
#[cfg(not(target_os = "linux"))]
{
let app_clone = app.clone(); let app_clone = app.clone();
tauri::async_runtime::spawn(async move { tauri::async_runtime::spawn(async move {
if let Some(cancel_binding) = get_settings(&app_clone).bindings.get("cancel").cloned() { if let Some(cancel_binding) = get_settings(&app_clone).bindings.get("cancel").cloned() {
@ -758,6 +777,7 @@ pub fn unregister_cancel_shortcut(app: &AppHandle) {
} }
}); });
} }
}
pub fn register_shortcut(app: &AppHandle, binding: ShortcutBinding) -> Result<(), String> { pub fn register_shortcut(app: &AppHandle, binding: ShortcutBinding) -> Result<(), String> {
// Validate human-level rules first // Validate human-level rules first

View file

@ -1,4 +1,5 @@
import React from "react"; import React from "react";
import { type } from "@tauri-apps/plugin-os";
import { WordCorrectionThreshold } from "./WordCorrectionThreshold"; import { WordCorrectionThreshold } from "./WordCorrectionThreshold";
import { LogDirectory } from "./LogDirectory"; import { LogDirectory } from "./LogDirectory";
import { LogLevelSelector } from "./LogLevelSelector"; import { LogLevelSelector } from "./LogLevelSelector";
@ -17,6 +18,7 @@ import { useSettings } from "../../../hooks/useSettings";
export const DebugSettings: React.FC = () => { export const DebugSettings: React.FC = () => {
const { getSetting } = useSettings(); const { getSetting } = useSettings();
const pushToTalk = getSetting("push_to_talk"); const pushToTalk = getSetting("push_to_talk");
const isLinux = type() === "linux";
return ( return (
<div className="max-w-3xl w-full mx-auto space-y-6"> <div className="max-w-3xl w-full mx-auto space-y-6">
@ -38,11 +40,14 @@ export const DebugSettings: React.FC = () => {
<ClamshellMicrophoneSelector descriptionMode="tooltip" grouped={true} /> <ClamshellMicrophoneSelector descriptionMode="tooltip" grouped={true} />
<PostProcessingToggle descriptionMode="tooltip" grouped={true} /> <PostProcessingToggle descriptionMode="tooltip" grouped={true} />
<MuteWhileRecording descriptionMode="tooltip" grouped={true} /> <MuteWhileRecording descriptionMode="tooltip" grouped={true} />
{/* Cancel shortcut is disabled on Linux due to instability with dynamic shortcut registration */}
{!isLinux && (
<HandyShortcut <HandyShortcut
shortcutId="cancel" shortcutId="cancel"
grouped={true} grouped={true}
disabled={pushToTalk} disabled={pushToTalk}
/> />
)}
</SettingsGroup> </SettingsGroup>
</div> </div>
); );