Screen capture

Related articles
Desktop environment
Key binding
List of applications
This article lists and describes
screenshot
and
screencast
software.
Screenshot software
Dedicated software
Application list
CoreShot
—
C-Suite
screen capture utility for
Xorg
.
https://cubocore.gitlab.io/
||
coreshot
AUR
Cutefish Screenshot
— Screenshot tool for CutefishOS.
https://github.com/cutefishos/screenshot
||
cutefish-screenshot
AUR
Escrotum
— Screen capture tool using
PyGTK
, inspired by
scrot
, and can be used as its replacement.
https://github.com/Roger/escrotum
||
escrotum-git
AUR
Flameshot
—
Qt
-based software for interactive screenshot taking.
https://github.com/lupoDharkael/flameshot
||
flameshot
GNOME Screenshot
— Screenshot tool for the
GNOME
desktop environment. Need running GDBus/GNOME under Wayland
https://gitlab.gnome.org/GNOME/gnome-screenshot/
||
gnome-screenshot
grim
— Grab images from a
Wayland compositor
.
https://gitlab.freedesktop.org/emersion/grim
||
grim
gscreenshot
—
GTK
frontend for multiple screenshot backends including
scrot
,
ImageMagick
,
PIL
,
imlib2
, and
grim
; with delays, selection, and copy-to-clipboard functionality.
https://github.com/thenaterhood/gscreenshot
||
gscreenshot
AUR
HotShots
— Application for capturing screens and saving them in a variety of image formats as well as adding annotations and graphical data (arrows, lines, texts, ...).
https://github.com/obiwankennedy/HotShots
||
hotshots-git
AUR
imgur-screenshot
— Take screenshot selection, upload to
imgur
+ more cool things.
https://github.com/jomo/imgur-screenshot
||
imgur-screenshot
AUR
ksnip
— Qt-based cross-platform screenshot tool that provides many annotation features, basic image manipulation and remote destination (ftp, imgur, script).
https://github.com/ksnip/ksnip
||
ksnip
Lightscreen
— Simple tool to automate the tedious process of saving and cataloging screenshots, it operates as a hidden background process that is invoked with one (or multiple) hotkeys and then saves a screenshot file to disk according to the user's preferences.
https://lightscreen.com.ar
||
lightscreen
AUR
LXImage-Qt
— Qt port of
LXImage
image viewer and screenshot tool (run with
lximage-qt --screenshot
).
https://github.com/lxde/lximage-qt
||
lximage-qt
maim
— Simple command line utility that takes screenshots meant to replace
scrot
and performs better than
scrot
in many ways.
https://github.com/naelstrof/maim
||
maim
MATE Screenshot
— Screenshot tool for the
MATE
desktop.
https://mate-desktop.org
||
mate-utils
menyoki
— Command line screenshot and screencast tool with support for image manipulation operations.
https://github.com/orhun/menyoki
||
menyoki
mss
— An
xrandr
-aware screenshots Python module with a minimal CLI.
https://pypi.org/project/mss/
||
python-mss
Pantheon Screenshot
— Screenshot tool designed for
elementary OS
.
https://github.com/elementary/screenshot
||
pantheon-screenshot
ScreenCloud
— Take a screenshot of the entire screen or to select an area and then uploading the screenshot to
imgur
+auth with plugins and system tray.
https://screencloud.net/
||
screencloud
AUR
ScreenGrab
— Desktop-environment-independent screenshot tool for X11 and Wayland, now maintained by  the
LXQt
project.
https://github.com/lxqt/screengrab
||
screengrab
scrot
— Simple command-line screenshot utility for X.
https://github.com/resurrecting-open-source-projects/scrot
||
scrot
Shotgun
— Minimal X screenshot utility written in
Rust
(according to the author, it is twice as fast as
maim
).
https://github.com/neXromancers/shotgun
||
shotgun
Shutter
— Rich screenshot and editing program (supports
delay
).
https://shutter-project.org/
||
shutter
Spectacle
—
KDE
application for screen capture, capable of capturing images of the whole desktop, a single window, a section of a window, a selected rectangular region or a freehand region; part of
plasma
. Needs running plasma under Wayland
https://invent.kde.org/plasma/spectacle
||
spectacle
Xfce4-screenshooter
— Application and
Xfce
panel plugin to take screenshots about the entire screen, the active window or a selected region; part of
xfce4-goodies
. Only allows entire screen and selection capture with Wayland
https://docs.xfce.org/apps/screenshooter/start
||
xfce4-screenshooter
xwd
—
X Window
dump utility.
https://www.x.org/
||
xorg-xwd
Usage
This article or section needs language, wiki syntax or style improvements. See
Help:Style
for reference.
Reason:
In my opinion, it's better to merge small description-only section (escrotum) into appropriate unit of the aforementioned application list, and create wiki pages for others. (Discuss in
Talk:Screen capture
)
maim
maim
is aimed to be an improved scrot.
Save the full screen to file:
$ maim
filename
Prompt for selection and save to file:
$ maim --select
filename
Save the active window to file, assuming
xdotool
is installed:
$ maim --window $(xdotool getactivewindow)
filename
Prompt for selection, save without cursor, and store it to clipboard, assuming
xclip
is installed:
$ maim -s | xclip -selection clipboard -t image/png -i
scrot
scrot
enables taking screenshots from the CLI and offers features such as a user-definable time delay. Unless instructed otherwise, it saves the file in the current working directory.
$ scrot -t 20 -d 5
The above command saves a dated
.png
file, along with a thumbnail (20% of original), for Web posting. It provides a 5 second delay before capturing in this instance.
You can also use standard date and time formatting when saving to a file.  e.g.,
$ scrot ~/screenshots/%Y-%m-%d-%T-screenshot.png
saves the screenshot in a filename with the current year, month, date, hours, minutes, and seconds to a folder in your home directory called "screenshots"
See
scrot(1)
for more information.
Note
In some window managers (
dwm
AUR
,
xmonad
and possibly others)
scrot -s
does not work properly when running via window manager's keyboard shortcut, this can be worked around by prepending scrot invocation with a short pause
sleep 0.2; scrot -s
.
Desktop environment specific
Budgie
Budgie
ships with its own screenshot utility called BudgieScreenshot.
It allows capturing the whole screen using
PrintScreen
, the active window or a selected area. See
Keyboard Shortcuts
for the shortcut to a specific action.
Cinnamon
The default installation of
Cinnamon
does not provide a screenshot utility. Installing
gnome-screenshot
will enable screenshots through the
Menu > Accessories > Screenshot
or by pressing
PrintScreen
.
GNOME
GNOME
users can press
PrintScreen
or click the camera icon in the system menu. You can also optionally install
gnome-screenshot
and open it via
Apps > Accessories > Take Screenshot
.
GNOME features built-in screen recording with the
Ctrl+Shift+Alt+r
key combination. A red circle is displayed in the bottom right corner of the screen when the recording is in progress. After the recording is finished, a file named
Screencast from %d%u-%c.webm
is saved in the
Videos
directory. In order to use the screencast feature the
gst-plugin-pipewire
and
gst-plugins-good
packages need to be installed.
KDE
If you use
KDE
, you might want to use
Spectacle
.
Spectacle is provided by the
spectacle
package.
Xfce
If you use
Xfce
you can install
xfce4-screenshooter
and then add a keyboard binding:
Xfce Menu > Settings > Keyboard > Application Shortcuts
If you want to skip the Screenshot prompt, type
$ xfce4-screenshooter -h
in terminal for the options.
Other desktop environments or window managers
This article or section is a candidate for merging with
ImageMagick#Screenshot taking
.
Notes:
This subsection is not about "other DE/WM" in general, but about usage of
import
.  (Discuss in
Talk:Screen capture
)
For other desktop environments such as
LXDE
or window managers such as
Openbox
and
Compiz
, one can add the above commands to the hotkey to take the screenshot. For example:
$ import -window root ~/Pictures/$(date '+%Y%m%d-%H%M%S').png
Note that
import
is part of the
imagemagick
package. Adding the above command to the
PrintScreen
key to Compiz allows to take the screenshot to the Pictures folder according to date and time.
Note that
<command>
in Openbox does not pass the string to a shell, so in order to run the subcommand, you need to run
sh
manually. For example, add the following to the keyboard section of your
rc.xml
file:
rc.xml
<!-- Screenshot -->
<keybind key="Print">
  <action name="Execute">
    <command>sh -c "import -window root ~/Pictures/$(date '+%Y%m%d-%H%M%S').png"</command>
  </action>
</keybind>
If the
PrintScreen
above does not work, see
Keyboard input
and use different
keysym
or
keycode
.
Packages including a screenshot utility
ImageMagick/GraphicsMagick
See
ImageMagick#Screenshot taking
.
GIMP
You also can take screenshots with
GIMP
(
File > Create > Screenshot
...).
imlib2
imlib2
provides a binary
imlib2_grab
to take screenshots. To take a screenshot of the full screen, type:
$ imlib2_grab screenshot.png
FFmpeg
See
FFmpeg#Screen capture
.
Screencast software
See also
FFmpeg#Screen capture
and
Wikipedia:Comparison of screencasting software
.
Screencast utilities allow you to create a video of your desktop or individual windows.
Deepin Screen Recorder
— Screen recorder application for Deepin desktop.
https://www.deepin.org/en/original/deepin-screen-recorder/
||
deepin-screen-recorder
FFcast
— FFmpeg-based screencast tool written in Bash.
https://github.com/ropery/FFcast
||
ffcast
AUR
GPU Screen Recorder
— Screen recorder that captures your screen on the GPU only to vastly improve performance, comparable to NVIDIA ShadowPlay and it supports X11 and Wayland. Webcam, live streaming and replay buffer are supported as well.
https://git.dec05eba.com/gpu-screen-recorder-ui/about/
||
gpu-screen-recorder-ui
Green Recorder
— Simple yet functional desktop recorder for Linux systems.
https://github.com/dvershinin/green-recorder
||
green-recorder
AUR
Kazam
— Screencasting program with design in mind that handles multiscreen setups.
https://launchpad.net/kazam
||
kazam
AUR
Kooha
— Simple screen recorder with a minimal GTK interface.
https://github.com/SeaDve/Kooha
||
kooha
menyoki
— Screen capture and perform ImageOps on the command line (X11 only, Wayland planned).
https://github.com/orhun/menyoki
||
menyoki
Open Broadcaster Software
— Video recording and live streaming application.
https://obsproject.com/
||
obs-studio
obs-gnome-screencast
AUR
– plugin for GNOME screencast feature, supports Wayland
Peek
— Simple screencast tool that produces GIF, APNG, WebM or MP4 animations (no longer under development as of 2023-01).
https://github.com/phw/peek
||
peek
RecApp
— User friendly screencaster written in GTK using free GStreamer modules and not dependent on FFmpeg (no longer under development).
https://github.com/amikha1lov/RecApp
||
recapp
AUR
RecordMyDesktop
— Easy to use utility with a CLI interface that records your desktop into the
Ogg
format (inactive development).
https://recordmydesktop.sourceforge.net/
||
recordmydesktop
screencast
— Command line interface to record an X11 desktop using FFmpeg, having support for offline recording and live streaming.
https://github.com/dbermond/screencast/
||
screencast
AUR
Screencast
— Simple screencast recorder designed for
elementary OS
.
https://github.com/artemanufrij/screencast
||
pantheon-screencast
AUR
SimpleScreenRecorder
— Feature-rich screen recorder written in C++/Qt5 that supports X11 and OpenGL.
https://www.maartenbaert.be/simplescreenrecorder/
||
simplescreenrecorder
AUR
Spectacle
—
KDE
application for screen capture, capable of capturing video (without sound) of the whole desktop, a single screen or a single window on Wayland; part of
kde-graphics
(works only with kwin activated, so cannot be used with other window managers).
https://invent.kde.org/plasma/spectacle
||
spectacle
VokoScreen
— Powerful screencast GUI tool using GStreamer, supporting numerous codec, capture video and sound, from internal or external (micro, webcam) and screen/window/view sources, zoom and highlight of mouse region+buttons but with limited Wayland support.
https://linuxecke.volkoh.de/vokoscreen/vokoscreen.html
||
vokoscreen
Wayfarer
— GTK4 screen recorder for Wayland with Pipewire as well as Xorg.
https://github.com/stronnag/wayfarer
||
wayfarer
AUR
Annotation and visualization tools
Some tools that can be used to annotate things during screencasts or show elements like pressed keys, or mouse activity.
Gromit
— On screen draw.
https://github.com/bk138/gromit-mpx/
||
gromit-mpx
AUR
key-mon
— Display currently pressed keyboards keys. Does not work on Wayland, due to security policies with input.
https://github.com/scottkirkwood/key-mon/
||
key-mon-git
AUR
screenkey
— Display currently pressed keyboards keys.
https://www.thregr.org/~wavexx/software/screenkey/
||
screenkey
(doesn't seem to display anything with Wayland)
Wayland
Capturing the screen on Wlroots-based compositor can be done using:
grim
or
grimshot
(from
sway-contrib
) for screenshots
gscreenshot
AUR
(whole screen only)
wf-recorder
or
obs-studio
for video
xfce4-screenshooter
screengrab
(full/rectangular part of screen)
flameshot
works, need to select grim for capture in configuration GUI
Optionally,
slurp
can be used to select the part of the screen to capture. If your GPU supports
vaapi
encoding,
wl-screenrec
AUR
can be a more efficient alternative to
wf-recorder
.
Screenshot
Take a screenshot of the whole screen:
$ grim screenshot.png
Take a screenshot of current window in
Sway
:
$ swaymsg -t get_tree | jq -r '.. | select(.focused?) | .rect | "\(.x),\(.y) \(.width)x\(.height)"' | grim -g - screenshot.png
Take a screenshot of current window in
Hyprland
:
$ hyprctl -j activewindow | jq -r '"\(.at[0]),\(.at[1]) \(.size[0])x\(.size[1])"' | grim -g - screenshot.png
Take a screenshot of a part of the screen:
$ slurp | grim -g - screenshot.png
Take a screenshot of a part of the screen and put the output into the clipboard using
wl-clipboard
:
$ slurp | grim -g - - | wl-copy
Take a screenshot of a part of the screen, save to a file, and put the output into the clipboard using
wl-clipboard
:
$ slurp | grim -g - - | tee ~/Pictures/$(date +%s).png | wl-copy
Tip
hyprcap
AUR
is a script utility to capture screenshots and screen recordings on Hyprland making use of several of the programs mentioned above.
slurpshot
is an interactive screenshot taking script using
bemenu
.
To use a post-capture screenshot editing and drawing tool such as
swappy
:
grim -g "$(slurp)" - | swappy -f -
screenshot.sh
GUI Screenshot Tool for Wayland Using
zenity
,
grim
and
slurp
Screencasting
This article or section is a candidate for merging with
#Screencast software
.
Notes:
vokoscreen is already in the list above (Discuss in
Talk:Screen capture
)
vokoscreen
now supports both Qt (it's base environment) and GNOME Desktop Environments (DE) for screencast screen, window or screen area. The DE will open a window asking to accept access (fullscreen for fullscreen or cropped part, window, for window) at each new record on GNOME.
Via GNOME screencast
green-recorder
AUR
,
obs-gnome-screencast
AUR
and
obs-studio
support screen recording on Wayland using GNOME screencast feature.
Via the WebRTC protocol
See
PipeWire#WebRTC screen sharing
.
Chromium and Firefox should now be able to access the screenshare. You can verify this through
Mozilla's getUserMedia / getDisplayMedia Test Page
.
Hyprland
The
Hyprland
window manager allows screen casting and recording with
OBS
(including selection of individual windows and workspaces) when used with
xdg-desktop-portal-hyprland
[1]
.
Sway
Configuration for screen sharing with selection on
Sway
is covered by default in
/usr/share/xdg-desktop-portal/sway-portals.conf
.
Other wlroots based compositors
Capture a video of the whole screen with filename
recording.mp4
(the default is
recording.mkv
):
$ wf-recorder -f recording.mp4
Capture a video of a part of the screen:
$ wf-recorder -g "$(slurp)"
The factual accuracy of this article or section is disputed.
Reason:
According to
XDG Desktop Portal#List of backends and interfaces
, the GTK portal (
xdg-desktop-portal-gtk
) is irrelevant to screen sharing. Explain why it is needed and potentially update the linked table. (Discuss in
Talk:Screen capture
)
This article or section needs language, wiki syntax or style improvements. See
Help:Style
for reference.
Reason:
Writing style does not fit with
Help:Style#Language register
. (Discuss in
Talk:Screen capture
)
for those on a different wlroots based compositors, such as
dwl
: you will need to do the following,
install
xdg-desktop-portal-wlr
with the gtk version then follow
XDG Desktop Portal#Configuration
with
PipeWire
installed then restart
See
PipeWire#WebRTC screen sharing
.
Via a virtual webcam video feed
See
v4l2loopback#Casting Wayland using wf-recorder
.
Tip
This method has been tested with
zoom
AUR
(desktop client running under
xorg-xwayland
) and
BigBlueButton
under
chromium
(under
firefox
the resolution is really low).
The example uses
wf-recorder
but you can use whatever software, just feed the output to the virtual device.
Install
wf-recorder
(or
wf-recorder-git
AUR
) and
v4l2loopback-dkms
. Load the
v4l2loopback
kernel module with the following parameters:
# modprobe v4l2loopback exclusive_caps=1 card_label=VirtualVideoDevice
Verify that a new virtual video device
VirtualVideoDevice
has been created:
$ v4l2-ctl --list-devices
...
VirtualVideoDevice (platform:v4l2loopback-000):
	/dev/video2
...
Start recording the screen with
wf-recorder
and feed the output to the new virtual video device
VirtualVideoDevice
created by
v4l2loopback
:
$ wf-recorder --muxer=v4l2 --codec=rawvideo --file=/dev/video2 -x yuv420p
The
yuv420p
colour space is required for the video output to be compatible with Zoom
[2]
.
Tip
If you encounter
Unknown V4L2 pixel format equivalent for rgb0
run
wf-recorder
with
--force-yuv
or
-t
to force conversion of the data to yuv format, before sending it to the GPU.
[3]
You can now select the above virtual video device as your "webcam" in video calling/video conferencing applications (the device is called
VirtualVideoDevice
). You can use
ffplay
(part of
ffmpeg
),
mpv
, or
gst-launch
(part of
gstreamer
) to verify that the virtual video device indeed outputs your screenshare:
$ ffplay /dev/video2
$ mpv av://v4l2:/dev/video2
$ gst-launch-1.0 -v v4l2src device=/dev/video2 ! glimagesink
If Firefox is unable to read the video stream and prints a message like "AbortError: Starting video failed", try preloading
v4l2compat.so
:
$ LD_PRELOAD=/usr/lib/v4l1compat.so firefox
Sharing individual applications
Warning
This method does not involve a proper implementation of individual application sharing as the region being shared will not change after resizing any windows.
As explained above,
wf-recorder
is able to record only a portion of the screen by first selecting a region with
slurp
. To use this functionality for sharing a specific region/application window through a virtual video device, start recording the screen with the following modified command:
$ wf-recorder
-g "$(slurp)"
--muxer=v4l2 --codec=rawvideo --file=/dev/video2 -x yuv420p
After selecting a region of the screen, you will be able to access the video feed through the virtual video device
/dev/video2
as above.
Screencast Wayland windows with X11 applications
You can share native Wayland windows (or the whole screen/workspace) to the X11 application. For this you need to use
xwaylandvideobridge
AUR
. See
Fixing Wayland: Xwayland screen casting
for details.
Terminal
Capture with ANSI codes
You can use the
script(1)
command, part of the
util-linux
package.
Just run
script
and from that moment, all the output is going to be saved to the
typescript
file, including the ANSI codes.
Once you are done, just run
exit
and the
typescript
would ready. The resulting file can be converted to HTML using the
ansi2html
AUR
package (not to be confused with ansi2html from
python-ansi2html
).
To convert the
typescript
file to
typescript.html
, do the following:
$ ansi2html --bg=dark < typescript > typescript.html
Actually,
some
commands can be piped directly to ansi2html:
$ ls --color|ansi2html --bg=dark >output.html
That does not work on every single case, so in those cases, using
script
is mandatory.
Framebuffer
Use
fbgrab
or
fbdump
AUR
to take a screenshot.
Virtual console
Screenshot
If you merely want to capture the text in the console and not an actual image, you can use
setterm
, which is part of the
util-linux
package.  The following command will dump the textual contents of virtual console 1 to a file
screen.dump
in the current directory:
# setterm -dump 1 -file screen.dump
Root permission is needed because the contents of
/dev/vcs1
need to be read.
Screencast of console
asciinema
allows to record a whole terminal session activity, which is saved in a file in its own (open) format. This file can be played with the same tool or an HTML5 version of the tool, and can be shared on the asciinema.org official web site of the application, or on any own hosted HTML version.
Usage:
asciinema(1)
or
asciinema --help
.
asciinema rec
output.cast
records the session,
Ctrl+\
can pause/resume it,
Ctrl-d
/exit of the session will stop it. Name of output file is optional.
Interesting arguments for recording:
-c
command
if you just want to record a specific command action/output
-i 1.2
record for 1.2 seconds only
-t "
beautiful title
"
add a title to the terminalcast
Other functions than recording:
asciinema play
file.cast
play an asciinema record file
asciinema upload
file.cast
upload the file on asciinema.org for sharing
asciinema auth
manage recordings on asciinema.org account
Troubleshooting
Screenshot uses old screen state
See
KDE#Spectacle screenshot uses old screen state
.
NVIDIA clipping background
If the
NVIDIA
driver is in use and the screen recording is experiencing background clipping, enable the
ForceCompositionPipeline
setting. See
NVIDIA/Troubleshooting#Avoid screen tearing
for details.