屏幕捕獲

出自 Arch Linux 中文维基

本文列出並描述了截屏錄屏軟件。

截屏軟件[編輯 | 編輯原始碼]

專項軟件[編輯 | 編輯原始碼]

  • CoreShot — Simple lightweight screen capture utility for X11. Part of C-Suite.
https://cubocore.org/ || coreshotAUR
  • Deepin Screenshot — Quite easy-to-use screenshot tool. Features: global hotkey to trigger screenshot tool, take screenshot of a selected area, easy to add text and line drawings onto the screenshot. Python/Qt5 based. However, it is now deprecated and has been merged into Deepin Screen Recorder. There is also a known issue with the clipboard functionality. There is a patched version in the aur deepin-screenshot-copy-patchAUR
https://www.deepin.org/en/original/deepin-screenshot/ || deepin-screenshot
  • Escrotum — Screen capture using python and gtk3, inspired by scrot.
https://github.com/Roger/escrotum || escrotum-gitAUR
  • Flameshot — Qt5 based software for interactive screenshot taking. Select the desired area, draw with different tools and enjoy the customization capabilities.
https://github.com/lupoDharkael/flameshot || flameshot
https://gitlab.gnome.org/GNOME/gnome-screenshot/ || gnome-screenshot
  • grim — Grab images from a Wayland compositor.
https://github.com/emersion/grim || grim
  • gscreenshot — Simple GTK screenshot utility with delays, selection, and copy-to-clipboard functionality.
https://github.com/thenaterhood/gscreenshot || gscreenshotAUR
  • 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-gitAUR
  • imgur-screenshot — Take screenshot selection, upload to imgur + more cool things
https://github.com/jomo/imgur-screenshot || imgur-screenshotAUR
  • ksnip — Ksnip is a Qt based cross-platform screenshot tool that provides many annotation features for your screenshots.
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 || lightscreenAUR
  • LXQt Screenshot — Screenshot tool for LXQt. Run with lximage-qt --screenshot.
https://github.com/lxde/lximage-qt || lximage-qt
  • maim — Simple command line utility that takes screenshots. It is 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 — Screen{shot,cast} and perform ImageOps on the command line.
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. has plugins and system tray.
https://screencloud.net/ || screencloudAUR
  • ScreenGrab — Cross-platform application designed to quickly take screenshots (Qt).
https://github.com/DOOMer/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
  • SpectacleKDE application for taking screenshots. It is 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 kde-graphics包組.
https://github.com/KDE/spectacle/ || spectacle
  • Xfce4 Screenshooter — Application and Xfce4 panel plugin to take screenshots about the entire screen, the active window or a selected region. Part of xfce4-goodies包組.
https://goodies.xfce.org/projects/applications/xfce4-screenshooter || xfce4-screenshooter
  • xwd — X Window System image dumping utility
https://www.x.org/ || xorg-xwd

xwd[編輯 | 編輯原始碼]

xwd(1)xorg-xwd 提供。

要截取根窗口的屏幕截圖:

$ xwd -root -out screenshot.xwd
提示:要在截屏前延遲,請使用 sleep 命令。例如:sleep 5; xwd ...

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. You can simply automate the file to uploaded like so [1].

注意: In some window managers (dwmAUR, 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.

escrotum[編輯 | 編輯原始碼]

escrotum-gitAUR 受 scrot 啟發,使用 PyGTK 截屏

創建的原因是 scrot 在選擇模式與正在刷新的窗口一起使用時具有故障。

因為它的命令行界面和 scrot 幾乎一樣,因此可以作為它的替代品。

maim[編輯 | 編輯原始碼]

maim 旨在成為一個改進的 scrot。

使用 slop 為桌面屏幕區域截圖。這旨在克服 scrot 的缺點。

要選擇屏幕的一部分並將其存儲到剪貼板,可以使用 xclip

$ maim -s -u | xclip -selection clipboard -t image/png -i

特定於桌面環境的軟件[編輯 | 編輯原始碼]

Spectacle[編輯 | 編輯原始碼]

如果你使用 KDE,那你可能想要使用 Spectacle

Spectacle 由 spectacle 軟件包提供。

Xfce Screenshooter[編輯 | 編輯原始碼]

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.

GNOME[編輯 | 編輯原始碼]

GNOME users can press PrintScreen or Apps > Accessories > Take Screenshot. You may need to install gnome-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 plugins need to be installed.

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.

其他桌面環境或窗口管理器[編輯 | 編輯原始碼]

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. Notice that the rc.xml file in Openbox does not understand commas; so, in order to bind that command to the PrintScreen key in Openbox, you need to 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 Print above does not work, see Extra keyboard keys and use different keysym or keycode.

包含截屏實用程序的軟件包[編輯 | 編輯原始碼]

ImageMagick/GraphicsMagick[編輯 | 編輯原始碼]

請參閱 ImageMagick#Screenshot taking

GIMP[編輯 | 編輯原始碼]

也可以使用 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[編輯 | 編輯原始碼]

請參閱 FFmpeg#Screen capture

錄屏軟件[編輯 | 編輯原始碼]

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.

  • Byzanz — Simple screencast tool that produces GIF animations.
https://gitlab.gnome.org/Archive/byzanz || byzanz
  • 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/lolilolicon/FFcast || ffcastAUR
  • Green Recorder — Simple yet functional desktop recorder for Linux systems.
https://github.com/dvershinin/green-recorder || green-recorderAUR
  • Kazam — Screencasting program with design in mind. Handles multiscreen setups.
https://launchpad.net/kazam || kazamAUR
  • Kooha — Simple screen recorder with a minimal GTK interface.
https://github.com/SeaDve/Kooha || kooha
  • menyoki — Screen{shot,cast} and perform ImageOps on the command line.
https://github.com/orhun/menyoki || menyoki
https://obsproject.com/ || obs-studio
  • Peek — Simple screencast tool that produces GIF, APNG, WebM or MP4 animations.
https://github.com/phw/peek || peek
  • RecApp — User friendly screencaster written in GTK. Using free GStreamer modules and not depend on FFmpeg. No longer under development.
https://github.com/amikha1lov/RecApp || recapp-gitAUR
  • RecordItNow — Plugin based desktop recorder for KDE 4.
http://recorditnow.sourceforge.net/ || recorditnowAUR
  • RecordMyDesktop — Easy to use utility that records your desktop into the ogg format with a CLI, GTK or Qt interface. (inactive development)
http://recordmydesktop.sourceforge.net/ || CLI: recordmydesktop, GTK: gtk-recordmydesktopAUR, Qt: qt-recordmydesktopAUR
  • screencast — Command line interface to record an X11 desktop using FFmpeg, having support for offline recording and live streaming.
https://github.com/dbermond/screencast/ || screencastAUR
  • Screencast — Simple screencast recorder designed for elementary OS.
https://github.com/artemanufrij/screencast || pantheon-screencastAUR
  • SimpleScreenRecorder — Feature-rich screen recorder written in C++/Qt5 that supports X11 and OpenGL.
https://www.maartenbaert.be/simplescreenrecorder/ || simplescreenrecorder
  • VokoScreen — Simple screencast GUI tool using GStreamer.
https://linuxecke.volkoh.de/vokoscreen/vokoscreen.html || vokoscreen
  • XVidCap — Application used for recording a screencast or digital recording of an X Window System screen output with an audio narration.
http://xvidcap.sourceforge.net/ || xvidcapAUR

Wayland[編輯 | 編輯原始碼]

Capturing the screen on Wlroots-based compositor can be done using grim or grimshot (provided by sway) for screenshots and wf-recorder (or wf-recorder-gitAUR) for video; wlrobs-hgAUR is an obs-studio plugin that allows you to screen capture on wlroots-based compositors. Optionally, slurp can be used to select the part of the screen to capture.

Take a screenshot of the whole screen:

$ grim screenshot.png

Take a screenshot of current window:

$ grim -g "$(swaymsg -t get_tree | jq -r '.. | select(.focused?) | .rect | "\(.x),\(.y) \(.width)x\(.height)"')" screenshot.png

Take a screenshot of a part of the screen:

$ grim -g "$(slurp)" screenshot.png

Take a screenshot of a part of the screen and put the output into the clipboard using wl-clipboard:

$ grim -g "$(slurp)" - | wl-copy

Capture a video of the whole screen:

$ wf-recorder -f recording.mp4

Capture a video of a part of the screen:

$ wf-recorder -g "$(slurp)"
提示:
  • 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 -

Additionally, some programs mentioned above work under Wayland (e.g. ksnip, green-recorderAUR).

Tmate[編輯 | 編輯原始碼]

To capture your terminal(s) in wl-roots based compositor like wayland, use tmate, then copy your ssh key and send it to your mate. For further information see tmate(1)

錄屏[編輯 | 編輯原始碼]

Via GNOME screencast[編輯 | 編輯原始碼]

green-recorderAUR, obs-gnome-screencastAUR and obs-studio support screen recording on Wayland using GNOME screencast feature.

Via a virtual webcam video feed[編輯 | 編輯原始碼]

提示:
  • This method has been tested with zoomAUR (desktop client running under xorg-xwayland) and BigBlueButton under chromium (under firefox the resolution is really low); skypeforlinux-stable-binAUR detects the virtual video device VirtualVideoDevice, but outputs a blank screen.
  • 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-gitAUR) 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].

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[編輯 | 編輯原始碼]
警吿: 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 vitual video device /dev/video2 as above.

Via the WebRTC protocol[編輯 | 編輯原始碼]

注意: This method only allows sharing an entire output and not individual applications [3].

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.

終端[編輯 | 編輯原始碼]

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 ansi2htmlAUR package, from the AUR. (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[編輯 | 編輯原始碼]

Install a framebuffer and use fbgrab or fbdump to take a 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 權限,因為需要讀取 /dev/vcs1 的內容。