summaryrefslogtreecommitdiff
path: root/bin
diff options
context:
space:
mode:
authorRaymaekers Luca <raymaekers.luca@gmail.com>2024-11-02 22:34:00 +0100
committerRaymaekers Luca <raymaekers.luca@gmail.com>2024-11-02 22:34:00 +0100
commitddbb985e96c9bb76dd7844654d4175be3cd65d45 (patch)
tree2b7b08958ae82bff667a5492226f8b8a4440aa18 /bin
parent156db94321161105f5522d621d48de77d1a46857 (diff)
checkpoint
Diffstat (limited to 'bin')
-rwxr-xr-xbin/common/ask1
-rwxr-xr-xbin/extra/gdbcore15
-rwxr-xr-xbin/guiscripts/vrec86
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