截圖(X內)

截圖(X內)

如何在 X.org 中截取螢幕截圖?

我不確定“列印螢幕”按鈕是否“正常工作”,我不知道如何測試它。

答案1

最常用的用於截取螢幕截圖的 Linux 應用程式稱為scrot

對於 Debian,您可以使用以下命令安裝它:

sudo apt-get install scrot

或對於拱門:

sudo pacman -S scrot

透過鍵入以下內容來截取螢幕截圖:

scrot output-file.png

如果您想綁定scrot到該print screen鍵,則需要由視窗管理器控制。

答案2

我找到了這個問題的一個很好的答案這裡,值得重複。

這可以透過 ImageMagick 來實現。透過運行命令安裝

sudo apt-get install imagemagick

若要取得所有桌面,只需鍵入

import -window root screen.png

或者你可以延遲5秒來完成

sleep 5; import -window root screen.png

答案3

我使用“xwd”。例如,我剛剛做了一個: xwd | xwdtopnm > dw.ppm 我知道 xwd 的唯一缺點是您需要一些其他實用程式將其輸出轉換為除“xwud”之外的任何內容都可以理解的內容。

答案4

這是我用來取得的perl6腳本根區域窗口或者延遲使用匯入的螢幕截圖:

#!/usr/bin/env perl6
use v6;

sub message(Str $file) {
  run <xmessage -nearmouse -timeout 3>, "Screenshot saved in $file";
}

sub print_window(Str $file) {
  qx{xprop -root | grep "_NET_ACTIVE_WINDOW(WINDOW)"} ~~ /(0x\d*).*$/;
  run <import -window>, $0, $file;
  message($file);
}

sub MAIN( Str $option where $option ∈ <root area window delay> ) {
  my $today = DateTime.now( formatter => { 
        sprintf "%04d_%02d_%02d_%02d:%02d:%02d", 
                .year, .month, .day, .hour, .minute, .second 
       } );
  my $file  = "$*HOME/Dades/Imatges/ScreenShots/$today.png";

  given $option {
    when 'root'   { run <import -window root>, $file; message($file) }
    when 'area'   { run "import", $file             ; message($file) }
    when 'window' { print_window($file)                              }
    when 'delay'  { sleep 5; print_window($file)                     }
    default       { say 'Something went wrong'      ; exit           }
  }
}

這些是 i3 中用於運行腳本的鍵綁定:

bindsym $mod+Print exec Print_Screen root 
bindsym --release $mod+Shift+Print exec Print_Screen area
bindsym $mod+Mod1+Print exec Print_Screen delay
bindsym $mod+Control+Print exec Print_Screen window

相關內容