ニッチではあるのだけど、Markdown形式ではなくリッチテキスト形式でハイパーリンクされたテキストをコピーしたいときがある*1。 具体的にはSlackのワークフローでリッチテキスト形式のテキストボックスは、Markdownを解釈してくない。
Markdownでかけないとスクリプトで処理するのはめんどくさい。 そこで、リッチテキスト形式でペーストできるようにクリップボードにコピーすることにした。
echo HTML | wl-copy -t text/html
結論から書くと
- HTML形式でコピーする内容を作る
- クリップボードにコピーするときにMIMEタイプをtext/htmlにする
この2つだけ。 例えばGoogleへのリンクがついたテキストをリッチテキスト形式でコピーする場合は以下のような感じ。
$ echo '<html><body><a href="https://google.com">Google</a></body></html>' | wl-copy -t text/html
これを貼り付けるとハイパーリンク付きのテキストになるはず。
ここでのポイントはHTMLはaタグだけではだめで、正しくhtmlタグとbodyタグで囲う必要があること。
また、wl-copyコマンドのオプションで明示的に-t text/html
とよい*2。
wl-copyコマンドとは?
一応、wl-copyコマンドについて説明しておく。 wl-copyコマンドは、WaylandというLinuxディストリビューションでよく使われているデスクトッププロトコルを使って、クリップボードにデータをコピーするコマンドである。 WSLはWSLgを使うことで、このWaylandを経由してWindowsのGUI環境にアクセスすることができる。 クリップボードも同様でwl-copyを使えばクリップボードにコピーでき、wl-pasteを使えばクリップボードから貼り付けできる。 wlで始まっていてややこしいが、wslではない。 Ubuntuであればwl-clipboardパッケージをインストールすると使えるようになる。
$ sudo apt install wl-clipboard
おわりに
Markdown形式でリンク付きテキストをペーストできなくて、めんどくせ~~ってなっていたがHTML形式にしてクリップボードにコピーすることで回避できた。 試していないがMS Officeにコピーすることもできるはず。 しかし、Google Spreadsheetではよくわからないテキストが追加されてしまいいまいちだった*3。
余談だが、この記事のアイキャッチ画像をChatGPTに生成してもらった。 お題はこの記事のタイトルなのだが、それっぽいようなそれっぽくないような画像になった。 ChatGPT(というかDALL-E?)でテッキーなブログ記事のアイキャッチ画像を生成しようとするとサイバーパンクっぽい、マトリックスのようななんかダークな感じになるのはなんでなんだぜ?