Skip to main content
Module

x/clipboard/mod.ts

Simple clipboard api for text
Latest
File
// Language: TypeScript
// The supported operating systemstype OperatingSystem = "darwin" | "linux" | "windows";
// The Clipboard interfaceinterface Clipboard { readonly os: OperatingSystem;
readText(): Promise<string>; writeText(text: string): Promise<void>;}
// The Clipboard implementation for macOSconst darwin: Clipboard = { os: "darwin", async readText() { const command = await Deno.run({ cmd: ["pbpaste"], stdout: "piped", }); const output = await command.output(); command.close(); return new TextDecoder().decode(output); }, async writeText(text: string) { const command = await Deno.run({ cmd: ["pbcopy"], stdin: "piped", }); await command.stdin?.write(new TextEncoder().encode(text)); command.stdin?.close(); command.status(); }};
// The Clipboard implementation for Linuxconst linux: Clipboard = { os: "linux", async readText() { const command = await Deno.run({ cmd: ["xclip", "-selection", "clipboard", "-o"], stdout: "piped", }); const output = await command.output(); command.close(); return new TextDecoder().decode(output); }, async writeText(text: string) { const command = await Deno.run({ cmd: ["xclip", "-selection", "clipboard", "-i"], stdin: "piped", }); await command.stdin?.write(new TextEncoder().encode(text)); command.stdin?.close(); command.status(); }};
// The Clipboard implementation for Windowsconst windows: Clipboard = { os: "windows", async readText() { const command = await Deno.run({ cmd: ["powershell", "-Command", "Get-Clipboard"], stdout: "piped", }); const output = await command.output(); command.close(); return new TextDecoder().decode(output); }, async writeText(text: string) { const command = await Deno.run({ cmd: ["powershell", "-Command", "Set-Clipboard"], stdin: "piped", }); await command.stdin?.write(new TextEncoder().encode(text)); command.stdin?.close(); command.status(); }};
// Select the correct implementation for the current operating systemconst clipboard: Clipboard = Deno.build.os === "darwin" ? darwin : Deno.build.os === "linux" ? linux : windows;
export default clipboard;