#!/bin/sh # constantinople - quick'n'dirty byzanz(1)-like screencast tool [ "$1" = -w ] && shift || XWINOPTS=-root [ -z "$1" ] && echo >&2 Usage: $0 [-w] output && exit 1 OPTS=$(xwininfo $XWINOPTS | awk ' /Absolute upper-left X:/ { x = $4 } /Absolute upper-left Y:/ { y = $4 } /Width:/ { w = $2 } /Height:/ { h = $2 } END { print "-s " w "x" h " -i '$DISPLAY'+" x "," y }' ) set -ex ffmpeg -f x11grab -r 30 $OPTS -vcodec libx264 -preset ultrafast -crf 0 -threads 0 -y "$1.mkv" ffmpeg -y -i "$1.mkv" -r 2 -pix_fmt rgb24 "$1.gif" convert "$1.gif" -fuzz 8% -layers Optimize "$1.gif-" mv "$1.gif-" "$1.gif"