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
scrot
Wenn 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