屏幕捕獲
截屏軟體[編輯 | 編輯原始碼]
專項軟體[編輯 | 編輯原始碼]
- CoreShot — 在X11上的簡單輕量級屏幕捕獲實用程序。是C-Suite的一部分。
- Deepin Screenshot — 非常簡單易用的截圖工具,現已棄用並合併到深度錄屏(Deepin Screen Recorder)中。已知的剪貼板功能問題已通過deepin-screenshot-copy-patchAUR進行修補 。
- Escrotum — 使用python和gtk3的屏幕截圖軟體,靈感來源於scrot。
- Flameshot — 基於Qt5的交互式屏幕截圖軟體。選擇所需截圖的區域,使用不同的工具錄製,並且可以自定義功能。
- GNOME Screenshot — GNOME 桌面的屏幕截圖工具。
- grim — 從Wayland compositor上抓取圖像。
- gscreenshot — 簡單的GTK截圖工具,具有延遲截圖,選擇區域和複製到剪貼板功能。
- HotShots — 用於捕獲屏幕並將其保存為各種圖像格式以及添加注釋和圖形數據(箭頭,線條,文本等)的應用程式。
- imgur-screenshot — 屏幕截圖, 選擇上傳到 imgur ,還有更多工具。
- ksnip — Ksnip是一個基於Qt的跨平台截圖工具,為您的截圖提供了許多注釋功能。
- Lightscreen — 一個簡單的工具,自動優化繁瑣的保存和編目屏幕截圖過程,它作為一個隱藏的後台進程,調用一個(或多個)快捷鍵,然後根據用戶的喜好保存屏幕截圖文件到磁碟。
- LXQt Screenshot — LXQt上的截圖工具,使用
lximage-qt --screenshot
命令運行。
- maim — 簡單的命令行屏幕截圖實用工具。它旨在取代scrot,並且在許多方面比scrot表現得更好。
- MATE Screenshot — MATE桌面環境的截圖工具
- menyoki — 命令行屏幕截圖和屏幕播放工具,支持圖像處理操作。
- mss — 一個支持xrandr的屏幕截圖Python模塊,只需最小的CLI。
- Pantheon Screenshot — 為elementary OS設計的屏幕截圖工具。
- ScreenCloud — 拍攝整個屏幕或選擇一個區域的屏幕截圖,然後上傳屏幕截圖到imgur+auth。具有插件和系統托盤。
- ScreenGrab — 為快速截圖設計的跨平台(Qt)應用程式,
- Scrot — X窗口管理器的簡單命令行屏幕截圖工具
- Shotgun — 用Rust編寫的最小X屏幕截圖實用工具。根據作者的說法,它的速度是maim的兩倍。
- Shutter — 豐富的截圖和編輯程序。支持 delay延遲拍攝。
- Spectacle — 屏幕{截圖,錄製}的KDE應用程式。它能夠捕獲整個桌面、單個窗口、窗口的一部分、選定的矩形區域或手繪區域的圖像。它是kde-graphics包組的一部分。
- Xfce4 Screenshooter — 獲取整個屏幕截圖,活動窗口或選定區域的應用程式和Xfce 4面板插件。它是 xfce4-goodies包組的一部分。
- xwd — X窗口管理器圖像儲存工具
xwd[編輯 | 編輯原始碼]
要截取根窗口的屏幕截圖:
$ xwd -root -out screenshot.xwd
sleep
命令。例如:sleep 5; xwd ...
。scrot[編輯 | 編輯原始碼]
scrot包 允許從命令行截取屏幕截圖,並允許設定延遲截取等功能。除非特別指定,否則它將把文件保存到當前工作目錄。
$ scrot -t 20 -d 5
上述的命令會保存一個帶日期的 .png 文件,及其縮略圖(源文件的 20%),以供網絡內容使用。在這個例子中,它將在截屏前延遲5秒。
在保存文件時,同樣可以使用標準日期和時間格式,比如:
$ scrot ~/screenshots/%Y-%m-%d-%T-screenshot.png
會將屏幕截圖以包含當前年、月、天數、小時、分鐘、秒的文件名保存到主目錄中名為 "screenshorts" 的文件夾中。
詳見 scrot(1) 以查詢更多信息。你可以像這樣簡單的自動上傳文件 [1]。
scrot -s
無法正常工作,者可以通過在對 short 調用前添加短暫的延遲 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[編輯 | 編輯原始碼]
如果你使用 Xfce 你可以安裝 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[編輯 | 編輯原始碼]
錄屏軟體[編輯 | 編輯原始碼]
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.
- Deepin Screen Recorder — Screen recorder application for Deepin desktop.
- FFcast — FFmpeg-based screencast tool written in Bash.
- Green Recorder — Simple yet functional desktop recorder for Linux systems.
- Kazam — Screencasting program with design in mind. Handles multiscreen setups.
- Kooha — Simple screen recorder with a minimal GTK interface.
- menyoki — Screen{shot,cast} and perform ImageOps on the command line.
- Open Broadcaster Software — Video recording and live streaming application.
- https://obsproject.com/ || obs-studio包
- obs-gnome-screencastAUR – plugin for GNOME screencast feature, supports Wayland
- obs-studio-browserAUR – OBS built with the browser plugin
- Peek — Simple screencast tool that produces GIF, APNG, WebM or MP4 animations.
- RecApp — User friendly screencaster written in GTK. Using free GStreamer modules and not depend on FFmpeg. No longer under development.
- RecordItNow — Plugin based desktop recorder for KDE 4.
- 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.
- Screencast — Simple screencast recorder designed for elementary OS.
- SimpleScreenRecorder — Feature-rich screen recorder written in C++/Qt5 that supports X11 and OpenGL.
- VokoScreen — Simple screencast GUI tool using GStreamer.
- XVidCap — Application used for recording a screencast or digital recording of an X Window System screen output with an audio narration.
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)"
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[編輯 | 編輯原始碼]
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[編輯 | 編輯原始碼]
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
的內容。