#!/bin/bash
 
# AUTHOR:   (c) Rob W 2012, modified by MHC (http://askubuntu.com/users/81372/mhc)
# NAME:     GIFRecord 0.1
# DESCRIPTION:  A script to record GIF screencasts.
# LICENSE:  GNU GPL v3 (http://www.gnu.org/licenses/gpl.html)
# DEPENDENCIES:   byzanz,gdialog,notify-send (install via sudo add-apt-repository ppa:fossfreedom/byzanz; sudo apt-get update && sudo apt-get install byzanz gdialog notify-osd)
#modification mineur Croutons ;-)

 
# Time and date
#TIME=$(date +"%Y-%m-%d_%H%M%S")
TIME=$(date +"%d-%m-%Y_%H:%M:%S")
 
# Delay before starting (delai avant enregistrement)
DELAY=10
 
# Standard screencast folder (répertoire d'enregistrement par défaut)
FOLDER="$HOME/Vidéos"
 
# Default recording duration (durée d'enregistrement par défaut)
DEFDUR=10
 
# Son notification à jouer en début et en fin d'enregistrement
beep() {
     paplay /usr/lib/libreoffice/share/gallery/sounds/apert.wav & 
}
 
# Custom recording duration as set by user
notify-send -i dialog-warning -t 11000 "IMPORTANT" "Réduisez les fenêtres indésirables présentes dans la zone de capture." &
USERDUR=$(gdialog --title "Durée?" --inputbox "Veuillez entrer la durée de la capture en secondes" 200 100 2>&1)  

# Duration and output file
if [ -z $USERDUR ]; then #test si la variable est nul
    D=$DEFDUR
else
    D=$USERDUR
fi

notify-send -t 9500 "GIFcapture" "Cliquez sur la fenêtre qui va servir de zone de capture"
# Window geometry
XWININFO=$(xwininfo)
read X < <(awk -F: '/Absolute upper-left X/{print $2}' <<< "$XWININFO")
read Y < <(awk -F: '/Absolute upper-left Y/{print $2}' <<< "$XWININFO")
read W < <(awk -F: '/Width/{print $2}' <<< "$XWININFO")
read H < <(awk -F: '/Height/{print $2}' <<< "$XWININFO")
 
# Notify the user of recording time and delay
notify-send -i /usr/share/icons/hicolor/scalable/apps/byzanz-record-window.svg -t 9500 "GIFcapture" "La durée d'enregistrement est de $D secondes. L'enregistrement débutera dans $DELAY secondes."
 
#Actual recording
sleep $DELAY
beep
byzanz-record -c --verbose --delay=0 --duration=$D --x=$X --y=$Y --width=$W --height=$H "$FOLDER/GIFcapture_$TIME.gif"
beep
 
# Notification de fin d'enregistrement.
notify-send -t 17000 "GIFcapture" "Screencast sauvé sous $FOLDER/GIFcapture_$TIME.gif"