Linux(X Window System)でスクリーンショットを撮る方法
タグ: linux / 初版公開: 2013-09-17

最近のウィンドウ環境であれば、まるでWindowsのようにPrintScreenで簡単にスクリーンショットが撮れる。しかし、中にはやんちゃな環境を使っていて、古風な方法を是とする人も居るだろう。

X Window Systemでスクリーンショットを撮るコマンドはxwdだ。起動するとカーソルが変わり、この状態で対象のウィンドウをクリックするとスクリーンショットが撮れる。WindowsでいうAlt + PrintScreenに近い。

xwd

画面の表示内容をすべてスクリーンショットに撮りたい場合、これはX Window Sytemでルートウィンドウと呼ばれるものだが、xwdの-rootオプションを使う。WindowsでいうPrintScreenにあたる操作と言える。

xwd -root

ただ、xwd -rootするとターミナルでxwdコマンドを実行した瞬間のスクリーンショットが撮られるため、sleepコマンドをタイマーのように使ってスクリーンショットを撮ることが多い。

sleep 3; xwd -root

xwdコマンドは、恐ろしいことにスクリーンショットを標準出力に出力する。驚愕である。このため巷ではxwdコマンドの出力をリダイレクトして保存するよう薦める解説が多いようだ。

xwd > screenshot.xwd

私はもう何年もLinuxを使っているが、このxwd形式というのは、xwdの出力でしかお目にかかったことはない。gimpで編集できるので、これでも良いのだが、できればjpegやpngで出力したいものだ。

個人的にはもう1歩進めて、imagemagickのconvertコマンドを併用して一気に変換してしまうのが良いと思う。convertコマンドはオプションに-を与えると、標準入力を入力ファイルと見なす。xwdコマンドの出力をパイプでconvertコマンドに渡してやれば良い。

xwd | convert - screenshot.png

これで晴れてLinuxのスクリーンショットがpngで出力できるわけだ。convertを通せばリサイズ等ができるので、あとは好みの形に加工するスクリプトを作ってしまうと良いだろう。

ここまでxwdコマンドを使うことに拘ってきたが、imagemagickが入っているならimportを使うのが簡単だ。使い方はxwdとほぼ同じだが、出力ファイルが指定できるので、コマンド1発でjpegやpngにできる。

import screenshot.png

2014/2/7追記

もっと今風なスクリーンショットツールとしてはshutterが便利である。