Le fromage prend automatiquement une photo et quitte

J'utilise Cheese comme logiciel webcam. J'essaie de find un moyen de l'avoir:

  • Début
  • Cliquez sur une photo
  • Sortie

quand un script est exécuté. Le script ne devrait pas requestr de permissions et il ne devrait pas y avoir d'interruptions. Jusque là,

#!/bin/bash cheese 

Je ne pouvais que l'get pour faire l'étape 1. Comment puis-je faire les étapes 2 et 3? Les files doc ne mentionnent pas une telle option et je ne veux pas changer le code source. (Ça ne me dérange pas camorama non plus)

Voilá! Les étapes 2 et 3 suivent:

Cela fonctionne, même si c'est horriblement timing critique, tweak comme bon vous semble, a essayé de le commenter décemment afin que vous puissiez voir ce qui se passe.

Vous devrez installer xdotool pour que cela fonctionne, car nous simulons des pressions sur les touches pour prendre la photo et sortir (package ' xdotool ')

Oh, et vous devrez désactiver la fonction " count à rebours " dans les preferences, sinon il est probable que CTRL-Q (quitter) du programme avant qu'il ne prenne réellement le coup.


 #!/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 #