Jaybanuan's Blog

どうせまた調べるハメになることをメモしていくブログ

Ubuntu 20.04LTSでウィンドウのスクリーンショットをとったら周辺に透明な領域があって邪魔だった

はじめに

ウィンドウのスクリーンショットを取ると、何故かウィンドウの周辺に透明な領域(drop shadow ?)がある。 邪魔なので消そうと思った。

f:id:redj:20220319013204p:plain

環境

$ 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で指定するようにしている。 これで、以下のようにウィンドウの周辺の透明な領域がないスクリーンショットを取得できた。

f:id:redj:20220319013216p:plain

補足

gnome-screenshotでとったスクリーンショットクリップボードに転送したかったが、うまくいかず。 以下の情報より、ダミーの画像ファイルtmp.pngを作成することで、クリップボードへの転送ができた。

askubuntu.com

以前に「--clipboardと--fileを同時に使えない」というバグがあって修正されたらしいが、これがきっかけで別のバグを作ったのではないかと思う。。。

bugs.launchpad.net