Archlinuxでスクリーンショット

設定もぼちぼち落ち着いてきたので、スクリーンショットでも取ろうかと。

importというコマンドでスクリーンショットが取れるので、 どのパッケージにあるのか探してみる。

$ pkgfile import
extra/bash-completion
extra/imagemagick
community/plan9port
community/quilt

うん、bash-completionは補完機能だから、imagemagickか。

yaourt -S imagemagick

依存関係を解決しています...
衝突するパッケージがないか確認しています...

パッケージ (3) liblqr-0.4.2-1  ocl-icd-2.2.10-1  imagemagick-6.9.7.0-2

合計ダウンロード容量:  2.25 MiB
合計インストール容量:  9.86 MiB

:: インストールを行いますか? [Y/n] 
:: パッケージを取得します...
liblqr-0.4.2-1-x86_64.pkg.tar.xz をダウンロード...
ocl-icd-2.2.10-1-x86_64.pkg.tar.xz をダウンロード...
imagemagick-6.9.7.0-2-x86_64.pkg.tar.xz をダウンロード...
キーリングを確認...
パッケージの整合性を確認しています...
パッケージファイルのロード...
ファイルの衝突を確認しています...
空き容量の確認...
:: パッケージの変更を処理しています...
インストール liblqr...
インストール ocl-icd...
ocl-icd の提案パッケージ
    opencl-driver: packaged opencl driver
インストール imagemagick...
imagemagick の提案パッケージ
    imagemagick-doc: for additional information
    ghostscript: for Ghostscript support [インストール済み]
    openexr: for OpenEXR support
    openjpeg2: for JP2 support [インストール済み]
    libwmf: for WMF support
    librsvg: for SVG support [インストール済み]
    libxml2: for XML support [インストール済み]
    libpng: for PNG support [インストール済み]
    libwebp: for WEBP support [インストール済み]

使い方をみる

$ import --help

Version: ImageMagick 6.9.7-0 Q16 x86_64 2016-12-23 http://www.imagemagick.org
Copyright: Copyright 1999-2017 ImageMagick Studio LLC
License: http://www.imagemagick.org/script/license.php
Features: Cipher DPC HDRI Modules OpenCL OpenMP 
Delegates (built-in): bzlib cairo fontconfig freetype gslib jng jp2 jpeg lcms lqr ltdl lzma openexr pangocairo png ps rsvg tiff webp wmf x xml zlib
Usage: import [options ...] [ file ]

Image Settings:
  -adjoin              join images into a single multi-image file
  -border              include window border in the output image
  -channel type        apply option to select image channels
  -colorspace type     alternate image colorspace
  -comment string      annotate image with comment
  -compress type       type of pixel compression when writing the image
  -define format:option
                       define one or more image format options
  -density geometry    horizontal and vertical density of the image
  -depth value         image depth
  -descend             obtain image by descending window hierarchy
  -display server      X server to contact
  -dispose method      layer disposal method
  -dither method       apply error diffusion to image
  -delay value         display the next image after pausing
  -encipher filename   convert plain pixels to cipher pixels
  -endian type         endianness (MSB or LSB) of the image
  -encoding type       text encoding type
  -filter type         use this filter when resizing an image
  -format "string"     output formatted image characteristics
  -frame               include window manager frame
  -gravity direction   which direction to gravitate towards
  -identify            identify the format and characteristics of the image
  -interlace type      None, Line, Plane, or Partition
  -interpolate method  pixel color interpolation method
  -label string        assign a label to an image
  -limit type value    Area, Disk, Map, or Memory resource limit
  -monitor             monitor progress
  -page geometry       size and location of an image canvas
  -pause seconds       seconds delay between snapshots
  -pointsize value     font point size
  -quality value       JPEG/MIFF/PNG compression level
  -quiet               suppress all warning messages
  -regard-warnings     pay attention to warning messages
  -respect-parentheses settings remain in effect until parenthesis boundary
  -sampling-factor geometry
                       horizontal and vertical sampling factor
  -scene value         image scene number
  -screen              select image from root window
  -seed value          seed a new sequence of pseudo-random numbers
  -set property value  set an image property
  -silent              operate silently, i.e. don't ring any bells 
  -snaps value         number of screen snapshots
  -support factor      resize support: > 1.0 is blurry, < 1.0 is sharp
  -synchronize         synchronize image to storage device
  -taint               declare the image as modified
  -transparent-color color
                       transparent color
  -treedepth value     color tree depth
  -verbose             print detailed information about the image
  -virtual-pixel method
                       Constant, Edge, Mirror, or Tile
  -window id           select window with this id or name

Image Operators:
  -annotate geometry text
                       annotate the image with text
  -colors value        preferred number of colors in the image
  -crop geometry       preferred size and location of the cropped image
  -encipher filename   convert plain pixels to cipher pixels
  -geometry geometry   preferred size or location of the image
  -help                print program options
  -monochrome          transform image to black and white
  -negate              replace every pixel with its complementary color 
  -repage geometry     size and location of an image canvas
  -quantize colorspace reduce colors in this colorspace
  -resize geometry     resize the image
  -rotate degrees      apply Paeth rotation to the image
  -strip               strip image of all profiles and comments
  -thumbnail geometry  create a thumbnail of the image
  -transparent color   make this color transparent within the image
  -trim                trim image edges
  -type type           image type

Miscellaneous Options:
  -debug events        display copious debugging information
  -help                print program options
  -list type           print a list of supported option arguments
  -log format          format of debugging information
  -version             print version information

By default, 'file' is written in the MIFF image format.  To
specify a particular image format, precede the filename with an image
format name and a colon (i.e. ps:image) or specify the image type as
the filename suffix (i.e. image.ps).  Specify 'file' as '-' for
standard input or output.

なんかいっぱいあるなぁ。 とりあえず、欲しい機能を抜粋

オプション 効果
-frame window別にキャプチャする
-window root 全画面キャプチャ
-crop geometry 画面から特定範囲を切り出す
オプション無し カーソルが出てきて領域を選択できる

ラッパーコマンドを作るならこんな感じか

#!/bin/basnh
NAME=$NAME
OPTION=$OPTION
DIR=/tmp

# スクリーンショットを取る
import $OPTION $DIR/$NAME
# ビューワーで確認する
feh $DIR/$NAME

マルチモニターでprimaryだけを取得するには全体を範囲にいれから切り抜く必要がある。 xrandrを使ってモニタ情報を取得する

$ xrandr | grep '^DP1' # モニタ名で絞り込むと以下のようなレスポンスがくるので
DP1 connected primary 2560x1440+3152+1152 (normal left inverted right x axis y axis) 600mm x 340mm
$ xrandr | grep '^DP1' | cut -d' ' -f4 # スペース区切りにした4フィールド目を取得
2560x1440+3152+1152

これを使ってスクリーンショットを取る

$ import -window root -crop $(xrandr|grep '^DP1'|cut -d' ' -f4) hoge.png

i3-wmに仕込むなら

~/bin/ss-monitorとかコマンド作成して

#!/bin/bash

MONITOR=${1}
NAME=$(date +%Y%m%d-%H%M%S).png
SIZE=$(xrandr|grep &quot;^${MONITOR}&quot;|cut -d&quot; &quot; -f4)
OPTIONS=&quot;&quot;
OPTIONS+=&quot;-resize 1200x1200&quot;
import -window root -crop $SIZE $OPTIONS $NAME
feh $NAME
exit 0

バインドでつなぐ

bindsym $mod+s exec ~/bin/ss-monitor DP1

f:id:kurari0118:20170102163209p:plain