Ich verwende Cheese als meine Webcam-Software. Ich versuche, einen Weg zu finden, es zu haben:
- Start
- Klicken Sie auf ein Bild
- Ausfahrt
wenn ein Skript ausgeführt wird. Das Skript sollte nicht nach Berechtigungen fragen und es sollte keine Unterbrechungen geben. Bisher
#!/bin/bash
cheese
Ich konnte nur Schritt 1 ausführen. Wie mache ich die Schritte 2 und 3? Die Doc-Dateien erwähnen eine solche Option nicht und ich möchte den Quellcode nicht ändern. (Camorama stört mich auch nicht)
Antwort1
Voilà! Es folgen die Schritte 2 und 3:
Das funktioniert, obwohl es furchtbar zeitkritisch ist. Nehmen Sie die nötigen Anpassungen vor, und versuchen Sie, es ausführlich zu kommentieren, damit Sie sehen können, was vor sich geht.
Sie müssen installierenAbonnierendamit dies funktioniert, da wir Tastendrücke zum Aufnehmen des Bildes und zum Beenden simulieren (Paket 'Abonnieren')
Oh, und Sie müssen die 'Countdown'-Funktion in den Einstellungen, sonst wird das Programm wahrscheinlich per STRG-Q (Beenden) verlassen, bevor die Aufnahme tatsächlich gemacht wird.
#!/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
#