This article presents 4 tools for recording your Linux desktop. All work under X11, and there are also a couple of solutions for recording your Linux screen under Wayland.

I skipped applications that are no longer maintained, like Kazam, ScreenStudio or Green Recorder. Even though they might still work, they have many bugs that will probably never be fixed.

1. SimpleScreenRecorder

SimpleScreenRecorder is a Qt5 screen recorder for X11 that supports OpenGL. Despite its name, this is a feature-rich screen recorder; what its name actually means is that it’s easy to use this application to record your screen thanks to its sane default settings that don’t require tweaking to get started.

It should also be noted that the tool doesn’t try to do anything else other than recording your screen.

While it has quite a few screen recording related features, which you’ll see below, SimpleScreenRecorder doesn’t have any extras on top of that. There’s no option to record a live webcam (you can use a different application for that), can’t add any effects, text or anything like that.

This application is only for desktop recording, leaving everything else you might want to add on top to other applications, like a dedicated webcam application, or a video editor.

SimpleScreenRecorder features:

  • Record the entire screen (including all screens or a particular screen in multi-monitor setups), a fixed rectangle, an application window, follow the cursor, or record an OpenGL program
  • Configurable recording coordinates and frame rate, scale video, optionally record (or exclude) mouse cursor
  • Record audio – it allows selecting the backend (ALSA, PulseAudio, JACK) and source
  • It uses libavformat (part of FFmpeg) to encode the recorded material into a variety of video formats. It Supports Matroska (MKV), MP4, WebM, OGG and other containers, with H.264, VP8 and Theora video codecs, and Vorbis, MP3, AAC audio codecs, among many others. There are also options for choosing the desired bitrate (for Theora and VP8) or preset (for H.264)
  • Keyboard shortcut for starting, pausing and resuming the recording

It’s simple wizard-like user interface may seem a bit confusing at first, but the tool is quite easy to use and powerful in the same time. My recomendation is to go with the defaults, so you’ll only interact with the application when you choose what to record: the entire screen, a window, a rectangle you draw on the screen, if you want to record audio, and leave the encoding settings to their default values.

Once you record your screen a few times you can experiment with different quality settings. But in most cases just sticking with the defaults should be enough to produce a good quality recording of a Linux desktop.

Click the button above to go to the SimpleScreenRecorder installation page, where you’ll find instructions for how to install it on a large number of Linux distributions like Arch Linux, Fedora, Debian, Ubuntu, Linux Mint, openSUSE, Red Hat Enterprise Linux, CentOS, Mageia, NixOS and more.

2. GNOME / Cinnamon built-in video screen recorder

Both GNOME and Cinnamon have a built-in screen recorder that uses GStreamer under the hood, this being the quick and easiest way of recording your Linux desktop if you use one of these two desktop environments. This built-in screen recorder does not record any sound though (either from microphone or sound coming from desktop applications).

Also, this records all monitors in multi-monitor setups, with no way of choosing which monitor to record. So if you want to use this but want to only record one monitor you’ll need to disable the other monitor(s) in the system settings. I only tested the GNOME screen recorder with multiple monitors though, because I don’t have Cinnamon installed on my computer.

It’s important to note that the built-in GNOME screen recorder supports both Wayland and X11.

The built-in GNOME and Cinnamon screen recorder can be started and stopped using the Ctrl Alt Shift R keyboard shortcut (this can be changed in System Settings for Cinnamon but not for GNOME), and the output video is recorded at 30fps in a WebM container with VP9 as the video codec on GNOME (tested on GNOME 3.34), and VP8 on Cinnamon desktop (tested with Cinnamon 4.0). When recording, a dot appear in the GNOME Shell top bar, near the system menu:

The resulting screencast WebM video is saved in the ~/Videos folder for GNOME (with the name Screencast from DATE TIME.webm), and directly in the home directory for Cinnamon (having the name cinnamon-date.webm). The video is not immediately ready, you’ll need to wait a bit for the video to be encoded.

In GNOME (this doesn’t apply to Cinnamon), the default screencast duration is 30 seconds, after that the recording automatically stops. You can change this maximum screencast length to a different value by using:

gsettings set org.gnome.settings-daemon.plugins.media-keys max-screencast-length 600

Replace 600 (600 seconds = 10 minutes) with the number of seconds you want to set for the maximum screencast length. Set it to 0 so there’s no screencast length limit.

No matter the screencast limit you set, you can stop the screencast at any time using the Ctrl Alt Shift R keyboard shortcut.

EasyScreenCast

There’s a GNOME Shell extensions, called EasyScreenCast, that makes use of the integrated video recording function in GNOME Shell, but provides some additional options like:

  • the ability to select the audio source
  • record a webcam source with the desktop
  • choose the area to record (all monitors, a monitor, a window or a rectangular area)
  • allows setting the video quality
  • set the file container (WebM with VP9 or VP8 encoders, MKV with the x264 encoder, MP4 with x264 encoder, or OGG with the Theora encoder)
  • choose the file resolution, file name and destination folder

To use this EasyScreenCast extension in GNOME you’ll need to install it from source by following the instructions from its GitHub page. Don’t install it from the official GNOME Shell Extensions website because that doesn’t work with newer GNOME Shell versions.

It’s also worth noting here that Weston (Wayland compositor) has a built-in screen recording functionality too. To record a screencast (without audio) while using Weston press Ctrl R (this both starts and stops the recording). Videos recorded like this have the .wcap extebsion, this being a losssless video format specific to Weston.

Need to create a short demo of a feature or bug? Also see Peek, a tool that can record your screen as an animated GIF.

3. OBS Studio

OBS (Open Broadcaster Software) Studio is a free and open source Qt application for video recording and live streaming, which runs on Linux, macOS and Windows.

The tool can broadcast to any RTMP supporting destination, having presets for streaming on YouTube, Twitch, Instagram and Facebook. For this article though, we’re more interested in its video recording capabilities.

OBS Studio is the most advanced application for recording your Linux desktop from this list. It has numerous features like adding live or recorded video, adding text on top of the video, mixing audio, applying effects, seeing a real-time preview and more. With this wide range of features also comes some complexity in using it, so I don’t recommend this to inexperienced users, and if the video you want to create doesn’t require many of the features offered by OBS Studio.

It’s also important to note that OBS Studio can’t record the desktop on Wayland by default (and the application itself doesn’t run under Wayland so you have to run it under XWayland). However, it’s possible to record (and broadcast) your desktop under Wayland with OB Studio by using a plugin like the obs-xdg-portal plugin (works with both Wayland and X11 on GNOME and KDE, perhaps others as well), or the GNOME Screen Cast OBS Studio plugin (works with all GNOME sessions, including Wayland).

OBS Studio features:

  • High performance real time audio and video capturing and mixing
  • Create an unlimited number of scenes and switch between them seamlessly using custom transitions (the scenes can contain multiple sources including window captures, images, text, browser windows, webcams, capture cards, etc.)
  • Audio mixer with per-source filters
  • Makes use of libavcodec /libavformat (part of FFmpeg) to support a wide range of containers / codecs
  • Modular dock user interface that allows you to rearrange the layout to any way you like
  • Keyboard shortcuts
  • Supports plugins

The first time you start OBS Studio, it’s Auto-Configuration Wizard will be shown, allowing you to choose if you plan on using OBS Studio primarily for broadcasting or recording, and then perform a series of tests to automatically configure everything for your computer hardware.

Install OBS Studio

You also have the option of installing OBS Studio on any Linux distribution that supports Flatpak by using the Flathub package (it comes with the obs-xdg-portal plugin built-in –  this gets screen recording to work under Wayland).

Record your X11 Linux desktop using OBS Studio

To record your desktop using OBS Studio, you’ll need to add screen capture as a source. To do this, click the button from the Sources section at the bottom of the OBS Studio window and add Screen Capture (XSHM). You’ll be prompted to select the screen (if you have multiple screens), and to enable or disable capturing the mouse cursor.

After adding the Screen Capture video source, you are ready to record your screen. You may want more than to simply record your desktop though – in the same way you added the Screen Capture source you may also want to add an audio device, a webcam source (Video Capture Device), add multiple scenes, transitions and anything you like.

After you’re done including everything you want to be in your screencast, click the Start Recording button to get the recording going. After stopping the recording using the same button, your screencast is saved in your home folder, having the date and time it was recorded as its filename.

As a side note, in case you want to stream your desktop instead of recording it, you’ll need to configure the stream source, e.g. Twitch or YouTube, in the OBS Studio Settings, on the Stream tab. When you have everything set up, click Start Streaming.

You can change the streaming and recording video format, quality, encoder and so on, in the OBS Studio Settings -> Output. It’s also worth noting that the default settings for the recording video output is 1280×720 on my machine, so in case you want to record a full-hd video, change that to 1920×1080 in the Settings -> Video -> Output (Scaled) Resolution section.

Record your Wayland Linux desktop using OBS Studio

OBS Studio can’t record the Linux desktop under Wayland by default (and the application itself needs to run under XWayland), but this can be done using plugins:

For my test, I’ve used the obs-xdg-portal plugin to record my desktop using OBS Studio under Wayland (XWayland). This plugin is already included in the OBS Studio Flathub package, so if you use that to install it you should be ready to go.

With this plugin, the only difference between the instructions already presented under “Record your X11 Linux desktop using OBS Studio” and using this under Wayland is the desktop recording source. If by default, using OBS Studio on X11 you must add Screen Capture (XSHM) under Sources to be able to record your screen, with the obs-xdg-portal plugin you must add the Desktop Screencast (Wayland / X11) source.

4. vokoscreenNG

vokoscreenNG is a free and open source screencaster for Linux and Windows. The application is a continuation of the old Vokoscreen 2.5, which has been rewritten from scratch, and is based on Qt5 and GStreamer (the old Vokoscreen was using FFmpeg).

Like SimpleScreenRecorder, vokoscreenNG is an easy to use but powerful screen recording tool. It does not yet support Wayland, so you’ll need to use an X11 session to use it right now.

vokoscreenNG can be used to record videos from the computer screen, webcams, external cameras and more, great for producing educational videos, tutorials, record videoconferences and so on, with both video and sound.

vokoscreenNG features:

  • Record full screen, a window, a rectangle area with optional video scaling and magnification
  • Records audio
  • Start recording video after a number of seconds
  • Schedule recordings: the application supports automatically beginning a desktop recording at a given time, and stop recording after a given number of hours, minutes and/or seconds
  • Configurable on-screen camera with options like flip vertical or horizontal, invert, gray, black and white, remove window frame, and frame size
  • Built-in video player for playing the recorded screencasts
  • Uses GStreamer and supports MKV, WebM, MP4, AVI and MOV containers with x264 / H.264 (Intel GPUs) and VP8 video codecs, and MP3, FLAC, Opus and Vorbis audio, with configurable quality and frame rate

Install vokoscreenNG

The new, rewritten vokoscreenNG was quite recently picked up by a few Linux distributions so it’s available in the repositories for Fedora (install it using sudo dnf install vokoscreenNG; you need to use it under the X11 session and not the default Wayland session that ships with Fedora Workstation), openSUSE Leap 15.2 and Tumbleweed, Debian (buster, bullseye and sid; install it using sudo apt install vokoscreen-ng), and Ubuntu 20.04 Focal Fossa (install it with sudo apt install vokoscreen-ng). It’s also in AUR for Arch Linux / Manjaro users (as vokoscreen).

It’s not available in older Ubuntu versions, Flathub or the Snap Store, so in those cases you must install it from source right now.

Want to record your Android screen? You can do that with scrcpy, a tool that mirrors your Android device display to your Linux (and other OSes) desktop. scrcpy has a built-in screen recording feature. I also recommend checking out guiscrcpy, a helper graphical user interface that runs on top of scrcpy.

Conclusions

I created a short screencast with audio using each of these tools (with the GNOME built-in screencast tool and OBS I’ve recorded screencasts under both X11 and Wayland), so you can analyze them to get a very (VERY!) broad idea on the quality and performance of the resulting screencast video. I didn’t create a screencast using the built-in Cinnamon screencaster because I only have Cinnamon installed in a virtual machine, so its performance would suffer due to that.

I couldn’t use the same settings for all, since for example the built-in GNOME screencaster can only produce WEBM files and has no quality settings, SimpleScreenRecorder doesn’t allow setting the bitrate when choosing the H.264 codec, etc. Also, this will obviously depend on the hardware used, so it’s best to try these applications yourself and see how they behave on your own computer. Also, for most of these tools you can get a better quality by changing their settings.

But there are a few things I noticed during my testing:

  • The built-in GNOME screencast tool seems to be a bit choppy under X11 (most noticeable when moving windows), at least on my computer (GNOME 3.34), but works flawlessly on Wayland
  • OBS Studio under Wayland (with the obs-xdg-portal plugin which comes built-in when installing OBS from Flathub) seems to skip some frames at times; this does not happen when recording under X11
  • vokoscreenNG and EasyScreencast created a video with only 1 audio channel, while all other tools I’ve used for recording both video and audio created an output with 2 audio channels

If you ask me, if I’d want to make a short screencast on Wayland for example, I’d go with the built-in GNOME screencast tool even if I’d then have to record my voice separately and add it on top of the video using a video editor. For a screencast with all the bells and whistles, including a live webcam, sound coming from the microphone, and more, I’d go with OBS Studio under both Wayland and X11. And for a screencast under X11 in which I only want to record the desktop (no matter the desktop enviromnent), without a cam, I’d go with SimpleScreenRecorder.

In the end, choose the screencasting tool that that you like using or that best suits what you’re recording. Give these tools a try and decide for yourself which one is best for you.