Cheeseが自動的に写真を撮って終了する

Cheeseが自動的に写真を撮って終了する

私はウェブカメラ ソフトウェアとして Cheese を使用しています。これを実現する方法を考えています:

  • 始める
  • 写真をクリック
  • 出口

スクリプトが実行されるとき。スクリプトは権限を要求すべきではなく、中断も発生しないはずです。これまでのところ、

#!/bin/bash 
cheese

ステップ 1 しか実行できませんでした。ステップ 2 と 3 を実行するにはどうすればいいですか? ドキュメント ファイルにはそのようなオプションは記載されておらず、ソース コードを変更したくありません。(camorama でもかまいません)

答え1

出来上がり!手順 2 と 3 は次のとおりです。

これは動作しますが、タイミングが非常に重要なので、必要に応じて調整し、何が起こっているかがわかるように適切にコメントするようにしました。

インストールする必要がありますxdoツールこれが機能するには、写真を撮って終了するためのキー入力をシミュレートしているからです(パッケージ 'xdoツール')

ああ、それと「秒読み' 機能を設定で無効にしないと、実際に撮影する前に CTRL-Q (終了) でプログラムが終了する可能性があります。


#!/bin/bash
#
# L Nix <[email protected]>
# takeapic : take a photo with Cheese, using default settings, then exit
#
# start cheesing (2> because mine whines about cheesy stuff (ha!))
cheese 2>/dev/null &
# give WM some time to start up program (fails without this)
sleep 5
# set so we can determine if valid window(s) exist(s)
WINDOWIDS=""
# wait for up to 90 seconds (tweak this)
COUNTDOWN=90
while [ ${COUNTDOWN} -gt 0 ]; do
    WINDOWIDS=$(xdotool search --class "cheese" 2>/dev/null)
    if [ -n "${WINDOWIDS}" ]; then
        break
    fi
    sleep 1
    COUNTDOWN=$(( ${COUNTDOWN} - 1 ))
done
# did we get anything?
if [ -z "${WINDOWIDS}" ]; then
    echo "Cheese never started, something's wrong"
    exit 1
fi
# the shutter button is ALT-T
for WIDS in ${WINDOWIDS}; do
    # if you combine these like xdotool allows, it fails
    xdotool windowfocus ${WIDS} 2>/dev/null
    xdotool key alt+t 2>/dev/null
done
# pause a moment while taking photo
sleep 1
# now CTRL-Q out of the application
for WIDS in ${WINDOWIDS}; do
    xdotool windowfocus ${WIDS} 2>/dev/null
    xdotool key ctrl+q 2>/dev/null
done
#

関連情報