Einen Screenshot machen (innerhalb von X)

Einen Screenshot machen (innerhalb von X)

Wie kann ich in X.org einen Screenshot machen?

Ich bin nicht sicher, ob die Schaltfläche „Drucken“ „einfach funktioniert“, und ich weiß nicht, wie ich sie testen soll.

Antwort1

Die am häufigsten verwendete Linux-Anwendung zum Erstellen von Screenshots heißtscrot

Sie können es für Debian installieren mit:

sudo apt-get install scrot

Oder für Arch:

sudo pacman -S scrot

Ein Screenshot wird erstellt, indem Sie Folgendes eingeben:

scrot output-file.png

scrotWenn Sie eine Bindung an die Taste herstellen möchten print screen, muss dies von Ihrem Fenstermanager gesteuert werden.

Antwort2

Ich habe eine tolle Antwort auf diese Frage gefundenHier, es ist eine Wiederholung wert.

Dies kann mit ImageMagick erreicht werden. Installieren Sie es durch Ausführen des Befehls

sudo apt-get install imagemagick

Um den gesamten Desktop zu erfassen, geben Sie einfach ein

import -window root screen.png

Oder Sie können es mit einer Verzögerung von 5 Sekunden tun

sleep 5; import -window root screen.png

Antwort3

Ich verwende „xwd“. Zum Beispiel eines, das ich gerade gemacht habe: xwd | xwdtopnm > dw.ppm Der einzige Nachteil, den ich bei xwd kenne, ist, dass Sie ein anderes Dienstprogramm benötigen, um die Ausgabe in etwas umzuwandeln, das von etwas anderem als „xwud“ verstanden wird.

Antwort4

Dies ist das Perl6-Skript, das ich verwende, umStammbereichsfensteroderVerzögerungScreenshots mit Import:

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

Dies sind die Tastenkombinationen in i3 zum Ausführen des Skripts:

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

verwandte Informationen