⌨
クリップボードのテキストを取り出す
今回も小ネタ。
たとえばクリップボードに「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]。
というわけで,拙作の gpgpdump に github.com/atotto/clipboard パッケージを組み込んで,クリップボードから直接 ASCII armor テキストを読み込むようにした。
クリップボード操作が Go コード内で気軽に使えるようになると何かと便利である。
-
Linux では xsel または xclip コマンドが標準で入ってない。 Linux 等の UNIX 系環境で github.com/atotto/clipboard パッケージを使う場合には,あらかじめ xsel または xclip コマンドをインストールしておく必要がある。 ↩︎
Discussion