How can I take a screenshot in X.org?
I am unsure if the Print Screen button will "just work" and I don't know how I would go about testing it.
The most commonly used Linux application for taking screen-shots is called scrot
You can install it with for Debian:
sudo apt-get install scrot
Or for Arch:
sudo pacman -S scrot
A screenshot is taken by typing:
scrot output-file.png
If you want to bind scrot to the print screen key then that will need to be controlled by your window manager.
I found a great answer to this question here, it is worth repeating.
This can be achieved with ImageMagick. Install by running the command
sudo apt-get install imagemagickTo grab all desktop just type
import -window root screen.pngOr you can do it with a delay of 5 seconds
sleep 5; import -window root screen.png
xbindkeys though I use 'xwd'. For example, one I just did: xwd | xwdtopnm > dw.ppm The only downside I know of with xwd is that you need some other utility to convert its output to something understood by anything other than 'xwud'.
This is the perl6 script I use to take root area window or delay ScreenShots using 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 } } } These are the key bindings in i3 to run the 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