はじめに
ウィンドウのスクリーンショットを取ると、何故かウィンドウの周辺に透明な領域(drop shadow ?)がある。 邪魔なので消そうと思った。
環境
$ cat /etc/os-release | grep PRETTY_NAME PRETTY_NAME="Ubuntu 20.04.4 LTS"
やったこと
ウィンドウのエフェクトが関係していそうだが、色々調べても解決策が見当たらず。 仕方がないので、ウィンドウ部分を抜き出すシェルスクリプトを作成した。
#!/bin/bash WIN_WIDTH=${WIN_WIDTH:-1280} WIN_HEIGHT=${WIN_HEIGHT:-800} if [ -v WIN_ID ]; then wmctrl -i -r ${WIN_ID} -e 0,100,100,$((WIN_WIDTH+44)),$((WIN_HEIGHT+44)) wmctrl -i -a ${WIN_ID} gnome-screenshot --window --clipboard --delay 1 --file tmp.png; rm tmp.png xclip -selection clipboard -t image/png -o | convert - -crop ${WIN_WIDTH}x${WIN_HEIGHT}+22+19 "screenshot-$(date +%s)".png else echo "export WIN_ID=..." wmctrl -l fi
wmctrl
でウィンドウを指定する際には、IDで指定するようにしている。
これで、以下のようにウィンドウの周辺の透明な領域がないスクリーンショットを取得できた。
補足
gnome-screenshot
でとったスクリーンショットをクリップボードに転送したかったが、うまくいかず。
以下の情報より、ダミーの画像ファイルtmp.png
を作成することで、クリップボードへの転送ができた。
以前に「--clipboardと--fileを同時に使えない」というバグがあって修正されたらしいが、これがきっかけで別のバグを作ったのではないかと思う。。。