mirror of
https://github.com/basecamp/omarchy.git
synced 2026-02-17 15:25:37 +00:00
The previous code did not identify the output display correctly, leading to wf-recorder asking the user to select the region when the user requested the display output to be selected. With this change the bash script will use slurp with the -o flag to identify the display output. This has not been tested with wl-screenrec as no change has been made to its call signature in omarchy-cmd-screenrecord and the wl-screenrec binary is not included in the default omarchy installation.
56 lines
1.5 KiB
Bash
Executable File
56 lines
1.5 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
[[ -f ~/.config/user-dirs.dirs ]] && source ~/.config/user-dirs.dirs
|
|
OUTPUT_DIR="${OMARCHY_SCREENRECORD_DIR:-${XDG_VIDEOS_DIR:-$HOME/Videos}}"
|
|
|
|
if [[ ! -d "$OUTPUT_DIR" ]]; then
|
|
notify-send "Screen recording directory does not exist: $OUTPUT_DIR" -u critical -t 3000
|
|
exit 1
|
|
fi
|
|
|
|
# Selects region or output
|
|
SCOPE="$1"
|
|
|
|
# Selects audio inclusion or not
|
|
AUDIO=$([[ $2 == "audio" ]] && echo "--audio")
|
|
|
|
start_screenrecording() {
|
|
local filename="$OUTPUT_DIR/screenrecording-$(date +'%Y-%m-%d_%H-%M-%S').mp4"
|
|
|
|
if lspci | grep -qi 'nvidia'; then
|
|
wf-recorder $AUDIO -f "$filename" -c libx264 -p crf=23 -p preset=medium -p movflags=+faststart "$@" &
|
|
else
|
|
wl-screenrec $AUDIO -f "$filename" --ffmpeg-encoder-options="-c:v libx264 -crf 23 -preset medium -movflags +faststart" "$@" &
|
|
fi
|
|
|
|
toggle_screenrecording_indicator
|
|
}
|
|
|
|
stop_screenrecording() {
|
|
pkill -x wl-screenrec
|
|
pkill -x wf-recorder
|
|
|
|
notify-send "Screen recording saved to $OUTPUT_DIR" -t 2000
|
|
|
|
sleep 0.2 # ensures the process is actually dead before we check
|
|
toggle_screenrecording_indicator
|
|
}
|
|
|
|
toggle_screenrecording_indicator() {
|
|
pkill -RTMIN+8 waybar
|
|
}
|
|
|
|
screenrecording_active() {
|
|
pgrep -x wl-screenrec >/dev/null || pgrep -x wf-recorder >/dev/null
|
|
}
|
|
|
|
if screenrecording_active; then
|
|
stop_screenrecording
|
|
elif [[ "$SCOPE" == "output" ]]; then
|
|
output=$(slurp -o) || exit 1
|
|
start_screenrecording -g "$output"
|
|
else
|
|
region=$(slurp) || exit 1
|
|
start_screenrecording -g "$region"
|
|
fi
|