できること

ラズパイ(Raspberry Pi)でスクリーンショットを撮るベストな方法は? コマンドラインのscrot? それともGUIのgnome-screenshot?

ラズパイ(Raspberry Pi)はマイコンボードのような外見を持ちながら、中身はLinuxを搭載するパソコンと変わりません。
Linuxが得意とするネットワークの機能を使ってサーバーとして動作させることも、またマウスやキーボードを使ったGUI環境で日常の業務をこなすこともできます。

特にGUIで作業する際に便利なのはスクリーンショットの撮影です。ちょっとしたメモ代わりや業務マニュアル、トラブルシューティングなどに意外と利用しているはずです。
WindowsやMacで当たり前に使っているスクリーンショットですが、Linuxではどのように撮影するかご存じですか?
あらゆる部分をカスタマイズできるLinuxを搭載するラズパイには、用途に応じてスクリーンショットを撮る方法もたくさんあります。

今回はスクリーンショットを撮影する方法の中から代表的な3種類を紹介します。

 

目次

  1. 初めからインストールされている「scrot」
  2. scrotをコマンドラインで使用する
    1. 2.1. オプションなしでスクリーンショット
    2. 2.2. ファイル名を指定してスクリーンショット
    3. 2.3. タイムラグ(遅延)をもつスクリーンショット
    4. 2.4. アクティブウィンドウだけスクリーンショット
  3. scrotの便利な使い方
    1. 3.1. バックグランドでスクリーンショット
    2. 3.2. ターミナルをクリアしておく
    3. 3.3. SSH接続を通してscrotを使用する
  4. 設定画面でオプションを指定するgnome-screenshot
  5. CLI環境ではスクリーンショットが撮影できない!?
  6. raspi2pngでウィンドウシステムを使わないアプリケーションを撮影
    1. 6.1. raspi2pngのインストール
    2. 6.2. raspi2pngの使い方
  7. まとめ

 

1. 初めからインストールされている「scrot」

ラズパイのOS(Linux)には「scrot」と呼ばれるスクリーンショットを撮るアプリケーションがインストールされています。
このアプリケーションはキーボードの「Print Screen」キーを押すことでスクリーンショットを撮影するように設定されています。一般的なキーボードでは「Print Screen」キーは右上に配置されています。また「Prt Sc」「Prt Scn」などと短縮表記されている場合もあります。
初期状態ではスクリーンショットは「/home/pi」にPNG形式で保存されます。ファイル名は「日付-時刻_縦横サイズ_scrot.png」です。

ultimate-guide-to-taking-screenshot-on-raspberry-pi-01

scrotで撮影したスクリーンショット

一般的なスクリーンショットには、この「scrot」を使う方法が一番簡単です。

 

2. scrotをコマンドラインで使用する

scrotはコマンドラインから起動できます。
オプションを指定することで動作を簡単にカスタマイズできます。よく使うものを紹介します。

2.1. オプションなしでスクリーンショット

コマンドでスクリーンショットを撮影するには、ターミナルを起動して以下を入力してください。

scrot

このコマンドには「Print Screen」キーを押すのと同じ効果があります。ターミナル上で作業している際は「Print Screen」キーを押すより手軽です。ただし撮影されたスクリーンショットはカレントディレクトリ(作業をしているディレクトリ)に保存されるので注意してください。

2.2. ファイル名を指定してスクリーンショット

scrotが保存するスクリーンショットのファイル名は「日付-時刻_縦横サイズ_scrot.png」です。
わかりやすい名前でスクリーンショットを保存できます。以下はカレントディレクトリにmyapplication.pngというファイル名で保存する例です。

scrot myapplication.png

カレントディレクトリ以外の場所に保存したい場合はファイル名にディレクトリを付加して実行します。
以下はディレクトリ/home/pi/Picturesにmyapplication.pngというファイル名で保存する例です。

scrot /home/pi/Pictures/myapplication.png

2.3. タイムラグ(遅延)をもつスクリーンショット

通常スクリーンショットは「Print Screen」キーを押した直後に撮影されます。コマンドの場合はターミナルで「Enter」キーを押した直後です。
例えばターミナルからscrotコマンドを起動した場合のスクリーンショットは以下のようになるはずです。

ultimate-guide-to-taking-screenshot-on-raspberry-pi-02

ターミナルからscrotを起動

 

図のようにscrotを起動した直後の状態のスクリーンショットではなく、他のコマンドを実行した際のスクリーンショットが欲しい場合は、タイムラグ(遅延)を持たせて撮影します。
タイムラグは-dオプション+秒数で指定します。以下は10秒後にスクリーンショットを撮影する例です。

scrot -d 10

2.4. アクティブウィンドウだけスクリーンショット

ここまでのコマンドはデスクトップ全体を撮影しました。
デスクトップ全体ではなく、アクティブなウィンドウのみを撮影するには-uオプションを使います。

scrot -u

このコマンドで撮影されるのは、アクティブウィンドウであるコマンドを入力したターミナルです。前に紹介したタイムラグ(-d)を組み合わせれば、アクティブウィンドウを別のウィンドウに切り替えることができます。
以下は「10秒後にアクティブウィンドウを撮影」する例です。「Enter」キーを押したあと、10秒以内に撮影したいウィンドウをクリックしてアクティブウィンドウを切り替えます。

scrot -u -d 10

ターミナル以外のウィンドウを撮影したい場合は-sオプションも使用できます。
-sを指定してscrotを起動すると、マウスで撮影するウィンドウを選択するまでスクリーンショットは撮られません。
また、左クリックしたまま(左ボタンを押した状態)でマウスを動かすと、撮影する領域を矩形選択できます。

scrot -s

スクリーンショットにウィンドウ名が表示されているタイトルバーを含めたい場合は-bオプションを使用します。
-bオプションは
「アクティブウィンドウのみ(-uオプション)」
「ウィンドウをクリック(-sオプション)」
と組み合わせて使用します。
以下のコマンドは「アクティブウィンドウのタイトルバーを含めて撮影」する例です。

scrot -ub

続いて「タイトルバーと合わせて撮影するウィンドウをクリックで選択」する例です。

scrot -sb

利用シーンに合わせて使い分けてください。

 

3. scrotの便利な使い方

scrotの便利な使い方を紹介します。

3.1. バックグランドでスクリーンショット

画面上で何か作業している様子を記録に残したい場合は前述の「タイムラグ」を利用します。以下は「40秒後にアクティブウィンドウを撮影」する例です。

scrot -u -d 40

この方法は、コマンドを入力したターミナルと異なるウィンドウのスクリーンショットを撮る際に有効です。
ただし、コマンドを入力したターミナルにはスクリーンショットを撮り終わるまで新たなコマンドが入力できないため、「このターミナル上で作業している状態」を撮影できません。
ターミナルで作業している様子を撮影したい場合は新たなターミナルを立ち上げ、一方でscrotを起動、もう一方で作業しなければなりません。
以下のコマンドを使用すると、もう少しシンプルにターミナルでの作業を記録できます。

scrot -u -d 40 &

コマンドの末尾にアンパサンド記号(&)をつけるとscrotはバックグランドで待機します。
「Enter」キーを入力した直後に新たなコマンドが入力できるので、撮影したい作業を進めます。40秒後(-d 40の場合)にその様子が撮影され、スクリーンショットがカレントディレクトリ内に保存されます。

3.2. ターミナルをクリアしておく

scrotの使い方というよりターミナルの便利な使い方です。
ターミナルで作業している様子をスクリーンショットするときに関係のない作業結果がターミナル上に残っていると、あとで記録を見たときに混乱するかもしれません。
そこでスクリーンショットを撮る前にターミナル画面をクリアしておくと良いでしょう。その場合は次のコマンドを入力します。

clear

これでターミナル上の以前の作業が消去されて記録したいコマンドと結果だけが残るので、あとで混乱することが防げます。

3.3. SSH接続を通してscrotを使用する

コマンドでスクリーンショットを撮影するscrotはSSHを使ったリモート接続でも使用できます。
SSHが利用できる端末であればノートパソコンやタブレット、スマートフォンからでもスクリーンショットを撮影できます。
scrotをリモート接続で使用するには、以下のようにscrotコマンドの前に「DISPLAY=:0」を付けます

DISPLAY=:0 scrot

scrotコマンドのオプションはリモート接続でも同じように使用できます。例えばアクティブウィンドウを撮影する際に、そのタイトルバーを含めてmywindow.pngのファイル名で保存する場合は以下のように入力します。

DISPLAY=:0 scrot -ub mywindow.png

 

4. 設定画面でオプションを指定できるgnome-screenshot

scrotは便利なアプリケーションですが、オプションは全てコマンド入力で行う必要があります。GUIに慣れている人はマウス操作でオプションを設定したいと思うはずです。その場合はgnome-screenshotを使用すると良いでしょう。
gnome-screenshotを使用するにはインストールが必要です。

インストールの前にラズパイのOSを最新の状態に更新します。以下のコマンドを入力してください。

sudo apt update && sudo apt upgrade -y

OSの更新が完了したらgnome-screenshotをインストールします。以下のコマンドを入力してください。

sudo apt install gnome-screenshot

gnome-screenshotは[アクセサリ] ≫ [スクリーンショット]の中にインストールされます。

ultimate-guide-to-taking-screenshot-on-raspberry-pi-03

メニューに追加されたgnome-screenshot

 

gnome-screenshotの設定画面は以下のようにシンプルです。

ultimate-guide-to-taking-screenshot-on-raspberry-pi-04

gnome-screenshotの設定画面

 

5. CLI環境ではスクリーンショットが撮影できない!?

ラズパイにCLIでログインしている際は、紹介した2つのアプリケーションのいずれも機能しません。scrotを起動しても以下のように表示されるだけです。

ultimate-guide-to-taking-screenshot-on-raspberry-pi-05

CLIでscrotを使用

 

本記事では「デスクトップのない操作環境」の意味で「CLI」という語を使用します。「CUI」と呼ぶ場合もありますが、本記事では「CLI」に統一します。

ここまで紹介したスクリーンショットを撮影する2つのアプリケーションは「ウィンドウシステム(X Window System)」にアクセスしています。ウィンドウシステムとは画面を描画するためのアプリケーションです。デスクトップがないCLI環境ではウィンドウシステムも起動していないため、スクリーンショットの撮影ができません。
この問題はデスクトップを使用している時にも発生する場合があります。LinuxはCLI環境の上でウィンドウシステムが動作する構造のため、CLI環境で起動されたアプリケーション(ウィンドウシステムを使わないで画面を直接描画するアプリケーション)だとスクリーンショットを撮影できません。

この問題はAmiberryのようなエミュレータの画面を撮影する場合には必ず起こります。
Amiberryは1980年台から1990年台に流行したグラフィックに強いパソコン、Amigaをラズパイ上で再現するアプリケーションです。レトロゲームのファンの間では今も高い人気があります。
例えばAmiberryの画面を撮影しようと「タイムラグ」を指定してscrotを起動しても、撮影されるスクリーンショットは以下のようなものです。

ultimate-guide-to-taking-screenshot-on-raspberry-pi-06

scrotでAmiberryを撮影

 

実際には以下の画面を撮影しようとしました。

ultimate-guide-to-taking-screenshot-on-raspberry-pi-07

Amiberryの設定画面

 

全く意図しない画面がスクリーンショットとして撮影されてしまいます。

以下では、raspi2pngというアプリケーションを使ってこの問題に対処する方法を解説します。

 

6. raspi2pngでウィンドウシステムを使わないアプリケーションを撮影

ラズパイのOSであるLinuxはよく考えられたOSであり、画面の表示を行う「ウィンドウシステム(X Window System)」もアプリケーションの一つに過ぎません。そのため画面表示の必要ないサーバーでの使用にも強く、またエミュレータを使えば全く別のコンピュータに変えてしまうこともできます。
ウィンドウシステムに依存したこの柔軟性は、先程のようなスクリーンショットの問題を起こしてしまいます。
その問題を解決するのがraspi2pngです。raspi2pngはウィンドウシステムにアクセスしないのでディスプレイに表示されているものを全て撮影できます。

6.1. raspi2pngのインストール

早速raspi2pngをインストールしてみましょう。

raspi2pngを手軽にインストールできるスクリプトが配布されています。以下のコマンドを入力すればスクリプトのダウンロードと実行(インストール)が続けて行われます。
スクリプトはgithubに置かれています。インターネットからスクリプトを実行する際には、セキュリティー対策として「安全なスクリプトか?」を前もって確認することをお勧めします。

インストール中には依存関係にあるアプリケーションにもダウンロード、コンパイルが行われます。インストールの最後に情報画面が表示されます。

それではインストールを始めます。以下のコマンドを入力してください。

curl -sL https://raw.githubusercontent.com/AndrewFromMelbourne/raspi2png/master/installer.sh | bash -

raspi2pngのバージョン情報や使用できるオプションの一覧などが最後に表示されればインストールは完了です。

6.2. raspi2pngの使い方

raspi2pngの使用方法を説明します。
最初にraspi2pngのバージョン情報や使用できるオプションの一覧を見てみましょう。以下のコマンドを入力してください。

raspi2png -H

今回はオプション-dと-pを使った例を紹介します。

-dオプションはscrotの「タイムラグ」と同等の機能で、指定した秒数スクリーンショットの撮影を遅延します。以下はスクリーンショットの撮影を20秒間遅らせる例です。

raspi2png -d 20

スクリーンショットを保存する際のファイル名の指定方法には-pオプションを使用します。以下はカレントディレクトリにmyscreenshot.pngのファイル名で保存する例です。

raspi2png -p myscreenshot.png

-pオプションを使ってファイル名を指定しない場合、スクリーンショットはsnapshot.pngの名前で保存されます。このファイルはコマンドが実行されるたびに上書きされ、以前に撮影されたスクリーンショットは残らないので注意が必要です。

raspi2pngは-dと-p以外にも、アンパサンド(&)をコマンドの末尾に付加してバックグラウンドでスクリーンショットを撮影して、SSHでリモート接続しているサーバーで実行するなど「scrotの便利な使い方」で説明したような使い方ができます。
ただしリモート接続で使う場合はscrotのようにDISPLAY=:0を使用する必要はありません。

7. まとめ

本記事ではラズパイでスクリーンショットを撮影する3種類のアプリケーションを解説しました。
raspi2pngはエミュレータで実行しているゲーム画面など、ディスプレイには表示されていてもscrotでは撮影できないような画面でもスクリーンショットを撮れます。
撮影するウィンドウの選択やマウスを使って撮影範囲を矩形選択する場合はscrotを選択します。
gnome-screenshotが持つ機能はscrotと大きな違いはありません。ただしターミナルの作業が苦手な場合はgnome-screenshotの方が便利です。
どのアプリケーションも一長一短があります。作業にあった方法を選び、ラズパイでLinuxを楽しみましょう。

アバター画像

エレクトロニクスやメカトロニクスを愛するみなさんに、深く愛されるサイトを目指してDevice Plusを運営中。

https://deviceplus.jp

NHK学生ロボコン2018