截图(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

相关内容