i3wm - FreeBSD 12.0 RELEASE - 基本操作 - キャプチャ
1. 概要 画面のキャプチャをとるのがなかなか難しい・・・。 2. パッケージインストール pkg install ImageMagick7 pkg install xdotool ImageMagick7 が実際にキャプチャをとるプログラムで、xdotool は、アクティブウィンドウの ID をとるのに必要な、プログラムです。 3. スクリプト作成 キャプチャをとるスクリプトを2つ(全画面用、アクティブウィンドウ用)を作ります。 全画面用(まぁ、ディレクトリなり、ファイル名は適当に) ~/capture.sh 中身は #!/bin/sh import -window root ~/images/base/$(date +%Y%m%d_%H%M%S)_screenshot.png convert ~/images/base/*.png -set filename:test '%t_%W_%H' ~/images/'%[filename:test].png' rm ~/images/base/*.png いったん ~/images/base に作成して、サイズがわかるようにしたファイル名にした後、元のファイルを削除します。 ファイル名は ~/images/年月日_時分秒_screenshot_横幅_高さ.png というファイル名になります。 アクティブウィンドウ用は ~/capturew.sh 中身は #!/bin/sh import -window "$(xdotool getwindowfocus -f)" ~/images/base/$(date +%Y%m%d_%H%M%S)_screenshot.png convert ~/images/base/*.png -set filename:test '%t_%W_%H' ~/images/'%[filename:test].png' rm ~/images/base/*.png で、基本は、全画面用と同じですが「-window "$(xdotool getwindowfocus -f)"」で、xdotool を使用して、アクティブウィンドウを対象にしています。 4. キー割り当て Print を全画面用、Alt+Priont をアクティブウィンドウ用のキーとして定義します。 ~/.i3/config に以下の2行を追加します。 bindsym Print exec --no-startup-id ~/capture.sh bindcode Mod1+111 exec --no-startup-id ~/capturew.sh 「bindsym」と「bindcode」が混在しているし、そのせいで「Print」と「111」という書き方になっているし、みっともないことこの上ないのです。 本当は、「bindsym」でスマートに行きたかったのですが・・・。 Alt+Print の方を、「bindsym」で、定義すると機能しなかったので仕方ない。
pkg install ImageMagick7 pkg install xdotool
~/capture.sh
#!/bin/sh import -window root ~/images/base/$(date +%Y%m%d_%H%M%S)_screenshot.png convert ~/images/base/*.png -set filename:test '%t_%W_%H' ~/images/'%[filename:test].png' rm ~/images/base/*.png
~/images/年月日_時分秒_screenshot_横幅_高さ.png
~/capturew.sh
#!/bin/sh import -window "$(xdotool getwindowfocus -f)" ~/images/base/$(date +%Y%m%d_%H%M%S)_screenshot.png convert ~/images/base/*.png -set filename:test '%t_%W_%H' ~/images/'%[filename:test].png' rm ~/images/base/*.png
~/.i3/config
bindsym Print exec --no-startup-id ~/capture.sh bindcode Mod1+111 exec --no-startup-id ~/capturew.sh