Tomar una captura de pantalla (dentro de X)

Tomar una captura de pantalla (dentro de X)

¿Cómo puedo tomar una captura de pantalla en X.org?

No estoy seguro de si el botón Imprimir pantalla "simplemente funcionará" y no sé cómo haría para probarlo.

Respuesta1

La aplicación de Linux más utilizada para tomar capturas de pantalla se llamascrot

Puedes instalarlo con para Debian:

sudo apt-get install scrot

O para Arco:

sudo pacman -S scrot

Se toma una captura de pantalla escribiendo:

scrot output-file.png

Si desea vincularse scrota la print screenclave, deberá controlarlo su administrador de ventanas.

Respuesta2

Encontré una gran respuesta a esta pregunta.aquí, vale la pena repetirlo.

Esto se puede lograr con ImageMagick. Instalar ejecutando el comando

sudo apt-get install imagemagick

Para tomar todo el escritorio simplemente escriba

import -window root screen.png

O puedes hacerlo con un retraso de 5 segundos.

sleep 5; import -window root screen.png

Respuesta3

Yo uso 'xwd'. Por ejemplo, uno que acabo de hacer: xwd | xwdtopnm > dw.ppm el único inconveniente que conozco de xwd es que necesita alguna otra utilidad para convertir su salida en algo que no sea entendido por 'xwud'.

Respuesta4

Este es el script perl6 que uso para tomarventana del área raízodemoraCapturas de pantalla usando importación:

#!/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           }
  }
}

Estas son las combinaciones de teclas en i3 para ejecutar el script:

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

información relacionada