co-mono/packages/coding-agent/src/clipboard.ts
2025-12-04 09:16:11 +02:00

28 lines
780 B
TypeScript

import { execSync } from "child_process";
import { platform } from "os";
export function copyToClipboard(text: string): void {
const p = platform();
const options = { input: text, timeout: 5000 };
try {
if (p === "darwin") {
execSync("pbcopy", options);
} else if (p === "win32") {
execSync("clip", options);
} else {
// Linux - try xclip first, fall back to xsel
try {
execSync("xclip -selection clipboard", options);
} catch {
execSync("xsel --clipboard --input", options);
}
}
} catch (error) {
const msg = error instanceof Error ? error.message : String(error);
if (p === "linux") {
throw new Error(`Failed to copy to clipboard. Install xclip or xsel: ${msg}`);
}
throw new Error(`Failed to copy to clipboard: ${msg}`);
}
}