跳至內容
出自 Arch Linux 中文维基

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

截屏軟體

專用於截圖的軟體

應用程式列表

https://cubocore.gitlab.io/ || coreshotAUR
  • Escrotum — 受 scrot 啟發的屏幕捕獲工具,使用 PyGTK,可替代 scrot。
https://github.com/Roger/escrotum || escrotum-gitAUR
https://github.com/lupoDharkael/flameshot || flameshot
https://gitlab.gnome.org/GNOME/gnome-screenshot/ || gnome-screenshot
https://sr.ht/~emersion/grim/ || grim
  • gscreenshot — 支持多種截圖後端(如 scrot、ImageMagickPILimlib2 和 grim)的 GTK 前端工具,支持延時、選區及複製到剪貼板功能。
https://github.com/thenaterhood/gscreenshot || gscreenshotAUR
  • HotShots — 屏幕捕獲工具,支持多種圖像格式保存,並可添加注釋和圖形標註(箭頭、線條、文字等)。
https://github.com/obiwankennedy/HotShots || hotshots-gitAUR
  • imgur-screenshot — 截取選區並上傳至 imgur,支持更多擴展功能。
https://github.com/jomo/imgur-screenshot || imgur-screenshotAUR
  • ksnip — 基於 Qt 的跨平台截圖工具,提供多種標註功能、基本的圖像編輯功能,並支持遠程存儲(到 FTP、imgur 或通過自定義腳本)。
https://github.com/ksnip/ksnip || ksnip
  • Lightscreen — 自動保存和管理截圖的工具,以隱藏後台進程運行,通過快捷鍵觸發並按用戶偏好保存截圖。
https://lightscreen.com.ar || lightscreenAUR
  • LXImage-Qt — LXImage 的 Qt 移植版,含圖像查看和截圖功能(通過 lximage-qt --screenshot 運行)。
https://github.com/lxde/lximage-qt || lximage-qt
  • maim — 旨在替代 scrot 的命令行截圖工具,在多方面表現得比 scrot 更好。
https://github.com/naelstrof/maim || maim
  • MATE 截圖工具MATE 桌面環境的截圖工具。
https://mate-desktop.org || mate-utils
  • menyoki — 命令行截圖與屏幕錄製工具,支持圖像處理操作。
https://github.com/orhun/menyoki || menyoki
  • mss — 基於 xrandr 的 Python 截圖模塊,提供了極簡的命令行界面。
https://pypi.org/project/mss/ || python-mss
  • Pantheon 截圖工具 — 專為 elementary OS 設計的截圖工具。
https://github.com/elementary/screenshot || pantheon-screenshot
  • ScreenCloud — 全屏或選區截圖並上傳至 imgur,支持身份驗證、插件及系統托盤。
https://screencloud.net/ || screencloudAUR
  • ScreenGrab — 基於 Qt 的快速截圖工具(已停止開發)。
https://github.com/DOOMer/screengrab || screengrab
  • scrot — 簡單的 X 命令行截圖工具。
https://github.com/resurrecting-open-source-projects/scrot || scrot
  • Shotgun — 用 Rust 編寫的極簡 X 截圖工具(作者稱其速度比 maim 快一倍)。
https://github.com/neXromancers/shotgun || shotgun
  • Shutter — 功能豐富的截圖與編輯工具(支持延時截圖)。
https://shutter-project.org/ || shutter
  • SpectacleKDE 的屏幕捕獲工具,支持捕獲整個桌面、單個窗口、窗口區域、矩形選區或自由選區;屬於 kde-graphics包組
https://apps.kde.org/spectacle/ || spectacle
  • Xfce4 截圖工具 — 包括應用及 Xfce 面板插件,支持全屏、活動窗口或選區截圖;屬於 xfce4-goodies包組
https://docs.xfce.org/apps/screenshooter/start || xfce4-screenshooter
https://www.x.org/ || xorg-xwd

使用方式

本文或本章節的語言、語法或風格需要改進。參考:幫助:風格

原因:建議將僅含簡要說明的小節(如 #Escrotum)合併至前述應用列表的對應條目,並為其他內容創建獨立維基頁面。(在en:Talk:Screen capture討論)

maim

maim 旨在成為 scrot 的改進版。

截取全屏並保存至文件:

$ maim 文件名

交互式選擇矩形區域,截取後保存至文件:

$ maim --select 文件名

截取當前活動窗口並保存至文件(需安裝 xdotool):

$ maim --window $(xdotool getactivewindow) 文件名

選區截屏(不包含光標)並存入剪貼板(需安裝 xclip):

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

scrot

scrot 支持通過命令行截圖,並提供自定義延時等功能。默認將文件保存在當前工作目錄。

$ scrot -t 20 -d 5

上述的命令會在 5 秒延時後保存一個帶日期的 .png 文件及一個適用於網頁發布的縮略圖(大小為原圖的 20%)。

也可使用標準日期時間格式保存,例如使用命令

$ scrot ~/截屏/%Y-%m-%d-%T-截屏.png

將截圖以包含年-月-日-時間的文件名保存至主目錄的「截屏」文件夾。

詳見 scrot(1)


注意:在某些窗口管理器(如 dwmAURxmonad)中,通過快捷鍵直接運行 scrot -s 時選區功能可能異常,可通過添加短暫延時解決:sleep 0.2; scrot -s

不同桌面環境的截圖工具

Budgie

Budgie 自帶名為 BudgieScreenshot 的截圖工具。

可以通過 PrintScreen 鍵捕獲整個屏幕、活動窗口或選區。具體操作的快捷鍵請參閱Shortcuts

Cinnamon

默認安裝的 Cinnamon 不提供截圖工具。安裝 gnome-screenshot 後可通過 菜單 > 附件 > 截圖 或按 PrintScreen 鍵進行截圖。

GNOME

GNOME 用戶可按 PrintScreen 鍵或點擊系統菜單中的相機圖標截圖。也可選擇安裝 gnome-screenshot 並通過 應用 > 附件 > 截圖 使用。

GNOME 內置的屏幕錄製功能需在安裝 gst-plugin-pipewiregst-plugins-good 後使用,其快捷鍵為 Ctrl+Shift+Alt+r。錄製時屏幕右下角會顯示紅點;錄製完成後,文件保存在 Videos 目錄下的 Screencast from %d%u-%c.webm

KDE

若使用 KDE,推薦使用 Spectacle。

Spectacle 由 spectacle 提供。

Xfce

若使用 Xfce,可安裝 xfce4-screenshooter 並添加鍵盤綁定:

Xfce 菜單 > 設置 > 鍵盤 > 應用程式快捷鍵

若需跳過截圖提示框,可在終端輸入 xfce4-screenshooter -h 查看選項。

其他桌面環境/窗口管理器

對於 LXDE 等桌面環境或 OpenboxCompiz 等窗口管理器,可通過添加快捷鍵調用截圖命令。例如:

$ import -window root ~/Pictures/$(date '+%Y%m%d-%H%M%S').png

注意 import 工具來自 imagemagick。在 Compiz 中將上述命令綁定至 PrintScreen 鍵可實現按日期時間保存截圖至圖片文件夾。

需注意 Openbox 的 rc.xml 文件不支持逗號,因此若要在 Openbox 中綁定 PrintScreen 鍵,需在 rc.xml 文件的鍵盤章節添加如下內容:

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>

若上述的 PrintScreen 鍵無法使用,請參閱鍵盤輸入使用不同的鍵符(keysym)或鍵碼(keycode)。

其它含有截屏工具的軟體包

ImageMagick/GraphicsMagick

詳見 ImageMagick#截屏

GIMP

可通過 GIMP 截圖(文件 > 創建 > 截圖...)。

imlib2

imlib2 提供 imlib2_grab 工具進行截圖。全屏截圖命令:

$ imlib2_grab screenshot.png

FFmpeg

詳見 FFmpeg#屏幕捕獲

錄屏軟體

另見 FFmpeg#屏幕捕獲Wikipedia:Comparison of screencasting software

屏幕錄製工具可捕獲桌面或單個窗口的視頻流。

  • 深度錄屏 — 深度桌面環境的錄屏工具。
https://www.deepin.org/zh/original/deepin-screen-recorder/ || deepin-screen-recorder
  • FFcast — 基於 FFmpeg 的 Bash 腳本錄屏工具。
https://github.com/lolilolicon/FFcast || ffcastAUR
  • GPU Screen Recorder GTK — GPU 加速錄屏工具,性能媲美 NVIDIA ShadowPlay,支持直播和回放緩衝。
https://git.dec05eba.com/gpu-screen-recorder-gtk/about/ || gpu-screen-recorder-gtkAUR
  • Green Recorder — 簡潔實用的 Linux 桌面錄屏工具。
https://github.com/dvershinin/green-recorder || green-recorderAUR
  • Kazam — 支持多屏配置的錄屏程序。
https://launchpad.net/kazam || kazamAUR
  • Kooha — 極簡 GTK 界面錄屏工具。
https://github.com/SeaDve/Kooha || kooha
  • menyoki — 命令行屏幕捕獲及圖像處理工具(目前僅支持 X11,Wayland 開發中)。
https://github.com/orhun/menyoki || menyoki
  • OBS — 專業視頻錄製與直播軟體。
https://obsproject.com/ || obs-studio
  • Peek — 生成 GIF/APNG/WebM/MP4 動畫的簡易錄屏工具(2023 年 1 月起停止開發)。
https://github.com/phw/peek || peek
  • RecApp — 基於 GStreamer 模塊的 GTK 錄屏工具(不依賴 FFmpeg,已停止開發)
https://github.com/amikha1lov/RecApp || recappAUR
https://recordmydesktop.sourceforge.net/ || 命令行界面:recordmydesktop;GTK2 界面:gtk-recordmydesktopAUR
  • screencast — 基於 FFmpeg 的 X11 命令行錄屏工具,支持離線錄製與直播推流。
https://github.com/dbermond/screencast/ || screencastAUR
  • Screencast — 專為 elementary OS 設計的簡易錄屏工具。
https://github.com/artemanufrij/screencast || pantheon-screencastAUR
https://www.maartenbaert.be/simplescreenrecorder/ || simplescreenrecorderAUR
  • SpectacleKDE 屏幕捕獲工具,支持 Wayland 下所有屏幕、單屏幕、單窗口和矩形選區視頻錄製(無音頻),屬於 kde-graphics包組(使用時需要 kwin,無法與其他窗口管理器共用)。
https://apps.kde.org/spectacle/ || spectacle
  • VokoScreen — 基於 GStreamer 的強力錄屏工具,支持多編解碼器、音視頻採集、內外設備輸入和區域縮放高亮(Wayland 支持有限)。
https://linuxecke.volkoh.de/vokoscreen/vokoscreen.html || vokoscreen
  • Wayfarer — 適用於 Wayland(基於 Pipewire)和 Xorg 的 GTK4 錄屏工具。
https://github.com/stronnag/wayfarer || wayfarerAUR

Wayland

要在基於 Wlroots 的混成器上捕獲屏幕,截屏可以使用 grim 或來自 sway-contrib 中的 grimshot;錄屏可以使用 wf-recorder(或 wf-recorder-gitAUR)。obs-studio 的插件 wlrobs-hgAUR 可用於支持在基於 Wlroots 的合成器上進行屏幕捕捉。可選使用 slurp 選擇截屏區域。如果 GPU 支持 vaapi 編碼,wl-screenrec-gitAUR 可以作為 wf-recorder 的更高效替代方案。

對整個屏幕截屏:

$ grim 截屏.png

在 Sway 中對當前窗口截屏:

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

Hyprland 中對當前窗口截屏:

$ hyprctl -j activewindow | jq -r '"\(.at[0]),\(.at[1]) \(.size[0])x\(.size[1])"' | grim -g - 截屏.png

對選區截屏:

$ slurp | grim -g - 截屏.png

對選區截屏並使用 wl-clipboard 將結果存入剪貼板:

$ slurp | grim -g - - | wl-copy

對整個屏幕錄屏:

$ wf-recorder -f recording.mp4

對選區錄屏:

$ wf-recorder -g "$(slurp)"
提示:
  • 使用 bemenu 的交互式腳本 slurpshot 可用於截圖。
  • 可以在截屏後使用截屏編輯工具,如 swappygrim -g "$(slurp)" -
提示:

此外,部分前文提到的程序也支持在Wayland環境下工作,例如 ksnipgreen-recorderAUR

屏幕錄製

通過 GNOME 屏幕錄製功能

green-recorderAURobs-gnome-screencastAURobs-studio 支持使用 GNOME 屏幕錄製功能在 Wayland 環境下進行錄屏。

通過 Hyprland

在搭配 xdg-desktop-portal-hyprland 使用時,Hyprland 窗口管理器允許通過 OBS 進行屏幕投射和錄製(包括選擇單個窗口和工作區),詳見 [1]

使用虛擬攝像頭推流

參見 v4l2loopback#使用 wf-recorder 投射 Wayland 屏幕英語v4l2loopback#Casting Wayland using wf-recorder

提示:
  • 此方法已在 zoomAUR(桌面客戶端,運行於 xorg-xwayland)和 chromium 中運行的 BigBlueButton(在 firefox 中解析度極低)測試通過;skypeforlinux-binAUR 能檢測到虛擬視頻設備 VirtualVideoDevice,但輸出黑屏。
  • 示例使用 wf-recorder,也可以用其他軟體,只需將輸出導向虛擬設備即可。

安裝 wf-recorder(或 wf-recorder-gitAUR)和 v4l2loopback-dkms。指定以下參數加載 v4l2loopback 內核模塊:

# modprobe v4l2loopback exclusive_caps=1 card_label=VirtualVideoDevice

驗證是否已創建名為 VirtualVideoDevice 的新虛擬視頻設備:

$ v4l2-ctl --list-devices
...
VirtualVideoDevice (platform:v4l2loopback-000):
	/dev/video2
...

使用 wf-recorder 開始錄製屏幕,並將輸出導向 v4l2loopback 創建的虛擬視頻設備 VirtualVideoDevice

$ wf-recorder --muxer=v4l2 --codec=rawvideo --file=/dev/video2 -x yuv420p

為了確保視頻輸出與 Zoom 兼容,必須使用 yuv420p 色彩空間 [2]

提示:若遇到 Unknown V4L2 pixel format equivalent for rgb0 錯誤,可在運行 wf-recorder 時添加 --force-yuv-t 參數,強制將數據轉換為 yuv 格式後再發送至 GPU [3]

然後可以在視頻通話/會議應用中選擇上述虛擬視頻設備作為「攝像頭」(設備名為 VirtualVideoDevice)。您可使用 ffplayffmpeg 的組件)、mpvgst-launchgstreamer 的組件)驗證虛擬設備是否正常輸出屏幕內容:

$ ffplay /dev/video2
$ mpv av://v4l2:/dev/video2
$ gst-launch-1.0 -v v4l2src device=/dev/video2 ! glimagesink

若 Firefox 無法讀取視頻流並顯示類似「AbortError: Starting video failed」的信息,可嘗試預加載 v4l2compat.so

$ LD_PRELOAD=/usr/lib/v4l1compat.so firefox
僅共享屏幕的一部分
警告:此方法並不是真正的單個應用程式共享實現,因為所共享的區域在調整窗口大小後不會發生變化。

如上所述,wf-recorder 可以通過 slurp 選擇一個區域,從而僅錄製屏幕的一部分。要利用此功能向虛擬攝像頭髮送特定區域/應用程式窗口,可以使用以下修改後的命令開始錄製屏幕:

$ wf-recorder -g "$(slurp)" --muxer=v4l2 --codec=rawvideo --file=/dev/video2 -x yuv420p

在選擇屏幕區域後,即可通過虛擬攝像頭 /dev/video2 訪問視頻流。

使用 WebRTC 協議

注意:此方法僅允許共享整個屏幕,而不能僅共享屏幕的一部分 [4]

參見 PipeWire#WebRTC 屏幕共享

Chromium 和 Firefox 現在應該可以訪問屏幕共享。可以通過 Mozilla 的 getUserMedia/getDisplayMedia 測試頁面進行驗證。

通過 X11 應用程式投射 Wayland 屏幕

原生 Wayland 窗口(或整個屏幕/工作區)可以共享到 X11 應用程式。為此,你需要使用 xwaylandvideobridge。詳情請參見修復 Wayland:Xwayland 屏幕投射

終端

使用 ANSI 代碼捕獲

可以使用 util-linux 軟體包中的 script(1) 命令。運行 script 後,所有終端輸出(包括 ANSI 代碼)將自動保存至 typescript 文件。

操作完成後,運行 exit 結束錄製,此時 typescript 文件即生成完畢。可使用 ansi2htmlAUR 包(注意與 python-ansi2html 的 ansi2html 區分)將文件轉換為 HTML 格式。

typescript 轉換為 typescript.html

$ ansi2html --bg=dark < typescript > typescript.html

實際上,部分命令的輸出可直接通過管道傳遞給 ansi2html:

$ ls --color|ansi2html --bg=dark >output.html

但此方法並非通用,若遇到不兼容情況,仍需使用 script 進行錄製。

通過幀緩衝區

安裝 framebuffer 後,使用 fbgrabfbdumpAUR 捕獲屏幕圖像。

虛擬控制台

截取文本

若僅需捕獲控制台文本而非圖像,可使用 util-linux 中的 setterm 命令。使用以下命令將虛擬控制台 1 的文本內容轉儲至當前目錄的 screen.dump 文件:

# setterm -dump 1 -file screen.dump

這需要 root 權限,因為需要讀取 /dev/vcs1 設備的內容。

錄製文本

asciinema 允許錄製整個終端會話活動,並將其保存為自身的開放格式文件。該文件可以使用此工具或其 HTML5 版本進行播放,並可上傳到 asciinema.org 官方網站或託管在自己的 HTML 版本中。

使用方法:asciinema(1)asciinema --help

  • 使用 asciinema rec 輸出.cast 錄製會話,按 Ctrl+\ 可暫停/恢復錄製,按 Ctrl-d 或退出會話將停止錄製,可以不指定輸出文件名。

錄製時的常用參數:

  • -c 命令 僅錄製特定命令的執行過程和輸出
  • -i 1.2 錄製 1.2 秒
  • -t "多麼好的標題啊" 為終端錄製文件添加標題

除錄製外的其他功能:

  • asciinema play 文件.cast 播放 asciinema 錄製文件
  • asciinema upload 文件.cast 將文件上傳至 asciinema.org 以便共享
  • asciinema auth 管理 asciinema.org 帳戶的錄製內容

問題解決

截圖使用舊的屏幕狀態

參見 KDE#Spectacle 使用舊的屏幕狀態截圖

NVIDIA 錄製背景被裁剪

如果正在使用 nvidia 專有驅動程序,並且屏幕錄製時背景出現裁剪問題,請啟用 ForceCompositionPipeline 設置。詳情請參見 NVIDIA/故障排除#避免屏幕撕裂