2026-03-27 15:59:41 +02:00
|
|
|
import { execSync } from 'child_process';
|
|
|
|
|
import { systemPreferences } from 'electron';
|
|
|
|
|
|
|
|
|
|
export function getFrontmostApp(): string {
|
|
|
|
|
try {
|
|
|
|
|
if (process.platform === 'darwin') {
|
|
|
|
|
return execSync(
|
|
|
|
|
'osascript -e \'tell application "System Events" to get name of first application process whose frontmost is true\''
|
|
|
|
|
).toString().trim();
|
|
|
|
|
}
|
|
|
|
|
if (process.platform === 'win32') {
|
|
|
|
|
return execSync(
|
|
|
|
|
'powershell -command "Add-Type \'using System; using System.Runtime.InteropServices; public class W { [DllImport(\\\"user32.dll\\\")] public static extern IntPtr GetForegroundWindow(); }\'; (Get-Process | Where-Object { $_.MainWindowHandle -eq [W]::GetForegroundWindow() }).ProcessName"'
|
|
|
|
|
).toString().trim();
|
|
|
|
|
}
|
|
|
|
|
} catch {
|
|
|
|
|
return '';
|
|
|
|
|
}
|
|
|
|
|
return '';
|
|
|
|
|
}
|
|
|
|
|
|
2026-03-27 16:53:09 +02:00
|
|
|
export function simulateCopy(): void {
|
|
|
|
|
if (process.platform === 'darwin') {
|
|
|
|
|
execSync('osascript -e \'tell application "System Events" to keystroke "c" using command down\'');
|
|
|
|
|
} else if (process.platform === 'win32') {
|
|
|
|
|
execSync('powershell -command "Add-Type -AssemblyName System.Windows.Forms; [System.Windows.Forms.SendKeys]::SendWait(\'^c\')"');
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2026-03-27 15:59:41 +02:00
|
|
|
export function simulatePaste(): void {
|
|
|
|
|
if (process.platform === 'darwin') {
|
|
|
|
|
execSync('osascript -e \'tell application "System Events" to keystroke "v" using command down\'');
|
|
|
|
|
} else if (process.platform === 'win32') {
|
|
|
|
|
execSync('powershell -command "Add-Type -AssemblyName System.Windows.Forms; [System.Windows.Forms.SendKeys]::SendWait(\'^v\')"');
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export function checkAccessibilityPermission(): boolean {
|
|
|
|
|
if (process.platform !== 'darwin') return true;
|
|
|
|
|
return systemPreferences.isTrustedAccessibilityClient(true);
|
|
|
|
|
}
|
2026-04-02 14:29:12 +02:00
|
|
|
|
|
|
|
|
export function hasAccessibilityPermission(): boolean {
|
|
|
|
|
if (process.platform !== 'darwin') return true;
|
|
|
|
|
return systemPreferences.isTrustedAccessibilityClient(false);
|
|
|
|
|
}
|