Waylandでスクリーンショット
従来のgnome-screenshot等では画面を取得できない。xorgへの互換性を100%保って要るわけでなはいから。
コマンドはgrimになる。
$ grim
画面全体のスクリーンショットをとる
$ grim
カレントディレクトリに20200324_23h40m30s_grim.pngみたいなファイルが作成される。
特定のディスプレイのスクショを取る
$ grim -o DP-1
特定の領域のスクショを取る
$ grim -g "$(slurp)"
slurpは、マウスでドラッグした領域の座標を1215,501 101x66のような形式(カンマとスペース区切り)で返すwaylandのコマンド。で、grim -gはこのslurpの出力の形式と同じオプションの形式になっている。というかそのためにslurpとgrimが同時に作られたっぽい。
特定のウィンドウのスクショを取る(swayの場合)
$ grim -g "$(swaymsg -t get_tree | jq -r '.. | select(.pid? and .visible?) | .rect | "\(.x),\(.y) \(.width)x\(.height)"' | slurp)"
つまりslurpコマンドを置換している。
swaymsg -t get_tree | jq -r '.. | select(.pid? and .visible?) | .rect | "\(.x),\(.y) \(.width)x\(.height)"'は、swayにウィンドウ一覧を問い合わせて、jqで全ウィンドウの範囲一覧を取ってくる。
slurpは、パイプで改行区切りの範囲一覧を渡すと、ドラッグアンドドロップで領域を指定するモードではなく、クリックでウィンドウ(領域)を選択するモードになる。クリックするとその範囲を返す。
クソ長いからエイリアスしとくのがいいかも