Question: 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.

Answer: 
I found a great answer to this question [here](https://stackoverflow.com/a/10609516/252223), it is worth repeating. 

> 
> This can be achieved with ImageMagick. Install by running the command
> 
> 
> 
> ```
> sudo apt-get install imagemagick
> 
> ```
> 
> To grab all desktop just type
> 
> 
> 
> ```
> import -window root screen.png
> 
> ```
> 
> Or you can do it with a delay of 5 seconds
> 
> 
> 
> ```
> sleep 5; import -window root screen.png
> 
> ```
> 
>
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

```