Taking a screenshot (日本語) - ArchWiki

# Taking a screenshot (日本語)

この記事ではシステムのスクリーンショットを取得する様々な方法を説明しています。

## 専用のソフトウェア

- Deepin Screenshot — とても使いやすいスクリーンショットツール。機能: スクリーンショットツールを発動するホットキー、選択した領域のスクリーンショットの取得、スクリーンショットに文章や線画を簡単に追加。Python/GTK2 ベース。

  http://www.linuxdeepin.com/ || deepin-screenshot

- KSnapshot — スクリーンショットを撮るための KDE のアプリケーション。デスクトップ全体、単一のウィンドウ、ウィンドウの一部、四角形またはフリーハンドで指定した領域の画面をキャプチャすることができます。kdegraphics に含まれています。

  http://kde.org/applications/graphics/ksnapshot/ || kdegraphics-ksnapshot

- Scrot — X 向けのシンプルなコマンドラインスクリーンショットユーティリティ。

  http://freecode.com/projects/scrot || scrot

- Escrotum — pygtk を使用して画面をキャプチャ。scrot の影響を受けています。

  https://github.com/Roger/escrotum || escrotum-git

- maim — imlib2 を使ってスクリーンショットを取得するシンプルなコマンドラインユーティリティ。scrot を置き換えるものとして様々な点で scrot よりも優れています。

  https://github.com/naelstrof/maim || maim

- Shutter — リッチなスクリーンショット・編集プログラム。

  http://shutter-project.org/ || shutter

- Xfce4 Screenshooter — 画面全体、アクティブウィンドウ、または選択領域のキャプチャを行えます。スクリーンショットを撮るまでの待機時間とスクリーンショットを撮った後の動作を設定できます: PNG ファイルに保存、クリップボードにコピー、別のアプリケーションで開く、無料の画像ホスティングサービスである ZimageZ にアップロード。xfce4-goodies に含まれています。

  http://goodies.xfce.org/projects/applications/xfce4-screenshooter || xfce4-screenshooter

- xwd — X Window System イメージダンプユーティリティ。

  http://xorg.freedesktop.org/ || xorg-xwd

- zscreen — 画面全体や領域を選択してスクリーンショットを取得し、自動的にスクリーンショットを imgur にアップロードできる軽量な GUI。スクリーンショットを取得するときの GUI として scrot と zenity を使います。

  https://github.com/ChrisZeta/Scrot-and-imgur-zenity-GUI || zscreen

## スクリーンショットユーティリティが含まれているパッケージ

- GIMP — Adobe Photoshop などのプロプライエタリなエディタに匹敵する画像編集スイート。GIMP (GNU Image Manipulation Program) の開発は1990年代中頃から開始され、大量のプラグインや補助ツールが存在します。

  http://www.gimp.org/ || gimp

- GraphicsMagick — API やコマンドラインの安定性を確保するために作られた ImageMagick のフォーク。パフォーマンスを向上させるためのマルチコア CPU をサポートしており、パフォーマンスを目当てに様々な巨大な商用サイト (Flickr, etsy) で採用されています。

  http://www.graphicsmagick.org/ || graphicsmagick

- ImageMagick — コマンドラインの画像処理プログラム。100以上のフォーマットをサポートしており正確なフォーマット変換ができることで知られています。ImageMagick の API はスクリプト化することができ大抵はバックエンドの処理に使われています。

  http://www.imagemagick.org/script/index.php || imagemagick

- Imlib2 — 画像ファイルのロードと保存、さらにレンダリング、操作、任意多角形をサポートしているライブラリ。

  http://sourceforge.net/projects/enlightenment/ || imlib2

## 一般的な方法

### ImageMagick/GraphicsMagick

`import` コマンドを使うことで現在のシステムのスクリーンショットを簡単に取得できます:

    $ import -window root screenshot.jpg

`import` は imagemagick パッケージに入っています。

`-window` オプションを付けずに `import` を実行するとウィンドウや任意の領域をインタラクティブに選択することが可能です。

Note: graphicsmagick を使いたい場合は、"gm" を前に付けて下さい、例: `$ gm import -window root screenshot.jpg`。

#### 複数の X 画面のスクリーンショット

twinview または dualhead で使っている場合、2回スクリーンショットを取得して `imagemagick` を使って貼り付けます:

    import -window root -display :0.0 -screen /tmp/0.png
    import -window root -display :0.1 -screen /tmp/1.png
    convert +append /tmp/0.png /tmp/1.png screenshot.png
    rm /tmp/{0,1}.png

#### Xinerama ヘッドのスクリーンショット

Xinerama による multi-head セットアップでは仮想スクリーンが一つしかありません。物理的なスクリーンの高さに違いがあると、スクリーンショットにデッドスペースが出来てしまいます。こういう場合、それぞれの物理的なスクリーンごとにスクリーンショットを取得すると良いでしょう。Xinerama の情報が X サーバーから取り出せていれば、以下のスクリプトが動作します:

    #!/bin/sh
    xdpyinfo -ext XINERAMA | sed '/^  head #/!d;s///' |
    while IFS=' :x@,' read i w h x y; do
            import -window root -crop ${w}x$h+$x+$y head_$i.png
    done

#### アクティブなウィンドウ/フォーカスしたウィンドウのスクリーンショット

以下のスクリプトは現在フォーカスされているウィンドウのスクリーンショットを取得します。EWMH/NetWM 準拠の X ウィンドウマネージャで動作します。スクリーンショットを上書きしないように、ファイル名に取得時刻を使っています。

    #!/bin/sh
    activeWinLine=$(xprop -root | grep "_NET_ACTIVE_WINDOW(WINDOW)")
    activeWinId=${activeWinLine:40}
    import -window "$activeWinId" /tmp/$(date +%F_%H%M%S_%N).png

もしくは、次のコマンドは EWMH をサポートしているかどうかに関わらず動作します:

    $ import -window "$(xdotool getwindowfocus -f)" /tmp/$(date +%F_%H%M%S_%N).png

Note: (dwb や zathura) プログラムのスクリーンショットが空になる場合は、`xdotool` コマンドに `-frame` を付けたり `-f` を削除してみてください。

### GIMP

GIMP を使ってスクリーンショットを取得することもできます (File > Create > Screenshot...)。

### xwd

ルートウィンドウのスクリーンショットを取得:

    $ xwd -root -out screenshot.xwd

Note: `import` でアクティブウィンドウのスクリーンショットを取得する方法でも `xwd` を使うことができます。

### scrot

Note: このスレッド によると、scrot は dwm や xbindkeys で動作しません。

scrot を使えば CLI からスクリーンショットを撮ることができ、シャッターを押すまでの待機時間をユーザーが定義できるなどの機能があります。特に指定がなければ、カレントディレクトリにファイルが保存されます。

    $ scrot -t 20 -d 5

上記のコマンドは日付が入った `.png` ファイルが作成され、ウェブ投稿用にサムネイルも作られます (元の画像の 20%)。上の例ではキャプチャするまで5秒間待ちます。

ファイルに保存するときに標準的な日付のフォーマットを使うこともできます、例えば:

    $ scrot ~/screenshots/%Y-%m-%d-%T-screenshot.png

このコマンドではホームディレクトリの "screenshots" という名前のフォルダに、現在の年・月・日・時間・分・秒がファイル名のスクリーンショットが保存されます。

詳しくは `man scrot` を見て下さい。[1] のようにファイルのアップロードを自動化することもできます。

### escrotum

escrotum-git は pygtk を使って画面をキャプチャします。scrot にインスパイアされています。

選択モードを使った時に scrot ではウィンドウのリフレッシュでバグが発生するので開発されました。

コマンドラインインターフェースは scrot とほぼ同じなので、そのまま同じように使うことができます。

### imlib2

imlib2 にはスクリーンショットを取得するためのバイナリ `imlib2_grab` が含まれています。フルスクリーンのスクリーンショットを取得するには、次を入力:

    $ imlib2_grab screenshot.png

実は scrot は `imlib2` を使っています。

## デスクトップ環境による方法

### KSnapshot

KDE を使っている場合、`KSnapshot` を使用すると良いでしょう。`Prnt Scr` で使うことができます。

KSnapshot は kdegraphics-ksnapshot に入っています。

### Xfce Screenshooter

Xfce を使っている場合 xfce4-screenshooter をインストールしてキーボードバインディングを追加することができます:

Xfce Menu > Settings > Keyboard > Application Shortcuts

Screenshot プロンプトをスキップしたい場合は、オプションのターミナルに `$ xfce4-screenshooter -h` と入力してください。

### GNOME

GNOME ユーザーは `Prnt Scr` を押すか Apps > Accessories > Take Screenshot でスクリーンショットが取れます。gnome-screenshot をインストールする必要があります。

### 他のデスクトップ環境やウィンドウマネージャ

LXDE などのデスクトップ環境や Openbox や Compiz などのウィンドウマネージャの場合、上述のコマンドをホットキーに追加してスクリーンショットを撮影することができます。例えば:

    $ import -window root ~/Pictures/$(date '+%Y%m%d-%H%M%S').png

上のコマンドを `Prnt Scr` キーに追加すれば Compiz でスクリーンショットを取得して Pictures フォルダに日付を付けて保存できます。Openbox の `rc.xml` ファイルではコンマを使えないので、Openbox でこのコマンドを `Prnt Scr` キーに指定するには、`rc.xml` ファイルのキーボードセクションに以下を追加する必要があります:

    rc.xml

    <!-- Screenshot -->
        <keybind key="Print">
          <action name="Execute">
            <command>sh -c "import -window root ~/Pictures/$(date '+%Y%m%d-%H%M%S').png"</command>
          </action>
        </keybind>

## ターミナル

### ansi コードで出力

util-linux パッケージに含まれている、`script` コマンドを使うことができます。`$ script` と入力すればその瞬間から、全ての出力は (ansi コードを含めて) `typescript` ファイルに保存されるようになります。

終わったら、`exit` と入力するだけで `typescript` が作成されます。作成されたファイルは AUR の ansi2html パッケージを使って html に変換できます。

`typescript` ファイルを `typescript.html` に変換するには、次を実行:

    $ ansi2html --bg=dark < typescript > typescript.html

また、コマンドによっては直接 ansi2html にパイプで渡すこともできます:

    $ ls --color|ansi2html --bg=dark >output.html

どんなコマンドでも使えるというわけではないので、その場合は、`script` を使う必要があります。

### 仮想端末

framebuffer をインストールして fbgrab または fbdump を使ってスクリーンショットを取得してください。

単にコンソールの文章を取得したいだけで画像は要らない場合、util-linux パッケージに含まれている `setterm` を使うことができます。以下のコマンドは仮想端末1のテキストをカレントディレクトリの screen.dump ファイルに保存します:

    # setterm -dump 1 -file screen.dump

`/dev/vcs1` の中身を読まないといけないので root 権限が必要です。

Category:

- Graphics and desktop publishing (日本語)