diff options
author | Raymaekers Luca <raymaekers.luca@gmail.com> | 2024-11-02 22:34:00 +0100 |
---|---|---|
committer | Raymaekers Luca <raymaekers.luca@gmail.com> | 2024-11-02 22:34:00 +0100 |
commit | ddbb985e96c9bb76dd7844654d4175be3cd65d45 (patch) | |
tree | 2b7b08958ae82bff667a5492226f8b8a4440aa18 /bin | |
parent | 156db94321161105f5522d621d48de77d1a46857 (diff) |
checkpoint
Diffstat (limited to 'bin')
-rwxr-xr-x | bin/common/ask | 1 | ||||
-rwxr-xr-x | bin/extra/gdbcore | 15 | ||||
-rwxr-xr-x | bin/guiscripts/vrec | 86 |
3 files changed, 57 insertions, 45 deletions
diff --git a/bin/common/ask b/bin/common/ask index 95530f5..386a1f2 100755 --- a/bin/common/ask +++ b/bin/common/ask @@ -1,4 +1,5 @@ #!/bin/sh which tgpt >/dev/null || exit 1 [ "${inp:=$@}" ] || inp="$(cat /dev/stdin)" +>&2 printf 'inp: %s\n' "$inp" tgpt "$inp" diff --git a/bin/extra/gdbcore b/bin/extra/gdbcore index 69b1a64..667db3e 100755 --- a/bin/extra/gdbcore +++ b/bin/extra/gdbcore @@ -9,7 +9,12 @@ # 4 - wrong usage if [ "$#" -lt 1 ]; then - >&2 printf 'usage: gdbcore <program>\n' + >&2 printf 'usage: gdbcore [-r] <program>\n' +fi + +if [ "$1" = "-r" ]; then + recent=1 + shift fi prog="$1" @@ -24,11 +29,11 @@ coredir=/var/lib/systemd/coredump tmp="$(mktemp)" -if [ "$2" = "-r" ]; then - recent="$(find "$coredir" -name "core.${prog##*/}*" -printf '%Ts %f\n' | +if [ "$recent" ]; then + file="$(find "$coredir" -name "core.${prog##*/}*" -printf '%Ts %f\n' | sort -n -r | head -n 1 | cut -f 2- -d' ')" - corefile="$coredir"/"$recent" + corefile="$coredir"/"$file" else find "$coredir" -name "core.${prog##*/}*" -printf '%f %TF %TT\n' > "$tmp" @@ -61,6 +66,6 @@ if ! zstd -d "$corefile" -f -o "$tmp" 2>/dev/null; then exit 3 fi -gdb "$prog" "$tmp" +gdb -q "$prog" "$tmp" rm -f "$tmp" diff --git a/bin/guiscripts/vrec b/bin/guiscripts/vrec index a383f33..4d3f8db 100755 --- a/bin/guiscripts/vrec +++ b/bin/guiscripts/vrec @@ -1,22 +1,33 @@ #!/bin/sh -# record - record an area of the screen - -lock="/tmp/record.lock" - -# dependencies: ffmpeg, hacksaw (part), xwininfo & lsw (window), xdotool (active) -# optional: +# Quick video capture with dmenu +# +# dependencies: +# - ffmpeg # - hacksaw: part -# - xwininfo, lsw, commander: window # - xdotool: active # - xdg-user-dir +# - dmenu +# - clipp +# +# Usage: +# vrec [command] [dir] +# - if you do not provide a command it will launch dmenu. +# - if you provide command and dir it will save the recording in dir +# Commands: +# - active: capture the active window +# - part: select a part of the screen to record +# - stop: stop an active recording +# - full: record your full screen +# - last: copy the latest recording's path to the clipboard +# - audio: one of the prior recording commands but with sound +# Recording: +# there is a lock file -audio= - -# $1: width -# $2: height -# $3: x -# $4: y +# $1: x +# $2: y +# $3: width +# $4: height # $5: output dir # $6: output name record_cmd() @@ -28,8 +39,9 @@ record_cmd() else touch "$lock" fi + printf '%s\n' "$5/$6.mp4" - herbe "started recording." # use notification to know when recording started + herbe "vrec" "started recording." # use notification to know when recording started w=$(($3 + $3 % 2)) h=$(($4 + $4 % 2)) ffmpeg $audio \ @@ -43,62 +55,56 @@ record_cmd() -pix_fmt yuv420p \ -crf 20 \ "$5/$6.mp4" - printf '%s\n' "$5/$6.mp4" rm -f "$lock" - herbe "stopped recording." & + herbe "vrec" "stopped recording." & } +lock="/tmp/record.lock" +# Get recording directory if [ -d "$1" ] then dir="$1" shift else - dir="$(which xdg-user-dir > /dev/null 2>&1 && xdg-user-dir VIDEOS)" - [ "$dir" ] && dir="$dir/records" || dir="$HOME/vids/records" + dir="$(xdg-user-dir VIDEOS)" + [ -d "$dir" ] && dir="$dir/records" || dir="$HOME" fi -mkdir -p "$dir" - +# Set audio variable if [ "$1" = "-a" ] then audio="-f pulse -ac 2 -i default" shift fi +output="$(date +%F_%H-%M-%S)" -if [ "$1" = "-l" ] -then - find vids/records/ -type f | sort | tail -n 1 - exit +if [ -z "${option:="$1"}" ]; then + option="$(printf 'active\npart\nstop\nfull\naudio\nlast\n' | dmenu -c)" fi +[ "$option" ] || exit 1 -current=$(date +%F_%H-%M-%S) - -[ "$1" ] && option="$1" || option="$(printf 'active\nwindow\npart\nstop\nfull\naudio' | commander -c)" case "$option" in active) record_cmd $(xwininfo -id "$(xdotool getactivewindow)" | - sed -e '/Absolute\|Width:\|Height:/!d;s/.*:\s*//' | tr '\n' ' ') $dir $current + sed '/Absolute\|Width:\|Height:/!d;s/.*:\s*//' | tr '\n' ' ') "$dir" "$output" ;; - - window) - winid="$(lsw | commander -cxl | cut -d' ' -f1)" - [ "$winid" ] || exit 1 - values="$(xwininfo -id "$winid" | sed -e '/Absolute\|Width:\|Height:/!d;s/.*:\s*//' | tr '\n' ' ')" - [ "$values" ] || exit 1 - record_cmd $values $dir $current - ;; - part) hacksaw | { IFS=+x read -r w h x y - record_cmd $w $h $x $y $dir $current + [ "$x" ] || exit 1 # quit on ESC + record_cmd $x $y $w $h "$dir" "$output" } ;; stop) pid="$(pgrep ffmpeg | xargs ps | grep 'x11grab' | awk '{print $1}')" [ "$pid" ] && kill "$pid" rm -f "$lock" + herbe "vrec" "stopped recording." & + ;; + last) + file="$(find "$dir" -type f -iname '*.mp4' -printf '%Ts %p\n' | sort -n -r | head -n 1 | cut -f 2- -d' ')" + printf '%s' "$file" | clipp ;; - full) record_cmd 0 0 1920 1080 $dir $current ;; + full) record_cmd 0 0 1920 1080 "$dir" "$output" ;; audio) $0 -a; exit ;; - help|*) >&2 printf 'record [dir] (active|window|part|stop|full)\n' ;; + help|*) >&2 printf 'record [dir] (active|part|stop|full|last|audio)\n' ;; esac |