This repository has been archived on 2024-04-07. You can view files and clone it, but cannot push or open issues or pull requests.
dotfiles/dotfiles/scripts/sway-screenshare

47 lines
1.6 KiB
Bash
Executable File

#!/bin/sh
set -x
if ! lsmod | grep v4l2loopback > /dev/null; then
echo "Adding v42loopback module to kernel"
sudo modprobe v4l2loopback
fi
geometry(){
windowGeometries=$(
# `height - 1` is there because of: https://github.com/ammen99/wf-recorder/pull/56 (I could remove it if it's merged, maybe)
swaymsg -t get_workspaces -r | jq -r '.[] | select(.focused) | .rect | "\(.x),\(.y) \(.width)x\(.height - 1)"'; \
swaymsg -t get_outputs -r | jq -r '.[] | select(.active) | .rect | "\(.x),\(.y) \(.width)x\(.height)"'
)
geometry=$(slurp -b "#45858820" -c "#45858880" -w 3 -d <<< "$windowGeometries") || exit $?
echo $geometry
}
{
if pidof wf-recorder > /dev/null && pidof ffplay > /dev/null
then
if pidof ffplay > /dev/null; then
pkill ffplay > /dev/null
fi
if pidof wf-recorder > /dev/null; then
pkill wf-recorder > /dev/null
fi
notify-send -t 2000 "Wayland recording has been stopped"
else
if ! pidof wf-recorder > /dev/null; then
geometry=$(geometry) || exit $?
wf-recorder --muxer=v4l2 --codec=rawvideo --file=/dev/video2 --geometry="$geometry" &
fi
if ! pidof ffplay; then
swaymsg assign [class=ffplay] workspace 11
unset SDL_VIDEODRIVER
ffplay /dev/video2 -fflags nobuffer &
sleep 0.5
# a hack so FPS is not dropping
swaymsg [class=ffplay] floating enable
# swaymsg [class=ffplay] move position 1900 1000
# swaymsg focus tiling
fi
notify-send -t 2000 "Wayland recording has been started"
fi
} > ~/.wayland-share-screen.log 2>&1