co-mono/packages/coding-agent/examples/extensions/mac-system-theme.ts
Mario Zechner 121823c74d feat(coding-agent): add user_bash event and theme API extensions
- user_bash event for intercepting ! and !! commands (#528)
- Extensions can return { operations } or { result } to redirect/replace
- executeBashWithOperations() for custom BashOperations execution
- session.recordBashResult() for extensions handling bash themselves
- Theme API: getAllThemes(), getTheme(), setTheme() on ctx.ui
- mac-system-theme.ts example: sync with macOS dark/light mode
- Updated ssh.ts to use user_bash event
2026-01-08 21:50:56 +01:00

25 lines
642 B
TypeScript

/**
* Syncs pi theme with macOS system appearance (dark/light mode).
*
* Usage:
* pi -e examples/extensions/mac-system-theme.ts
*/
import { execSync } from "node:child_process";
import type { ExtensionAPI } from "@mariozechner/pi-coding-agent";
function isDarkMode(): boolean {
try {
execSync("defaults read -g AppleInterfaceStyle", { encoding: "utf-8" });
return true; // Returns "Dark" if dark mode
} catch {
return false; // Throws if light mode
}
}
export default function (pi: ExtensionAPI) {
pi.on("session_start", (_event, ctx) => {
const theme = isDarkMode() ? "dark" : "light";
ctx.ui.setTheme(theme);
});
}