73 lines
1.9 KiB
Bash
Executable File
73 lines
1.9 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
PROGRAM_NAME="gpu-screen-recorder"
|
|
PID_FILE="/tmp/gpu-screen-recorder.pid"
|
|
|
|
start() {
|
|
if [ -f "$PID_FILE" ]; then
|
|
PID=$(cat "$PID_FILE")
|
|
if ps -p "$PID" > /dev/null; then
|
|
notify-send -u low "$PROGRAM_NAME" "$PROGRAM_NAME is already active."
|
|
exit 0
|
|
fi
|
|
fi
|
|
|
|
video_path="$HOME/Videos/replay/"
|
|
mkdir -p "$video_path"
|
|
notify-send -u low "$PROGRAM_NAME" "$PROGRAM_NAME is starting ..."
|
|
gpu-screen-recorder -w screen -f 120 -a default_output -a default_input -fm vfr \
|
|
-c mkv -bm qp -cr full -tune quality -k av1_10bit -q very_high -r 120 \
|
|
-replay-storage ram -ab 320 -cursor yes -keyint 2 -o "$video_path" &> /dev/null &
|
|
echo $! > "$PID_FILE"
|
|
}
|
|
|
|
stop() {
|
|
if [ -f "$PID_FILE" ]; then
|
|
PID=$(cat "$PID_FILE")
|
|
if ps -p "$PID" > /dev/null; then
|
|
kill "$PID"
|
|
rm "$PID_FILE"
|
|
notify-send -u low "$PROGRAM_NAME" "$PROGRAM_NAME has been stopped."
|
|
else
|
|
rm "$PID_FILE" # Stale PID file
|
|
notify-send -u low "$PROGRAM_NAME" "$PROGRAM_NAME is not running."
|
|
fi
|
|
else
|
|
notify-send -u low "$PROGRAM_NAME" "$PROGRAM_NAME is not running."
|
|
fi
|
|
}
|
|
|
|
save() {
|
|
if [ -f "$PID_FILE" ]; then
|
|
PID=$(cat "$PID_FILE")
|
|
if ps -p "$PID" > /dev/null; then
|
|
pkill -SIGUSR1 -f gpu-screen-recorder && sleep 0.5 && notify-send -u low "$PROGRAM_NAME" "Saving replay..."
|
|
else
|
|
# The process is not running, but the PID file exists.
|
|
# This can happen if the process crashed.
|
|
# We'll remove the stale PID file.
|
|
rm "$PID_FILE"
|
|
notify-send -u low "$PROGRAM_NAME" "$PROGRAM_NAME is not running."
|
|
fi
|
|
else
|
|
notify-send -u low "$PROGRAM_NAME" "$PROGRAM_NAME is not running."
|
|
fi
|
|
}
|
|
|
|
case "$1" in
|
|
start)
|
|
start
|
|
;;
|
|
stop)
|
|
stop
|
|
;;
|
|
save)
|
|
save
|
|
;;
|
|
*)
|
|
echo "Usage: $0 {start|stop|save}"
|
|
exit 1
|
|
esac
|
|
|
|
exit 0
|