Eu uso o Cheese como meu software de webcam. Estou tentando descobrir uma maneira de fazer isso:
- Começar
- Clique em uma foto
- Saída
quando um script é executado. O script não deve pedir permissões e não deve haver interrupções. Até aqui,
#!/bin/bash
cheese
Só consegui fazer a etapa 1. Como faço as etapas 2 e 3? Os arquivos doc não mencionam essa opção e não quero alterar o código-fonte. (Eu também não me importo com camorama)
Responder1
Voilá! Seguem as etapas 2 e 3:
Isso funciona, embora seja extremamente crítico em termos de tempo, ajuste como achar melhor, tente comentar decentemente para que você possa ver o que está acontecendo.
Você precisará instalarxdotoolpara que isso funcione, pois estamos simulando pressionamentos de teclas para tirar a foto e sair (pacote 'xdotool')
Ah, e você precisará desligar o 'contagem regressiva' nas preferências, caso contrário, provavelmente CTRL-Q (sairá) do programa antes de realmente tirar a 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
#