You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
81 lines
2.2 KiB
81 lines
2.2 KiB
3 years ago
|
#!/bin/bash
|
||
|
|
||
|
# A simple wrapper around ffmpeg
|
||
|
#
|
||
|
# When run, a screenrecording will be made
|
||
|
# The file path will be put in the primary selection
|
||
|
# Will create notification containing file path
|
||
|
#
|
||
|
# If you have a project specified, it will put the sceenshot in that folder instead of /tmp
|
||
|
#
|
||
|
# Relies on ffmpeg for taking screenrecording
|
||
|
|
||
|
PIDFILE="/tmp/screenrecord.pid"
|
||
|
|
||
|
|
||
|
|
||
|
if [ -f "$PIDFILE" ]; then
|
||
|
pkill ffmpeg
|
||
|
exit
|
||
|
fi
|
||
|
|
||
|
echo $$ > "$PIDFILE"
|
||
|
|
||
|
|
||
|
|
||
|
path='/tmp'
|
||
|
command -v ffmpeg > /dev/null || ( echo -n "You need to install ffmpeg" && exit 1 )
|
||
|
|
||
|
#If a project is set we will put screenshots in the project's folder
|
||
|
command -v project > /dev/null && project=$(project current --path)
|
||
|
if [ -n "$project" ]; then
|
||
|
path="$project/screenrecordings"
|
||
|
#Make the directory if it doesn't exist
|
||
|
mkdir "$path" 2> /dev/null
|
||
|
fi
|
||
|
|
||
|
filename="$(date +"%Y-%m-%dT%H-%M-%SZ").mkv"
|
||
|
file="${path}/${filename}"
|
||
|
|
||
|
[ "$1" = "-w" ] && sleep "$2" && shift && shift
|
||
|
|
||
|
case $1 in
|
||
|
"select")
|
||
|
if [ -n "$WAYLAND_DISPLAY" ]; then
|
||
|
echo "Shouldn't get here"
|
||
|
echo "No wayland support yet" >&2
|
||
|
exit
|
||
|
else
|
||
|
echo "I get here"
|
||
|
ffmpeg -framerate 30 -f x11grab $(slop -l -c "0.41,0.62,0.42,0.2" -f "-video_size %wx%h -i :0.0+%x,%y") "$file"
|
||
|
fi
|
||
|
;;
|
||
|
*)
|
||
|
if [ -n "$WAYLAND_DISPLAY" ]; then
|
||
|
echo "No wayland support yet" >&2
|
||
|
exit
|
||
|
else
|
||
|
ffmpeg -framerate 30 -f x11grab -video_size "$(xdpyinfo | grep dimensions | awk '{print $2}')" -i :0.0 "$file"
|
||
|
fi
|
||
|
;;
|
||
|
esac
|
||
|
|
||
|
if [ -f "$file" ]; then
|
||
|
# Create a gif
|
||
|
ffmpeg -i "$file" -vf "fps=10,split[s0][s1];[s0]palettegen[p];[s1][p]paletteuse" -loop 0 "${file%.*}".gif
|
||
|
if [ -n "$WAYLAND_DISPLAY" ]; then
|
||
|
# Copies the image to your clipboard (ctrl + v)
|
||
|
wl-copy < "${file%.*}.gif"
|
||
|
# Copies the filename to primary selection (shift + insert or middle mouse)
|
||
|
echo -n "${file%.*}.gif" | wl-copy --primary
|
||
|
else
|
||
|
# Copies the image to your clipboard (ctrl + v)
|
||
|
xclip -selection clipboard -target image/gif -i "${file%.*}.gif"
|
||
|
# Copies the filename to primary selection (shift + insert or middle mouse)
|
||
|
echo -n "${file%.*}.gif" | xclip -selection primary
|
||
|
fi
|
||
|
# Creates notification with file name
|
||
|
notify-send "New Screenrecording" "$file\n${file%.*}.gif"
|
||
|
fi
|
||
|
rm "$PIDFILE"
|