157

What command(s) can I use in the terminal that's equivalent to the PrtSc (Print Screen) button?

I am running Ubuntu GNOME.

6
  • Are you using gnome or KDE or something else? It kind of depends of what desktop environment you are using.
    – Braiam
    Feb 14, 2014 at 4:09
  • @Braiam take a look at his answer. Feb 14, 2014 at 9:16
  • @AvinashRaj are you aware that Unity use gnome-screenshot too?
    – Braiam
    Feb 14, 2014 at 14:17
  • 1
    i think gnome-screenshot is the default tool on unity for taking screenshots. Feb 14, 2014 at 14:19
  • 1
    Possible duplicate of What screenshot tools are available? Oct 29, 2015 at 8:05

9 Answers 9

128

You can use the import tool available in the ImageMagick package (you need to install this if it's not already available on your system).

Then run the following command in a shell:

import screenshot.png

and select the window you want to capture or select a region by pressing the left mouse button and dragging.

import is a actually a very powerful command which can be used in many ways to capture the screen. For example, to capture the entire screen after some delay and resize it, use the following command:

import -window root -resize 400x300 -delay 200 screenshot.png

To see all the available options with the import command, go to ImageMagick’s website.


Another way to take a screenshot from the terminal is with scrot.

To install scrot run:

sudo apt-get install scrot

To take a screenshot in Linux from the terminal with scrot run:

scrot MyScreenshot.png

Some more options with scrot are here:

scrot -b -d 5 '%Y:%m:%d:%H:%M:%S.png' -e 'mv $f ~/Desktop/'

In this example:

  • -b specifies that the screenshot should include the window borders.
  • -d specifies a delay of five seconds.
  • '%Y:%m:%d:%H:%M:%S.png' will save the screenshot with a name based on the current date and time with the format specified, .png in this case.
  • -e 'mv $f ~/Desktop/' tells scrot to save the screenshot on the Desktop.

Based on @jack's comment: If you want to take a screenshot of a remote machine via an SSH session then you can do that by setting the DISPLAY environment variable to the display, like so:

DISPLAY=:0 scrot MyScreenshot.png
3
  • Both answers seem to work only with the current $DISPLAY, therefore not working over SSH May 8, 2015 at 14:18
  • This certainly works for many users, it just didn't work for me. ImageMagick import renders KDE Desktop Effects transparent window borders / glow effect in solid black. And scrot doesn't want to participate in pipes at all, which I use to avoid unnecessary intermediate files when cropping the desired screen from a Xinerama setup. I use xwd instead and use ImageMagick convert to convert the xwd-format to PNG and do the cropping. (See also my answer below) Jul 11, 2015 at 18:40
  • 1
    @That Brazilian Guy Every graphic command uses DISPLAY env variable to know to which X server connect. If running on ssh just export DISPLAY=:0 (or proper value) before issuing the command
    – Jack
    Dec 29, 2020 at 15:27
77

Open a terminal by pressing Ctrl+Alt+T and run:

gnome-screenshot

Use gnome-screenshot -d xx to delay the action. For example, to delay the screenshot action by 10 s:

gnome-screenshot -d 10

or

sleep 10;gnome-screenshot

Screenshots are placed under ~/Pictures

2
  • 7
    gnome-screenshot --help will give you plenty of options.
    – somethis
    Jul 11, 2013 at 5:00
  • 7
    gnome-screenshot --interactive
    – Luis Souza
    Jul 19, 2018 at 3:28
14

You can use shutter program to take screenshot from terminal.Run the below commands in terminal to install shutter,

sudo add-apt-repository ppa:shutter/ppa
sudo apt-get update
sudo apt-get install shutter

To take a screenshot of active window,

shutter -a -o shot.png -e

To take a screenshot of whole display,

shutter -f -o shot.png -e

The screenshots taken are stored in the home directory.

For more options run shutter --help command,

Usage:
    shutter [options]

Options:
    Example 1
            shutter -a -p=myprofile --min_at_startup

    Example 2
            shutter -s=100,100,300,300 -e

    Example 3
            shutter --window=.*firefox.*

    Example 4
            shutter --web=http://shutter-project.org/ -e

  Capture Mode Options:
    -s, --select=[X,Y,WIDTH,HEIGHT]
            Capture an area of the screen. Providing X,Y,WIDTH,HEIGHT is
            optional.

    -f, --full
            Capture the entire screen.

    -w, --window=[NAME_PATTERN]
            Select a window to capture. Providing a NAME_PATTERN (Perl-style
            regex) ist optional.

    -a, --active
            Capture the current active window.

    --section
            Capture a section. You will be able to select any child window
            by moving the mouse over it.

    -m, --menu
            Capture a menu.

    -t, --tooltip
            Capture a tooltip.

    --web=[URL]
            Capture a webpage. Providing an URL ist optional.

    -r, --redo
            Redo last screenshot.

  Settings Options:
    -p, --profile=NAME
            Load a specific profile on startup.

    -o, --output=FILENAME
            Specify a filename to save the screenshot to (overwrites any
            profile-related setting).

            Supported image formats: You can save to any popular image
            format (e.g. jpeg, png, gif, bmp). Additionally it is possible
            to save to pdf, ps or svg.

            Please note: There are several wildcards available, like

             %Y = year
             %m = month
             %d = day
             %T = time
             $w = width
             $h = height
             $name = multi-purpose (e.g. window title)
             $nb_name = like $name but without blanks in resulting strings
             $profile = name of current profile
             $R = random char (e.g. $RRRR = ag4r)
             %NN = counter

            The string is interpretted by strftime. See "man strftime" for
            more examples.

            As an example: shutter -f -e -o './%y-%m-%d_$w_$h.png' would
            create a file named '11-10-28_1280_800.png' in the current
            directory.

  Application Options:
    -h, --help
            Prints a brief help message and exits.

    -v, --version
            Prints version information.

    -d, --debug
            Prints a lot of debugging information to STDOUT.

    --clear_cache
            Clears cache, e.g. installed plugins, at startup.

    --min_at_startup
            Starts Shutter minimized to tray.

    --disable_systray
            Disables systray icon.

    -e, --exit_after_capture
            Exit after the first capture has been made. This is useful when
            using Shutter in scripts.
1
  • 2
    Shutter is a very advanced tool that has a editing shots like GIMP and easily adding auto increment shape that is very useful for tutorials.
    – guneysus
    Jan 27, 2015 at 9:27
10

If you want to take a screenshot from a login-terminal (the one you open with Ctrl+Alt+F1) you can use the program fbgrab.

You can install it by typing sudo apt-get install fbcat.

Then take a screenshot of your login-terminal, type in your login-terminal:

$ sudo fbgrab my_screenshot

my_screenshot is saved under the current directory.

4
  • 2
    What is the format of my_screenshot? How to view it? Aug 11, 2016 at 16:57
  • While there are many ways to make a screenshot in the GUI, this actually work in a plain console without X or any GUI. The format of the screenshot is PNG.
    – mivk
    Jan 9, 2018 at 11:29
  • Works on Ubuntu 18.04.5 server, which is the last release of the 32 bit version. This OS installs (optionally) without X, and fbcat doesn't need it. Great for writing tutorials where a tty terminal is only direct method of communication with the server and screenshots are required. +1 for this.
    – Scooby-2
    Feb 9, 2021 at 14:38
  • Thank you. I was looking for this answer specifically, as it doesn't require an X-server running, and lets me take screenshots when connecting to a box via a serial port (debugging and writing tutorials). Just worth noting that the tool works great (and on Ubuntu 20.04.2 LTS x86_64) in "real shells" (i.e. via SSH, terminal access, etc.), but the output is corrupted if run within certain xterms or Guake, for example.
    – Cloud
    Feb 15, 2021 at 21:43
9

I tried using ImageMagick import but it didn't work for me when using KDE Desktop Effects. ImageMagick import has output transparent window borders in black instead of properly combining foreground alpha and background.

I also tried using X11 xwd and NetPBM xwdtopnm but that also didn't work for me, NetPBM xwdtopnm couldn't properly deal with the multiscreen output of xwd because I have a Xinerama setup.

But combining X11 xwd with ImageMagick convert worked just fine for me:

xwd -silent -root | convert xwd:- screenshot.png

Or, if you have a Dual-FullHD Xinerama setup, like me, and want the first screen only:

xwd -silent -root | convert xwd:- -crop 1920x1080+0+0 test.png

For the second screen only:

xwd -silent -root | convert xwd:- -crop 1920x1080+1920+0 +repage test.png
1
  • Nice answer. But since you read from pipe you probably need to specify the input format for the convert command : xwd ... | convert xwd:- .... At least it was required on my Debian Strech install with IM 6.9.6-2 Nov 21, 2016 at 14:31
3

I'm using ubuntu 13.10 and I have a script that I just wrote which may be helpful. I see this questions been answered but my solution requires no additional installs.

#!/bin/bash
curDate=$(date)
imgExtension=".png"
imgName=$curDate$imgExtension
imgDirectory="/path/to/desires/save/directory/"
imgSavePath=$imgDirectory$imgName
gnome-screenshot --file="$imgSavePath"

This code will save the screenshot without popping up the dialogue window. It uses the current time for a file name to avoid any duplicate filename issues.

2

No installation needed. Customized to your needs.

  1. Place the following command in a file named screenshot.bash anywhere you want.

    gnome-screenshot -a -c -f /home/<username>/Desktop/Screenshot_$(date +"%0y%0m%0d_%0H%0M%0S").png
    
  2. Copy the location of this file.

  3. Go to "Keyboard Shortcuts" and create a new one by hitting + at the end of the list

    enter image description here

1

If you need just to peep into a remote computer via ssh, you can use this script.

#!/bin/bash
computer='[email protected]'
password='LiesAMoulderingInTheGrave'
path='/tmp/'
file='peepshow.png'

[ "$(whereis sshpass | cut -d: -f2)" == "" ] && sudo apt install sshpass
[ "$(whereis feh | cut -d: -f2)" == "" ] && sudo apt install feh

sshpass -p "$password" ssh $computer "export DISPLAY=:0; scrot $path$file;" 
sshpass -p "$password" scp -r "$computer:$path$file" $path
# gpicview "$path$file"
feh "$path$file"
echo "... and his soul is marching on in $path$file! Peek at it!"
0

On Linux you also have the delicious flameshot

Which not only behaves nicely on interactive work, but will also serve you as a command-line friend.

Imagine you want a precise portion of the screen:

  1. start a shell
  2. throw flameshot gui -g in order to have your region coordinate
  3. validate the screenshot CTRL+C probably
  4. then do all in one without interaction: flameshot gui --region 1771x1019+1940+120 -s -p pipo.png

explanations:

  • gui start gui mode
  • --region crop the given screen region you got from -g at step 2
  • -s dont wait for any user validation, save it automatically
  • -p path to the file or folder to save it. ⚠️ it doesn't overwrite the filename but you get an pipo_1.png with suffix (and so on). The generated filename is printed on stderr

have fun.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .