WF-RECORDER(1)
β¨ NAME β¨
okay so bestie, meet wf-recorder β a simple screen recording program for wlroots-based compositors π that's the whole NAME section, it ate, no notes π
π¬ SYNOPSIS π¬
wf-recorder [-abcCdDefFghlmopPrRvxX] [-a, --audio [=DEVICE]]
[-b, --bframes max_b_frames] [-B, --buffrate buffrate]
[-c, --codec output_codec] [-r, --framerate framerate]
[-d, --device encoding_device] [--no-dmabuf]
[-D, --no-damage] [-f, --file filename.ext]
[-F filter_string] [-g, --geometry geometry] [-h, --help]
[-l, --log] [-m, --muxer muxer] [-L, --list-output]
[-o, --output output]
[-p, --codec-param [option_param=option_value]]
[-v, --version] [-x, --pixel-format]
[--audio-backend audio_backend]
[-C, --audio-codec output_audio_codec]
[-P, --audio-codec-param [option_param=option_value]]
[-R, --sample-rate sample_rate]
[-X, --sample-format sample_format] [-y, --overwrite]
π DESCRIPTION π
wf-recorder is a tool built to record your screen on Wayland compositors. It makes use of wlr-screencopy for capturing video and ffmpeg(1) for encoding it. two besties working together, iconic π«Ά
In its simplest form, run wf-recorder to start recording and use Ctrl+C to stop. This will create a file called recording.mp4 in the current working directory using the default codec. literally press play, press stop, boom, you're a content creator β¨
The options are as follows:
πΈ OPTIONS πΈ
-a,--audio [=DEVICE]β Starts recording the screen with audio π
DEVICE is optional. In case you want to specify the PulseAudio device which will capture the audio, you can run this command with the name of that device. You can find your device by running:
$ pactl list sources | grep Name
-b,--bframes max_b_framesβ Sets the maximum number of B-Frames to use.-B,--buffrate buffrateβ Tells the encoder a prediction of what framerate to expect. This preserves VFR and Solves FPS limit issue of some encoders (likesvt-av1). Should be set to the same framerate as display. should. it's giving "trust me on this one" π«-c,--codec output_codecβ Specifies the codec of the video. Supports GIF output as well. ποΈ
To change codec parameters, use -p option_name=option_value
-r,--framerate framerateβ Sets hard constant framerate. Will duplicate frames to reach it. This makes the resulting video CFR. Solves FPS limit issue of some encoders. (yes, constant. it will pad out those frames whether you like it or not π)-d,--device encoding_deviceβ Selects the device to use when encoding the video.
Some drivers report support for rgb0 data for vaapi input but really only support yuv. Use the -x yuv420 option in addition to the vaapi options to convert the data in software, before sending it to the GPU.
--no-dmabufβ By default,wf-recorderwill try to use only GPU buffers and copies if using a GPU encoder. However, this can cause issues on some systems. In such cases, this option will disable the GPU copy and force a CPU one. lowkey a rescue option π-D,--no-damageβ By default,wf-recorderwill request a new frame from the compositor only when the screen updates. This results in a much smaller output file, which however has a variable refresh rate. When this option is on,wf-recorderdoes not use this optimization and continuously records new frames, even if there are no updates on the screen. bigger file, more frames, zero chill π«-f,--file filename.extβ By using the-foption, the output file will have the namefilename.extand the file format will be determined by the provided extension. If the extension is not recognized by yourffmpeg(1)muxers, the command will fail. it will simply not work, bestie, no fallback π
You can check the muxers that your ffmpeg(1) installation supports by running:
$ ffmpeg -muxers
-F,--filter filter_stringβ Set theffmpegfilter to use. VAAPI requiresscale_vaapi=format=nv12:out_range=fullto work. no cap, it needs exactly that or it's over π-g,--geometry screen_geometryβ Selects a specific part of the screen. The format is"x,y WxH".-h,--helpβ Prints the help screen. π-l,--logβ Generates a log on the current terminal. For debug purposes. π-m,--muxer muxerβ Set the output format to a specific muxer instead of detecting it from the filename.-L,--list-outputβ List the available outputs. π-o,--outputβ Specify the output where the video is to be recorded.-p,--codec-param [option_name=option_value]β Change a codec parameter. Can be used multiple times:-p option_name_1=option_value_1 -p option_name_2=option_value_2stack 'em like bracelets β¨-v,--versionβ Print the version ofwf-recorder.-x,--pixel-format pixel_formatβ Set the output pixel format.
List available formats using:
$ ffmpeg -pix_fmts
--audio-backend audio_backendβ Specifies the audio backend to be used when-ais set. π-C,--audio-codec output_audio_codecβ Specifies the codec of the audio.-P,--audio-codec-param [option_name=option_value]β Change the audio codec parameters. π§-R,--sample-rate sample_rateβ Changes the audio sample rate, in HZ. The default value is48000. (that's the default, don't come for me π )-X,--sample-format sample_formatβ Set the output audio sample format.
List available formats using:
$ ffmpeg -sample_fmts
-y,--overwriteβ Force overwriting the output file without prompting. no "are you sure?", just vibes π₯
π EXAMPLES π
To select a specific part of the screen you can either use --g geometry or use https://github.com/emersion/slurp for interactive selection of the screen area that will be recorded:
$ wf-recorder -g "$(slurp)"
You can record screen and sound simultaneously with:
$ wf-recorder --audio --file=recording_with_audio.mp4
To specify an audio device, use the --a<DEVICE> or ---audio=<DEVICE> options. (yep, quoting those exactly as written, i am not touching that π)
To specify a codec use the -c codec option. To change codec parameters, use the -p option:
$ wf-recorder -c libx264 -p preset=slow -p crf=18
To set a specific output format, use the -m, --muxer option. For example, to output to a video4linux2 loopback you might use:
$ wf-recorder --muxer=v4l2 --codec=rawvideo --file=/dev/video2
To use GPU encoding, use a VAAPI codec (for ex. h264_vaapi ) and specify a GPU device to use with the -d option:
$ wf-recorder -f test-vaapi.mkv -c h264_vaapi -d
/dev/dri/renderD128
Some drivers report support for rgb0 data for vaapi input but really only support yuv planar formats. In this case, use the -x yuv420p option in addition to the vaapi options to convert the data to yuv planar data before sending it to the GPU. the classic driver-lied-to-you situation π
π SEE ALSO π
ffmpeg(1), pactl(1) β go say hi to the siblings π«Ά
and that's the whole page bestie!! this one's from Debian and it's dated July 30, 2022 β keep that in mind if you're looking at a newer wf-recorder, the manual you're holding might be a lil vintage ππ record responsibly, slay always, periodt β¨π¦
π¦ where this page comes from
- alpine 3.24: wf-recorder-doc 0.6.0-r0 Β· MIT
- arch rolling: wf-recorder 0.6.0-2 Β· MIT
- nixos 26.05: wf-recorder 0.6.0
- nixpkgs unstable: wf-recorder 0.6.0
- ubuntu resolute: wf-recorder 0.6.0-1build1 Β· MIT
- ubuntu stonking: wf-recorder 0.6.0-1build1 Β· MIT
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms