ウェブサイト検索

Linuxでmaimを使用してスクリーンショットを撮る方法


Linuxにはスクリーンショットを撮るために使用できる多くのユーティリティがあります。GNOME、KDE、XFCEのような完全なデスクトップ環境には、この作業のために特別に設計された統合アプリケーションがありますが、他にもデスクトップに依存しない小さなプログラムがたくさん存在します。このチュートリアルでは、非常に軽量で多用途なコマンドラインアプリケーションmaim(make image)について説明し、その動作を変更するために使用できる多くのオプションを見ていきます。

このチュートリアルではあなたが学ぶことになる:

  • 最も使用されているLinuxディストリビューションにmaimをインストールする方法
  • 画面全体のスクリーンショットを撮る方法
  • 特定の形式(png/jpg)でスクリーンショットを保存する方法
  • 画面の領域をインタラクティブに選択する方法
  • maimにウィンドウのIDを渡してスクリーンショットを撮る方法
  • 遅延付きでスクリーンショットを撮る方法
  • パイプラインでmaimを使用する方法

使用されるソフトウェア要件と規約

インストール

maimユーティリティは、Linux上でスクリーンショットを取るために使用される別のコマンドラインユーティリティであるscrotの改良版として設計されました。このアプリケーションは無料でオープンソースのソフトウェアであり、ソースコードはGitHubで入手可能です。Maimは、最も使用されているすべてのLinuxディストリビューションのデフォルトリポジトリに利用可能なので、Fedora、Archlinux、Debianおよびその派生物に簡単にインストールできます。Red Hatが後援するコミュニティディストリビューションでは、dnfパッケージマネージャーを使用してこのタスクを実行できます。
私たちは次のように実行します:

sudo dnf install maim

「maim」パッケージはArchlinuxの「Community」リポジトリでも利用可能です。これをインストールするには、pacmanを使用できます:

sudo pacman -Sy maim

最後に、Debianおよびその派生ディストリビューションでは、リポジトリを同期させ、apt-getを使用してユーティリティをインストールできます:

sudo apt-get update && sudo apt-get install maim

アプリケーションがシステムにインストールされると、コマンドラインからスクリーンショットを撮るために使用できます。では、見てみましょう!

基本的な使用法

maimユーティリティは非常に使いやすいです。まずは、その基本的な使い方を見てみましょう。例えば、画面全体のスクリーンショットを撮って「screenshot.png」ファイルに保存したいとしましょう。私たちがする必要があるのは、maimを起動し、引数としてファイルのパスを渡すことだけです。私たちは次のように実行します:

maim ~/screenshot.png

デフォルトでは、アプリケーションはファイル名から画像を保存する形式を理解しようとします。したがって、上記のコマンドを実行すると、画像はpng形式で保存されます。ただし、明示的に使用したい形式を渡すために使用できるオプションがあります:-f(--formatの短縮形)。画像を明示的にjpg形式で保存するには、次のように実行します:

maim -f jpg ~/screenshot

すでに述べたように、サポートされているのはpngとjpgフォーマットのみで、前者がデフォルトです。また、-mオプションを使用して生成される画像の品質を選択し、圧縮レベルを1から10の整数で表現することもできます。これは選択した画像フォーマットに応じて異なる影響を与えます。

キャプチャする領域をインタラクティブに選択する

前の例で使用したコマンドを実行すると、画面全体の内容が自動的にスクリーンショットに含まれ、ユーザーの操作は必要ありません。しかし、場合によっては、キャプチャする画面の領域をより正確に選択したいことがあります。このタスクを達成するために、アプリケーションを -s オプション (--select) で実行できます。これにより、maimが「インタラクティブモード」で実行されます。

maim -s ~/screenshot

上記のコマンドを実行すると、カーソルの形が「プラス」サインに変わり、キャプチャする領域を選択できるようになります。マウスの左ボタンを離すと、スクリーンショットが指定されたパスに保存されます。

IDによって特定のウィンドウのみをキャプチャする

特定のウィンドウだけをキャプチャし、他のすべてを省くために使える別のオプションは、-i(--window)オプションを使ってmaimを実行し、キャプチャしたいウィンドウのIDをオプションに引数として渡すことです。この時、必ず疑問が生じるでしょう:「ウィンドウIDはどうやって取得できますか?」。Xorgサーバーを使用している場合、この作業を達成するためにxdotoolユーティリティを使用することができます。私たちがしなければならないことは、selectwindowコマンドでアプリケーションを呼び出し、カーソルの形状が変わったら、IDを知りたいウィンドウをクリックすることです。そのIDはターミナルに表示されます。

 xdotool selectwindow
37748743

ウィンドウのIDが分かれば、次のようにしてmaimに渡すことができます:

maim -i 37748743 ~/screenshot

同じ原則を使って、アクティブなウィンドウのみをキャプチャすることができます。今回は、現在のアクティブウィンドウのIDを返すgetactivewindowコマンドでxdotoolを起動するだけで済みます。シェルコマンドの
置換機能を使用することで、すべてを1行で実行できます:

maim -i "$(xdotool getactivewindow)" ~/screenshot

特定の地域が選択されたときに背景を含めて

特定の画面領域をキャプチャするように選択するとき、インタラクティブにまたは前の例のようにウィンドウIDを指定することで、maimは指定されたウィンドウのみをキャプチャし、背景は無視します。次に、現在のアクティブウィンドウを選択して撮影したスクリーンショットの例を示します:

ご覧のように、画像の下にあった元の背景はスクリーンショットには含まれていません。ほとんどの場合、これは望ましい動作です。しかし、背景を含めたい場合は、-Bオプションを使用できます。これは--capturebackgroundの短縮形です。以下に、それを使用してアプリケーションを呼び出した結果を示します:

遅延を設定してスクリーンショットを撮る

Maimには非常に興味深い機能があります。それは、実際にスクリーンショットを撮る前に、秒数で表現された遅延を使用できることです。この機能を可能にするオプションは-d(--delayの短縮形)です。想像できるように、私たちがしなければならないのは、そのオプションに浮動小数点数を引数として渡すことです。したがって、実際にスクリーンショットを撮る前に5秒待つには、次のコマンドを実行することができます:

maim -d 5 ~/screenshot

コマンドが実行されると、画面にカウントダウンが表示されます。カウントダウンが終了すると、スクリーンショットが指定された場所に保存されます。

パイプラインでmaimを使用する

前の例では、maimでキャプチャしたスクリーンショットを保存するためのファイルパスを提供しました。しかし、この引数は、maimがパイプラインで使用される場合は省略できます。なぜなら、コマンドはデフォルトでエンコードされた画像データを標準出力に出力するためです。この機能により、maimでキャプチャした画像をその場で処理することができます。例を見てみましょう。スクリーンショットを撮って自動的にクリップボードにコピーしたいとします。Xorgを使用している場合、次のように書くことができます:

maim | xclip -selection clipboard

上記の例では、エンコードされた画像データである maim の出力が、X サーバーの選択のコマンドラインインターフェースである xclip アプリケーションの標準入力として使用されます。この場合、-selection オプションを使用して、どの X 選択を使用するかを指定します。

エンコードされた画像データはクリップボードに保存され、好きな画像編集ソフトや画像をサポートする他のアプリケーションに貼り付ける準備が整います。

同様に、ImageMagickなどのコマンドラインアプリケーションの標準入力に渡すことによって、取得した画像を修正します。

結論

このチュートリアルでは、Xorgサーバーを実行しているLinux上でスクリーンショットをキャプチャするために使用されるコマンドラインユーティリティmaimの使い方を学びました。最も使用されているLinuxディストリビューションのいくつかにアプリケーションをインストールする方法、全画面または特定の領域をインタラクティブに、またはウィンドウのIDを渡してキャプチャする方法、スクリーンショットを保存する形式を指定する方法を見ました。また、遅延を使ってスクリーンショットを撮る方法や、パイプラインでmaimを実行する方法も学びました。

関連記事: