クリップボードのテキストを取り出す

1 min read読了の目安(約1400字

今回も小ネタ。

たとえばクリップボードに「Hello, world!」と入っているときに,これを取り出して標準出力に出力することを考える。

Go でクリップボードへ読み書きできるパッケージとしては github.com/atotto/clipboard が有名で,こんな感じに書ける。

sample.go
package main

import (
    "fmt"
    "os"

    "github.com/atotto/clipboard"
)

func main() {
    s, err := clipboard.ReadAll()
    if err != nil {
        fmt.Fprintln(os.Stderr, err)
        return
    }
    fmt.Print(s)
}

これを実行すると

$ go run sample.go
Hello, world!

という具合にクリップボードの内容を取り出せるわけだ。

元々 Linux では xsel (または xclip) コマンドってのがあって,クリップボードからの取り出しも

$ xsel
Hello, world!

てな感じで取り出すことができる。じゃあ github.com/atotto/clipboard パッケージの何が嬉しいかというと,マルチプラットフォーム対応になっていて,どの環境でも ReadAll/WriteAll 関数を呼び出すだけで機能するのよ[1]

というわけで,拙作の gpgpdumpgithub.com/atotto/clipboard パッケージを組み込んで,クリップボードから直接 ASCII armor テキストを読み込むようにした。

https://text.baldanders.info/release/2020/12/gpgpdump-v0_11_0-is-released/

クリップボード操作が Go コード内で気軽に使えるようになると何かと便利である。

脚注
  1. Linux では xsel または xclip コマンドが標準で入ってない。 Linux 等の UNIX 系環境で github.com/atotto/clipboard パッケージを使う場合には,あらかじめ xsel または xclip コマンドをインストールしておく必要がある。 ↩︎