Improve record-window script
801a71b0d3d548d69c1bbe8f22d337cf969dc84e
1 parent
4241aad1
bin/record-window
+22 -11
| 2 | 2 | ||
| 3 | 3 | unset x y w h |
|
| 4 | 4 | ||
| 5 | 5 | mkdir -p $HOME/recordings |
|
| 6 | 6 | ||
| 7 | - | FPS=${FPS:-4} |
|
| 8 | - | SCALE=${SCALE:-.5} |
|
| 7 | + | FPS=${FPS:-6} |
|
| 8 | + | SCALE=${SCALE:-1} |
|
| 9 | + | NAME=${1:-unknown} |
|
| 9 | 10 | ||
| 10 | - | eval $(xwininfo -id $(xdotool getactivewindow) | |
|
| 11 | + | # NOTE: To get the active window: `xwininfo -id $(xdotool getactivewindow)` |
|
| 12 | + | ||
| 13 | + | eval $(xwininfo -name "$NAME" | |
|
| 11 | 14 | sed -n -e "s/^ \+Absolute upper-left X: \+\([0-9]\+\).*/x=\1/p" \ |
|
| 12 | 15 | -e "s/^ \+Absolute upper-left Y: \+\([0-9]\+\).*/y=\1/p" \ |
|
| 13 | 16 | -e "s/^ \+Width: \+\([0-9]\+\).*/w=\1/p" \ |
|
| 14 | 17 | -e "s/^ \+Height: \+\([0-9]\+\).*/h=\1/p" ) |
|
| 15 | 18 | ||
| 16 | - | now="$(date +"%S%M%H%d%m%Y")" |
|
| 19 | + | now="$(date +"%Y%m%d-%H%M%S")" |
|
| 17 | 20 | tmp="$(mktemp).gif" |
|
| 18 | 21 | ||
| 22 | + | let x=$x+1 |
|
| 23 | + | let y=$y+1 |
|
| 24 | + | ||
| 25 | + | OUT="$HOME/recordings/recording-$NAME-$now.gif" |
|
| 26 | + | ||
| 19 | 27 | ffmpeg -v warning \ |
|
| 20 | - | -video_size ${w}x${h} \ |
|
| 21 | - | -framerate 6 \ |
|
| 22 | - | -f x11grab \ |
|
| 23 | - | -i :0.0+${x},${y} \ |
|
| 24 | - | -vf fps=$FPS,scale=iw*$SCALE:ih*$SCALE:flags=lanczos \ |
|
| 25 | - | -gifflags +transdiff -y \ |
|
| 26 | - | "$HOME/recordings/recording-$now.gif" |
|
| 28 | + | -video_size ${w}x${h} \ |
|
| 29 | + | -framerate 4 \ |
|
| 30 | + | -f x11grab \ |
|
| 31 | + | -i :0.0+${x},${y} \ |
|
| 32 | + | -vf fps=$FPS,scale=iw*$SCALE:ih*$SCALE:flags=lanczos \ |
|
| 33 | + | -gifflags +transdiff -y \ |
|
| 34 | + | "$OUT" |
|
| 35 | + | ||
| 36 | + | echo "saved to '$OUT'" |
|
| 27 | 37 | ||
| 38 | + | # TIP: convert FILE.gif -strip -coalesce -layers Optimize OPTIMIZED.gif |