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.
80 lines
2.2 KiB
80 lines
2.2 KiB
#!/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"
|
|
|