![]()
All-in-one simple screen recording tool for wlroots-based Wayland compositors like LabWC, Wayfire, and Sway.
- Record audio
- Record the screen
- Record your webcam
- Record the sound going to the speakers
- Or all of the above, all at once! 😀
BSR is:
- Super lightweight
- Just one shell script
- Aligned with KISS principles
- Ready to do its best on hardware that lacks hardware-accelerated video encoding (such as Raspberry Pi)
BSR has flexible operation modes.
| Screen + Webcam | Screen only | Webcam only | None | |
|---|---|---|---|---|
| System Audio | ✅ Supported |
✅ Supported |
✅ Supported |
✅ Supported |
| Microphone | ✅ Supported |
✅ Supported |
✅ Supported |
✅ Supported |
| Both | ✅ Supported |
✅ Supported |
✅ Supported |
✅ Supported |
| None | ✅ Supported |
✅ Supported |
✅ Supported |
- Video processing options:
- Record a fixed rectanglular section of the screen. (crop feature)
- Mirror the webcam feed.
- Custom screen recording frame rate.
- Custom video quality (high/medium/low)
- Downscale the output video by a factor of 2. For example, a 1920x1080 screen or webcam can be encoded as 960x540 video file to reduce filesize and CPU usage.
- Reduce video file size by 60% without quality reduction, by re-encoding the video file with libx264's
slowercompression preset. - Conversion to MKV, MP4, GIF, WEBP, MP3, WAV is supported
- Any distro using a Wayland wlroots-based compositor.
- For audio capture, your system needs to be running PipeWire on top of Pulseaudio. If your system only uses Pulseaudio, contact me and I can try to see how possible it is to add support for your setup. It should be easy.
git clone https://github.com/Botspot/botspot-screen-recorder
./botspot-screen-recorder/screen-recorder.sh
On first run, BSR adds a convenient launcher to the start menu. To remove it from the start menu, run rm ~/.local/share/applications/bsr.desktop
None. The script installs them for you. For the sake of completeness, here they are: (most of these are just used to compile wf-recorder)
slurp ffmpeg ninja-build git meson mpv yad g++ wlr-randr v4l-utils wayland-protocols libavutil-dev libavfilter-dev libavdevice-dev libavcodec-dev libavformat-dev libswscale-dev libpulse-dev libgbm-dev libpipewire-0.3-dev libdrm-dev
This user says this command works on Arch:
If BSR detects all necessary packages are installed, it should not try to use apt to install anything. Let me know otherwise.
sudo pacman -S --needed ffmpeg gcc git meson mpv ninja slurp v4l-utils wf-recorder wlr-randr yad
- Run the script.
- Choose your options and click Start recording.
- Stop the recording when done.
- Profit.
- Your chosen presets are saved to
~/.config/botspot-screen-recorder.conffor next time.
- It can be paused using the pause button in the middle of the window.
- It can be resized and moved in real time. Click and drag anywhere on the window to move it.
- Double-click the webcam feed to toggle fullscreen. Press Escape to exit fullscreen.
- To keep the webcam feed visible above other windows, use your Wayland compositor to do it.
- If you are using the LabWC compositor, press Alt+Space, then click Always on Top.
- If you are using Wayfire, I am not aware of an easy way to do this. :(
Simply run BSR. It auto-updates using git pull.
- If you wish to disable updates, delete the
install.shfile.
There are no command line flags. Go directly use wf-recorder for that. If you think I should add a new option, let me know.
- Technically, there is one command-line flag:
screen-recorder.sh install- this just tells it to check for updates and install dependencies, then exit immediately and skip launching the graphical interface. (used by the Pi-Apps installation script, probably useless to you)
This is an open discussion. Would you find it useful to launch/start/stop BSR using keyboard shortcuts? Let me know.
This is meant to become the SimpleScreenRecorder for wlroots. Contact me if you want to see a feature or option added, or if anything is not working as expected.
Expanding BSR's capabilities to record Gnome, Kwin, and other non-wlroots Wayland DEs makes good sense, and this has already been requested here and here. If you are interested in helping with this, feel free to reach out and offer assistance, or open a pull request with proposed changes to implement this.
- MPV for the on-screen webcam feed
- wf-recorder for recording the screen
- ffmpeg used in the background for conversion and encoding
Just one night of nonstop coding instead of sleeping. It took roughly 9 hours to write the initial 300 lines of shell script.

