(2023-04-02 初稿 - 2023-04-08 修正)
新年度、初投稿。2023年度もよろしくです。
最近、bashスクリプトが楽しくて、気がつくとスクリプトをいじっている。(^^ゞ
さて、長いタイトルになってしまったが、最近、写真に名前を付けるスクリプトをbashで作成しており、スクリプトの中で写真を表示するとフォーカスが写真を表示するプログラム(本投稿では、imagemagickのdisplayコマンド)に移ってしまい、スクリプトの継続が面倒になってしまう。
この解決策を検索すると、以下のサイトを発見。
質問者の方も、筆者同様の悩みを抱えているようで、ちゃんと解決策も紹介されていた。多謝 m(__)m
上記サイトで初めて知ったxdotool。これは、bashスクリプトでGUIをマクロ的に使うこともできそうで、とても便利なコマンド。
Debian系でのインストールは以下のとおり。
$ sudo apt install xdotool
で、上記を参考に作成したスクリプトは以下のとおり。
#!/usr/bin/bash # test script for display jpeg images tar_dir=~/Desktop # 適当に変更してね tar_ary=($(ls -tr1 $tar_dir/*.JPG)) # 画像ファイルを1枚ずつ配列に for i in ${!tar_ary[@]}; do # 画像ファイルを一枚ずつ処理 wid=$(xdotool getwindowfocus) # bashを実行中のterminalのIDを保存 display -resize 800x600 ${tar_ary[i]} & # 画像の表示 pid=$! # displayのPIDを保存 sleep 0.5 xdotool windowfocus $wid # focusをterminalに戻す read -r -s -n1 char # キー入力の読み取り case $char in "q") kill $pid; break ;; # qだったら終了 *) echo $char ;; esac kill $pid # displayをkillして次の画像へ done
皆さんの参考になれば…(^^)