Files
clawdbot/src/infra/clipboard.ts
2026-01-15 06:19:47 +00:00

24 lines
720 B
TypeScript

import { runCommandWithTimeout } from "../process/exec.js";
export async function copyToClipboard(value: string): Promise<boolean> {
const attempts: Array<{ argv: string[] }> = [
{ argv: ["pbcopy"] },
{ argv: ["xclip", "-selection", "clipboard"] },
{ argv: ["wl-copy"] },
{ argv: ["clip.exe"] }, // WSL / Windows
{ argv: ["powershell", "-NoProfile", "-Command", "Set-Clipboard"] },
];
for (const attempt of attempts) {
try {
const result = await runCommandWithTimeout(attempt.argv, {
timeoutMs: 3_000,
input: value,
});
if (result.code === 0 && !result.killed) return true;
} catch {
// keep trying the next fallback
}
}
return false;
}