コマンドラインから「きれいな」スクリーンショットを撮る

Ubuntuスクリーンショットを撮る時は、標準の「スクリーンショットの取得」*1を使ったり、ImageMagickのimportコマンドだったりxwdだったりを使うと思います。

これらのコマンドは、コマンドラインから自動で処理させる場合には微妙に扱いづらいです。「スクリーンショットの取得」は必ずダイアログが出てしまうし、importやxwdは透過が反映されません。

で、どうにかいい方法がないかとぐぐっていた所、http://tips.webdesign10.com/how-to-take-a-screenshot-on-ubuntu-linuxという記事を見つけました。こちらの記事によるとscrotというコマンドを使えばできるとのことです。

scrotは以下の方法でインストールできます。お手軽ですね!

$ sudo aptitude install scrot

使い方

$ scrot

で画面全体がキャプチャされ、カレントディレクトリにpng形式のファイルが保存されます。ファイル名は「2011-01-20-235036_1280x800_scrot.png」のように自動的に付けられます。結構長いので被る心配も無いですね。

画面の一部をマウスで選択してキャプチャしたい場合、

$ scrot -s

でキャプチャできます。

ちなみに

なんでこんなことをしているかというと、Linux版のGyazoが内部でimportを使用していて、そのせいで画像がきれいに撮れなかったので改善したかったからです。
以下のように、26行目あたりのimportをscrot -sに変えると、LinuxGyazoでもきれいなスクリーンショットが撮れます。勿論scrotをインストールしていないと動きませんが。

if imagefile && File.exist?(imagefile) then
  system "convert #{imagefile} #{tmpfile}"
else
  #system "import #{tmpfile}"
  system "scrot -s #{tmpfile}"
end

*1:gnome-screenshotのことです。