parent
11405338f5
commit
4cce33e83b
1 changed files with 80 additions and 0 deletions
@ -0,0 +1,80 @@ |
|||||||
|
#!/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" |
Loading…
Reference in new issue