summaryrefslogtreecommitdiff
path: root/rec.sh
blob: 894b1013437df3457377181a081899d2f92fba69 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#!/bin/sh

XDG_CACHE_HOME=${XDG_CACHE_HOME:-$HOME/.cache}
XDG_VIDEOS_DIR=${XDG_VIDEOS_DIR:-$HOME/Videos}

function status() {
    pstatus=$(cat $XDG_CACHE_HOME/rec_paused)
    if [ "$pstatus" == "true" ]; then
        echo ""
        exit
    fi
    n=0
    while ! pgrep -f gpu-screen-recorder >/dev/null; do
        if [ $n -eq 3 ]; then
            echo ""
            exit
        fi
        (( n+=1 ))
    done
    echo ""
}

function recorder() {
    killall -SIGINT gpu-screen-recorder && while [ ! "$filename" ]; do filename=$(cat $XDG_CACHE_HOME/rec_filename); done && (dragon --icon-only --thumb-size 512 --and-exit "$XDG_VIDEOS_DIR/$filename" & sleep 10 && kill $!) && exit 1
    filename=$(date +"%Y-%m-%d_%H:%M:%S").mp4
    echo '' > $XDG_CACHE_HOME/rec_filename
    echo 'false' > $XDG_CACHE_HOME/rec_paused
    gpu-screen-recorder -w screen -restore-portal-session yes -q ultra -oc yes -cr full -f 160 -o $XDG_VIDEOS_DIR/"$filename" && echo "$filename" > $XDG_CACHE_HOME/rec_filename
    # reload module
    pkill -RTMIN+3 waybar
}

function pause() {
    killall -SIGUSR2 gpu-screen-recorder || exit 1
    pstatus=$(cat $XDG_CACHE_HOME/rec_paused)
    if [ "$pstatus" == "true" ]; then
        echo "false" > $XDG_CACHE_HOME/rec_paused
    else
        echo "true" > $XDG_CACHE_HOME/rec_paused
    fi
    # reload module
    pkill -RTMIN+3 waybar
}

if [ "$1" ]; then
    $@
fi