fix(file_handlers): use keystroke Cmd+Return to start pptx slideshow

Replace unreliable AppleScript PowerPoint API (run slide show of settings)
with System Events keystroke approach, matching proven behavior from the
old MasterKey app. Opens the file, waits 3s for load, then sends Cmd+Return
to start the slideshow from slide 1.
This commit is contained in:
Scott Idem
2026-04-20 17:01:04 -04:00
parent 3feaf1bbc3
commit 002c27e73c
5 changed files with 56 additions and 33 deletions

View File

@@ -21,7 +21,7 @@ export function registerFileHandlers() {
ipcMain.handle('native:check-cache', async (event, { cache_root, hash, hash_prefix_length = 2, verify_hash = false }) => {
const full_path = get_organized_hashed_path(cache_root, hash, hash_prefix_length);
if (!fs.existsSync(full_path)) return false;
if (verify_hash) {
@@ -42,7 +42,7 @@ export function registerFileHandlers() {
const tmp_path = `${full_path}.tmp`;
if (endpoints_in_progress.includes(url)) return { success: true, status: 'in_progress' };
// 1. If final file exists, skip
if (fs.existsSync(full_path)) return { success: true, path: full_path, status: 'exists' };
@@ -106,14 +106,14 @@ export function registerFileHandlers() {
const source = get_organized_hashed_path(cache_root, hash, hash_prefix_length);
const expanded_temp = expandPath(temp_root);
const target = path.join(expanded_temp, filename);
console.log(`Native: Launching from Cache -> ${filename}`);
if (!fs.existsSync(expanded_temp)) fs.mkdirSync(expanded_temp, { recursive: true });
// 1. Copy the file to temp folder with original name
fs.copyFileSync(source, target);
// 2. Determine file type
const ext = path.extname(filename).toLowerCase().replace('.', '');
const is_pres = ['pptx', 'ppt', 'key', 'pdf', 'odp'].includes(ext);
@@ -146,8 +146,10 @@ export function registerFileHandlers() {
tell application "Microsoft PowerPoint"
activate
open (POSIX file "${target}")
delay 1
run slide show of active presentation
delay 3
end tell
tell application "System Events"
keystroke return using command down
end tell
`;
}