8

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.

4 Answers 4

8

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.

1
  • 1
    Scrot is quicker and smaller than ImageMagick - 1MB compared to 43MB. Commented Jun 16, 2012 at 23:26
6

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 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 
6
  • I wonder whether we could bind this to a key combo; anyone? Commented Jun 16, 2012 at 19:22
  • @AlexChamberlain: This is dependant on the WM that is being used. Commented Jun 16, 2012 at 21:03
  • @AlexChamberlain there is an answer as to how to do that here Commented Jun 17, 2012 at 13:54
  • 1
    -1 I despise ImageMagick and all of its derivatives/relatives. It's a kick in the pants to install, and it's even worse to fix if something breaks. Commented Jun 18, 2012 at 17:21
  • @Jivings I guess if you're using your window manager's keybindings; I would think most people use xbindkeys though Commented Jul 9, 2012 at 18:37
0

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'.

0

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 

You must log in to answer this question.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.