Script de bash para grabar la pantalla en X11 (dwm) con ffmpeg, detectando la resolución con xrandr y eligiendo la fuente de audio con pactl (PipeWire/PulseAudio).
Uso:
./screenrecord.sh # micrófono
./screenrecord.sh sys # sonido del sistema (parlantes)
Presiona q para detener. Guarda en ~/videos/rec_FECHA.mkv.
#!/bin/bash
# Uso: screenrecord.sh [mic|sys]
# mic (default) = graba micrófono
# sys = graba sonido del sistema (parlantes)
RES=$(xrandr --current | grep -w connected | grep -oP '\d{3,4}x\d{3,4}' | head -1)
if [ "$1" = "sys" ]; then
SRC=$(pactl list short sources | grep '\.monitor' | head -1 | cut -f2)
SRC="${SRC:-default}"
else
SRC=$(pactl list short sources | grep -v '\.monitor' | head -1 | cut -f2)
SRC="${SRC:-default}"
fi
OUT="$HOME/videos/rec_$(date +%Y%m%d_%H%M%S).mkv"
mkdir -p "$HOME/videos"
echo "Grabando $RES -> $OUT"
echo "Audio: $SRC (q para detener)"
ffmpeg -f x11grab -framerate 30 -video_size "$RES" -i "$DISPLAY" \
-f pulse -i "$SRC" \
-c:v libx264 -preset ultrafast -crf 23 -pix_fmt yuv420p \
-c:a aac -b:a 128k "$OUT"