Something went wrong. Try again.
fork of prime agent with changes i want but are not upstreamable probqbly (and some fixes)
Something went wrong. Try again.
1.2 kB · 47 lines
TypeScript
at main
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748/** * Syncs pi theme with macOS system appearance (dark/light mode). * * Usage: * pi -e examples/extensions/mac-system-theme.ts */
import { exec } from "node:child_process";import { promisify } from "node:util";import type { ExtensionAPI } from "@earendil-works/pi-coding-agent";
const execAsync = promisify(exec);
async function isDarkMode(): Promise<boolean> { try { const { stdout } = await execAsync( "osascript -e 'tell application \"System Events\" to tell appearance preferences to return dark mode'", ); return stdout.trim() === "true"; } catch { return false; }}
export default function (pi: ExtensionAPI) { let intervalId: ReturnType<typeof setInterval> | null = null;
pi.on("session_start", async (_event, ctx) => { let currentTheme = (await isDarkMode()) ? "dark" : "light"; ctx.ui.setTheme(currentTheme);
intervalId = ctx.setInterval(async () => { const newTheme = (await isDarkMode()) ? "dark" : "light"; if (newTheme !== currentTheme) { currentTheme = newTheme; ctx.ui.setTheme(currentTheme); } }, 2000); });
pi.on("session_shutdown", (_event, ctx) => { if (intervalId) { ctx.clearInterval(intervalId); intervalId = null; } });}