Hacer que Cheese tome una foto automáticamente y salga

Hacer que Cheese tome una foto automáticamente y salga

Utilizo Cheese como software de mi cámara web. Estoy tratando de encontrar una manera de tenerlo:

  • Comenzar
  • Haga clic en una foto
  • Salida

cuando se ejecuta un script. El script no debería solicitar permisos y no debería haber interrupciones. Hasta ahora,

#!/bin/bash 
cheese

Solo pude hacer que hiciera el paso 1. ¿Cómo hago los pasos 2 y 3? Los archivos doc no mencionan dicha opción y no quiero cambiar el código fuente. (tampoco me importa el camorama)

Respuesta1

¡Voilá! Siguen los pasos 2 y 3:

Esto funciona, aunque el tiempo es tremendamente crítico, modifícalo como mejor te parezca, intenta comentarlo decentemente para que puedas ver lo que está pasando.

Necesitarás instalarxdotoolpara que esto funcione, ya que estamos simulando pulsaciones de teclas para tomar la fotografía y salir (paquete 'xdotool')

Ah, y tendrás que apagar el 'cuenta regresiva' en las preferencias; de lo contrario, es probable que CTRL-Q (salga) del programa antes de que realmente tome la foto.


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

información relacionada