Difference between revisions of "Taking a screenshot"

From ArchWiki
Jump to: navigation, search
(Output with ansi codes)
m (scrot: typo/grammar)
 
(76 intermediate revisions by 41 users not shown)
Line 1: Line 1:
[[Category:Graphics and desktop publishing]]
+
[[Category:Image manipulation]]
[[cs:Taking a Screenshot]]
+
[[cs:Taking a screenshot]]
[[es:Taking a Screenshot]]
+
[[es:Taking a screenshot]]
[[ru:Taking a Screenshot]]
+
[[fr:Capture d'écran]]
[[zh-CN:Taking a Screenshot]]
+
[[ja:スクリーンショットの取得]]
This article explain different methods to take [[Wikipedia:Screenshot|screenshots]] on your system.
+
[[ru:Taking a screenshot]]
== General methods ==
+
[[zh-cn:Taking a screenshot]]
=== import ===
+
{{Related articles start}}
An easy way to take a screenshot of your current system is using the {{Ic|import}} command:
+
{{Related|Extra_keyboard_keys}}
{{bc|$ import -window root screenshot.jpg}}
+
{{Related articles end}}
 +
This article explains different methods to take [[Wikipedia:Screenshot|screenshots]] on your system.
  
{{Ic|import}} is part of the {{Pkg|imagemagick}} package.
+
== Dedicated software ==
  
Running {{Ic|import}} without the {{Ic|-window}} option allows selecting a window or an arbitrary region interactively.
+
* {{App|Deepin Screenshot|A quite easy-to-use screenshot tool. Features: global hotkey to trigger screenshot tool, take screenshot of a selected area, easy to add text and line drawings onto the screenshot. Python/Qt5 based.|http://www.linuxdeepin.com/|{{Pkg|deepin-screenshot}}}}
 +
* {{App|Escrotum|Screen capture using pygtk, inspired by scrot.|https://github.com/Roger/escrotum|{{AUR|escrotum-git}}}}
 +
* {{App|gnome-screenshot|Despite its name its dependencies are only dconf, gtk3, and libcanberra.|http://gnome.org|{{Pkg|gnome-screenshot}}}}
 +
* {{App|imgur-screenshot|Take screenshot selection, upload to [http://imgur.com imgur]. + more cool things|https://github.com/jomo/imgur-screenshot|{{AUR|imgur-screenshot-git}}}}
 +
* {{App|Lightscreen| Lightscreen is a simple tool to automate the tedious process of saving and cataloging screenshots, it operates as a hidden background process that is invoked with one (or multiple) hotkeys and then saves a screenshot file to disk according to the user's preferences.|http://lightscreen.com.ar|{{AUR|lightscreen}}}}
 +
* {{App|maim|A simple command line utility that takes screenshots using imlib2. It's meant to replace scrot and performs better than scrot in many ways.|https://github.com/naelstrof/maim|{{Pkg|maim}}}}
 +
* {{App|maimclip|Simple bash wrapper for maim screenshot taking tool with OSD notification support|https://github.com/orschiro/scriptlets/tree/master/Maimclip|{{AUR|maimclip-git}}{{Broken package link|{{aur-mirror|maimclip-git}}}}}}
 +
* {{App|qscreenshot|Simple creation and editing of screenshots (Qt).|https://code.google.com/p/qscreenshot/|{{AUR|qscreenshot-git}}{{Broken package link|{{aur-mirror|qscreenshot-git}}}}}}
 +
* {{App|screencloud| allows you to take a screenshot of the entire screen or to select an area and then uploading the screenshot to [http://imgur.com imgur]+auth. has plugins and system tray. |http://screencloud.net/|{{AUR|screencloud}}}}
 +
* {{App|screengrab|Cross-platform application designed to quickly take screenshots (Qt).|http://screengrab.doomer.org/|{{AUR|screengrab}}}}
 +
* {{App|[[Wikipedia:Scrot|Scrot]]|Simple command-line screenshot utility for X.|http://freecode.com/projects/scrot|{{Pkg|scrot}}}}
 +
* {{App|Shutter|Rich screenshot and editing program. Supports [https://hyp.is/AVQUNTRUH9ZO4OKSlue9/askubuntu.com/questions/252281/how-do-i-take-screenshots-with-a-delay/260178 delay]. |http://shutter-project.org/|{{pkg|shutter}}}}
 +
* {{App|Spectacle|[[KDE]] application for taking screenshots. It is capable of capturing images of the whole desktop, a single window, a section of a window, a selected rectangular region or a freehand region. Part of {{Grp|kdegraphics}}.|https://github.com/KDE/spectacle/|{{Pkg|spectacle}}}}
 +
* {{App|Xfce4 Screenshooter|This application allows you to capture the entire screen, the active window or a selected region. You can set the delay that elapses before the screenshot is taken and the action that will be done with the screenshot: save it to a PNG file, copy it to the clipboard, open it using another application, or host it on ZimageZ, a free online image hosting service. Part of {{Grp|xfce4-goodies}}.|http://goodies.xfce.org/projects/applications/xfce4-screenshooter|{{Pkg|xfce4-screenshooter}}}}
 +
* {{App|xwd|X Window System image dumping utility|http://xorg.freedesktop.org/|{{Pkg|xorg-xwd}}}}
 +
* {{App|zscreen|Lightweight GUI which allows you to take a screenshot of the entire screen or to select an area and then uploading the screenshot automatically to [http://imgur.com imgur]. For taking the screenshot it uses scrot and zenity for the GUI.|https://github.com/ChrisZeta/Scrot-and-imgur-zenity-GUI|{{AUR|zscreen}}{{Broken package link|{{aur-mirror|zscreen}}}}}}
 +
 
 +
== Packages including a screenshot utility ==
 +
 
 +
* {{App|[[Wikipedia:GIMP|GIMP]]|Image editing suite in the vein of proprietary editors such as [[Wikipedia:Adobe Photoshop|Adobe Photoshop]]. GIMP ([[GNU]] Image Manipulation Program) has been started in the mid 1990s and has acquired a large number of [[CMYK support in The GIMP|plugins]] and additional tools.|http://www.gimp.org/|{{Pkg|gimp}}}}
 +
* {{App|[[Wikipedia:GraphicsMagick|GraphicsMagick]]|Fork of ImageMagick designed to have API and command-line stability. It also supports multi-CPU for enhanced performance and thus is used by some large commercial sites (Flickr, etsy) for its performance.|http://www.graphicsmagick.org/|{{Pkg|graphicsmagick}}}}
 +
* {{App|[[Wikipedia:ImageMagick|ImageMagick]]|Command-line image manipulation program. It is known for its accurate format conversions with support for over 100 formats. Its API enables it to be scripted and it is usually used as a backend processor.|http://www.imagemagick.org/script/index.php|{{Pkg|imagemagick}}}}
 +
* {{App|Imlib2|Library that does image file loading and saving as well as rendering, manipulation, arbitrary polygon support.|http://sourceforge.net/projects/enlightenment/|{{Pkg|imlib2}}}}
 +
* {{App|MATE Utils|Common MATE utilities for viewing disk usage, logs and fonts, taking screenshots, managing dictionaries and searching files.|http://mate-desktop.org|{{Pkg|mate-utils}}}}
 +
 
 +
== Details: general methods ==
 +
 
 +
=== ImageMagick/GraphicsMagick ===
 +
 
 +
An easy way to take a screenshot of your current system is using the {{ic|import}} command:
 +
$ import -window root screenshot.jpg
 +
 
 +
{{ic|import}} is part of the {{Pkg|imagemagick}} package.
 +
 
 +
Running {{ic|import}} without the {{ic|-window}} option allows selecting a window or an arbitrary region interactively.
 +
 
 +
{{Note|If you prefer '''graphicsmagick''' alternative, just prepend "gm", e.g. {{ic|$ gm import -window root screenshot.jpg}}.}}
  
 
==== Screenshot of multiple X screens ====
 
==== Screenshot of multiple X screens ====
 +
 
If you run twinview or dualhead, simply take the screenshot twice and use {{Ic|imagemagick}} to paste them together:
 
If you run twinview or dualhead, simply take the screenshot twice and use {{Ic|imagemagick}} to paste them together:
 
{{bc|
 
{{bc|
Line 24: Line 62:
  
 
==== Screenshot of individual Xinerama heads ====
 
==== Screenshot of individual Xinerama heads ====
 +
 
Xinerama-based multi-head setups have only one virtual screen. If the physical screens are different in height, you will find dead space in the screenshot. In this case, you may want to take screenshot of each physical screen individually. As long as Xinerama information is available from the X server, the following will work:
 
Xinerama-based multi-head setups have only one virtual screen. If the physical screens are different in height, you will find dead space in the screenshot. In this case, you may want to take screenshot of each physical screen individually. As long as Xinerama information is available from the X server, the following will work:
 
{{bc|<nowiki>
 
{{bc|<nowiki>
#!/bin/bash
+
#!/bin/sh
 
xdpyinfo -ext XINERAMA | sed '/^  head #/!d;s///' |
 
xdpyinfo -ext XINERAMA | sed '/^  head #/!d;s///' |
 
while IFS=' :x@,' read i w h x y; do
 
while IFS=' :x@,' read i w h x y; do
    import -window root -crop ${w}x$h+$x+$y head_$i.png
+
        import -window root -crop ${w}x$h+$x+$y head_$i.png
 
done
 
done
 
</nowiki>}}
 
</nowiki>}}
  
 
==== Screenshot of the active/focused window ====
 
==== Screenshot of the active/focused window ====
 +
 
The following script takes a screenshot of the currently focused window. It works with EWMH/NetWM compatible X Window Managers. To avoid overwriting previous screenshots, the current date is used as the filename.
 
The following script takes a screenshot of the currently focused window. It works with EWMH/NetWM compatible X Window Managers. To avoid overwriting previous screenshots, the current date is used as the filename.
 
{{bc|<nowiki>
 
{{bc|<nowiki>
#!/bin/bash
+
#!/bin/sh
 
activeWinLine=$(xprop -root | grep "_NET_ACTIVE_WINDOW(WINDOW)")
 
activeWinLine=$(xprop -root | grep "_NET_ACTIVE_WINDOW(WINDOW)")
 
activeWinId=${activeWinLine:40}
 
activeWinId=${activeWinLine:40}
Line 43: Line 83:
  
 
Alternatively, the following should work regardless of EWMH support:
 
Alternatively, the following should work regardless of EWMH support:
{{bc|$ import -window "$(xdotool getwindowfocus -f)" /tmp/$(date +%F_%H%M%S_%N).png}}
+
$ import -window "$(xdotool getwindowfocus -f)" /tmp/$(date +%F_%H%M%S_%N).png
 +
 
 +
{{Note|If screenshots of some programs (dwb and zathura) appear blank, try appending {{ic|-frame}} or removing {{ic|-f}} from the {{ic|xdotool}} command.}}
  
 
=== GIMP ===
 
=== GIMP ===
You also can take screenshots with GIMP ('''File''' -> '''Create''' -> '''Screenshot'''...).
+
 
 +
You also can take screenshots with GIMP (''File > Create > Screenshot''...).
  
 
=== xwd ===
 
=== xwd ===
xwd is part of the {{Pkg|xorg-xwd}} package.
 
  
 
Take a screenshot of the root window:
 
Take a screenshot of the root window:
{{bc|$ xwd -root -out screenshot.xwd}}
+
$ xwd -root -out screenshot.xwd
  
See the {{ic|man xwd}} for more information.
+
{{Note|The methods for taking shots of active windows with {{ic|import}} can also be used with {{ic|xwd}}.}}
  
 
=== scrot ===
 
=== scrot ===
  
{{Note|According [http://comments.gmane.org/gmane.comp.misc.suckless/6901 This Thread], {{Pkg|scrot}} does not work with {{Pkg|dwm}} nor {{Pkg|xbindkeys}}.}}
+
{{Pkg|scrot}} enables taking screenshots from the CLI and offers features such as a user-definable time delay. Unless instructed otherwise, it saves the file in the current working directory.
 
+
$ scrot -t 20 -d 5
 
+
{{Pkg|scrot}}, which is available in the [[Official Repositories|official repositories]], enables taking screenshots from the CLI and offers features such as a user-definable time delay. Unless instructed otherwise, it saves the file in the current working directory.
+
{{bc|$ scrot -t 20 -d 5}}
+
  
 
The above command saves a dated {{ic|.png}} file, along with a thumbnail (20% of original), for Web posting. It provides a 5 second delay before capturing in this instance.
 
The above command saves a dated {{ic|.png}} file, along with a thumbnail (20% of original), for Web posting. It provides a 5 second delay before capturing in this instance.
  
 
You can also use standard date and time formatting when saving to a file.  e.g.,
 
You can also use standard date and time formatting when saving to a file.  e.g.,
{{bc|$ scrot ~/screenshots/%Y-%m-%d-%T-screenshot.png}}
+
$ scrot ~/screenshots/%Y-%m-%d-%T-screenshot.png
  
 
saves the screenshot in a filename with the current year, month, date, hours, minutes, and seconds to a folder in your home directory called "screenshots"  
 
saves the screenshot in a filename with the current year, month, date, hours, minutes, and seconds to a folder in your home directory called "screenshots"  
  
See {{Ic|man scrot}} for more information. You can simply automate the file to uploaded like so {{ic|https://github.com/kaihendry/Kai-s--HOME/tree/master/bin}}
+
See {{ic|man scrot}} for more information. You can simply automate the file to uploaded like so [https://github.com/kaihendry/Kai-s--HOME/tree/master/bin].
 +
 
 +
{{Note|According to [http://comments.gmane.org/gmane.comp.misc.suckless/6901 this thread], {{ic|scrot -s}} does not work when run using a shortcut in {{Pkg|dwm}} (defined in {{ic|config.def.c}}/{{ic|config.c}}).}}
 +
 
 +
=== escrotum ===
 +
 
 +
{{AUR|escrotum-git}} screen capture using pygtk, inspired by scrot
 +
 
 +
Created because scrot has glitches when selection mode is used with refreshing windows.
 +
 
 +
Because the command line interface its almost the same as scrot, can be used as a replacement of it.
  
 
=== imlib2 ===
 
=== imlib2 ===
  
{{Pkg|imlib2}} provides a binary {{ic|imlib2_grab}} to take screenshots. To take a screenshot of the full screen, type:
+
{{Pkg|imlib2}} provides a binary {{ic|imlib2_grab}} to take screenshots. To take a screenshot of the full screen, type:
{{bc|$ imlib2_grab screenshot.png}}
+
$ imlib2_grab screenshot.png
  
 
Note that {{Pkg|scrot}} actually uses {{ic|imlib2}}.
 
Note that {{Pkg|scrot}} actually uses {{ic|imlib2}}.
== Desktop environment specific ==
 
=== KDE ===
 
If you use [[KDE]], you might want to use {{ic|KSnapshot}}, which can also be activated using {{keypress|Prnt Scr}}.
 
  
KSnapshot is provided by the {{Pkg|kdegraphics-ksnapshot}} package in [extra].
+
=== maim ===
  
=== Xfce ===
+
{{Pkg|maim}} is aimed to be an improved scrot.
 +
 
 +
Takes screenshots of your desktop using imlib2 and [https://github.com/naelstrof/slop slop] for regions. It's meant to overcome shortcomings of scrot and performs better in [https://github.com/naelstrof/maim#why-use-maim-over-import-or-scrot several ways].
 +
 
 +
=== FFmpeg ===
 +
 
 +
[[FFmpeg]] provides an x11grab device that allows the screen to be captured in X11.
 +
 
 +
Take a screenshot on a ''width'' x ''height'' display:
 +
 
 +
$ ffmpeg -f x11grab -video_size ''width''x''height'' -i $DISPLAY -vframes 1 screen.png
 +
 
 +
Here, the PNG codec is used as it's lossless and suitable for screenshots, but any image codec can be used.
 +
 
 +
The same device allows for screencasting (on a display with a refresh rate of ''rate'' HZ):
 +
 
 +
$ ffmpeg -f x11grab -video_size ''width''x''height'' -framerate ''rate'' -i $DISPLAY -c:v libx264 -preset ultrafast cast.mkv
 +
 
 +
Here, the x264 codec with the fastest possible encoding speed is used. Other codecs can be used; if writing each frame is too slow (either due to inadequate disk performance or slow encoding), then frames will be dropped and video output will be choppy.
 +
 
 +
=== Weston ===
 +
 
 +
In the [[Wayland#Weston|Weston]] Wayland compositor, screenshots can be taking by pressing {{ic|Super+s}}, which are stored in Weston's current working directory. Screencasts are also supported; recording is started and stopped by pressing {{ic|Super+r}}, which will create a file called {{ic|capture.wcap}} in Weston's current working directory. The capture can be decoded to YUV format by running {{ic|wcap-decode --yuv4mpeg2 capture.wcap}}; the output of this command can be written to a file or piped into FFmpeg for further processing.
 +
 
 +
== Details: desktop environment specific ==
 +
 
 +
=== Spectacle ===
 +
 
 +
If you use [[KDE]], you might want to use {{ic|Spectacle}}.
 +
 
 +
Spectacle is provided by the {{Pkg|spectacle}}.
 +
 
 +
=== Xfce Screenshooter ===
  
 
If you use [[Xfce]] you can install {{Pkg|xfce4-screenshooter}} and then add a keyboard binding:
 
If you use [[Xfce]] you can install {{Pkg|xfce4-screenshooter}} and then add a keyboard binding:
  
'''Xfce Menu'''  --> '''Settings'''  --> '''Keyboard'''  >>>  '''Application Shortcuts'''.
+
''Xfce Menu > Settings > Keyboard > Application Shortcuts''
  
 
If you want to skip the Screenshot prompt, type {{ic|$ xfce4-screenshooter -h}} in terminal for the options.
 
If you want to skip the Screenshot prompt, type {{ic|$ xfce4-screenshooter -h}} in terminal for the options.
  
 
=== GNOME ===
 
=== GNOME ===
[[GNOME]] users can press {{keypress|Prnt Scr}} or Apps->Accessories->Take Screenshot.
 
  
{{Note|If {{keypress|Prnt Scr}} complains about not finding {{ic|gnome-screenshot}} or there is no "Take Screenshot" entry in your menu, you will need to install the {{Pkg|gnome-utils}} package from [extra].}}
+
[[GNOME]] users can press {{ic|Prnt Scr}} or ''Apps > Accessories > Take Screenshot''. You may need to install {{Pkg|gnome-screenshot}}.
 +
 
 +
=== Cinnamon ===
 +
The default installation of [[Cinnamon]] does not provide a screenshot utility. Installing {{Pkg|gnome-screenshot}} will enable screenshots through the ''Menu > Accessories > Screenshot'' or by pressing {{ic|Prnt Scr}}.
 +
 
 +
=== Other desktop environments or window managers ===
  
=== Other Desktop Environments or Window Managers ===
 
 
For other desktop environments such as [[LXDE]] or window managers such as [[Openbox]] and [[Compiz]], one can add the above commands to the hotkey to take the screenshot. For example,
 
For other desktop environments such as [[LXDE]] or window managers such as [[Openbox]] and [[Compiz]], one can add the above commands to the hotkey to take the screenshot. For example,
{{bc|$ import -window root ~/Pictures/`date '+%Y%m%d-%H%M%S'`.png}}
+
$ import -window root ~/Pictures/$(date '+%Y%m%d-%H%M%S').png
Adding the above command to the {{keypress|Prnt Scr}} key to Compiz allows to take the screenshot to the Pictures folder according to date and time.
+
Adding the above command to the {{ic|Prnt Scr}} key to Compiz allows to take the screenshot to the Pictures folder according to date and time.
Notice that the {{ic|rc.xml}} file in Openbox does not understand commas; so, in order to bind that command to the {{keypress|Prnt Scr}} key in Openbox, you need to add the following to the keyboard section of your {{ic|rc.xml}} file:
+
Notice that the {{ic|rc.xml}} file in Openbox does not understand commas; so, in order to bind that command to the {{ic|Prnt Scr}} key in Openbox, you need to add the following to the keyboard section of your {{ic|rc.xml}} file:
  
 
{{hc|rc.xml|<nowiki>
 
{{hc|rc.xml|<nowiki>
Line 108: Line 189:
 
     <keybind key="Print">
 
     <keybind key="Print">
 
       <action name="Execute">
 
       <action name="Execute">
         <command>sh -c "import -window root ~/Pictures/`date '+%Y%m%d-%H%M%S'`.png"</command>
+
         <command>sh -c "import -window root ~/Pictures/$(date '+%Y%m%d-%H%M%S').png"</command>
 
       </action>
 
       </action>
 
     </keybind>
 
     </keybind>
 
</nowiki>}}
 
</nowiki>}}
 +
 +
If the {{ic|Print}} above does not work, see [[Extra keyboard keys]] and use different ''keysym'' or ''keycode''.
 +
 
== Terminal ==
 
== Terminal ==
 +
 
=== Output with ansi codes ===
 
=== Output with ansi codes ===
 +
 
You can use the {{ic|script}} command, part of the {{Pkg|util-linux}} package.
 
You can use the {{ic|script}} command, part of the {{Pkg|util-linux}} package.
Just enter {{bc|$ script}} and from that moment, all the output is going to be saved to the {{ic|typescript}} file, including the ansi codes.
+
Just enter {{ic|$ script}} and from that moment, all the output is going to be saved to the {{ic|typescript}} file, including the ansi codes.
  
Once you are done, just type {{ic|exit}} and the {{ic|typescript}} would ready.
+
Once you are done, just type {{ic|exit}} and the {{ic|typescript}} would ready. The resulting file can be converted to html using the package {{AUR|ansi2html}}, from the [[AUR]].
 +
 
 +
To convert the {{ic|typescript}} file to {{ic|typescript.html}}, do the following:
 +
 
 +
$ ansi2html --bg=dark < typescript > typescript.html
 +
 
 +
Actually, '''some''' commands can be piped directly to ansi2html:
 +
 
 +
$ ls --color|ansi2html --bg=dark >output.html
 +
 
 +
That does not work on every single case, so in those cases, using {{ic|script}} is mandatory.
  
 
=== Virtual console ===
 
=== Virtual console ===
Install a [[framebuffer]] and use {{Pkg|fbgrab}}, {{Pkg|fbshot}}, or {{Pkg|fbdump}} to take a screenshot.
 
  
If you merely want to capture the text in the console and not an actual image, you can use {{Ic|setterm}}, which is part of the {{Pkg|util-linux}} package.  The following command will dump the textual contents of virtual console 1 to a file screen.dump in the current directory:
+
Install a [[framebuffer]] and use {{Pkg|fbgrab}} or {{Pkg|fbdump}} to take a screenshot.
{{bc|# setterm -dump 1 -file screen.dump}}
+
 
 +
If you merely want to capture the text in the console and not an actual image, you can use {{ic|setterm}}, which is part of the {{Pkg|util-linux}} package.  The following command will dump the textual contents of virtual console 1 to a file screen.dump in the current directory:
 +
# setterm -dump 1 -file screen.dump
  
 
Root permission is needed because the contents of {{ic|/dev/vcs1}} need to be read.
 
Root permission is needed because the contents of {{ic|/dev/vcs1}} need to be read.

Latest revision as of 08:43, 28 July 2016

Related articles

This article explains different methods to take screenshots on your system.

Dedicated software

  • Deepin Screenshot — A quite easy-to-use screenshot tool. Features: global hotkey to trigger screenshot tool, take screenshot of a selected area, easy to add text and line drawings onto the screenshot. Python/Qt5 based.
http://www.linuxdeepin.com/ || deepin-screenshot
  • Escrotum — Screen capture using pygtk, inspired by scrot.
https://github.com/Roger/escrotum || escrotum-gitAUR
  • gnome-screenshot — Despite its name its dependencies are only dconf, gtk3, and libcanberra.
http://gnome.org || gnome-screenshot
  • imgur-screenshot — Take screenshot selection, upload to imgur. + more cool things
https://github.com/jomo/imgur-screenshot || imgur-screenshot-gitAUR
  • Lightscreen — Lightscreen is a simple tool to automate the tedious process of saving and cataloging screenshots, it operates as a hidden background process that is invoked with one (or multiple) hotkeys and then saves a screenshot file to disk according to the user's preferences.
http://lightscreen.com.ar || lightscreenAUR
  • maim — A simple command line utility that takes screenshots using imlib2. It's meant to replace scrot and performs better than scrot in many ways.
https://github.com/naelstrof/maim || maim
  • maimclip — Simple bash wrapper for maim screenshot taking tool with OSD notification support
https://github.com/orschiro/scriptlets/tree/master/Maimclip || maimclip-gitAUR[broken link: archived in aur-mirror]
  • qscreenshot — Simple creation and editing of screenshots (Qt).
https://code.google.com/p/qscreenshot/ || qscreenshot-gitAUR[broken link: archived in aur-mirror]
  • screencloud — allows you to take a screenshot of the entire screen or to select an area and then uploading the screenshot to imgur+auth. has plugins and system tray.
http://screencloud.net/ || screencloudAUR
  • screengrab — Cross-platform application designed to quickly take screenshots (Qt).
http://screengrab.doomer.org/ || screengrabAUR
  • Scrot — Simple command-line screenshot utility for X.
http://freecode.com/projects/scrot || scrot
  • Shutter — Rich screenshot and editing program. Supports delay.
http://shutter-project.org/ || shutter
  • SpectacleKDE application for taking screenshots. It is capable of capturing images of the whole desktop, a single window, a section of a window, a selected rectangular region or a freehand region. Part of kdegraphics.
https://github.com/KDE/spectacle/ || spectacle
  • Xfce4 Screenshooter — This application allows you to capture the entire screen, the active window or a selected region. You can set the delay that elapses before the screenshot is taken and the action that will be done with the screenshot: save it to a PNG file, copy it to the clipboard, open it using another application, or host it on ZimageZ, a free online image hosting service. Part of xfce4-goodies.
http://goodies.xfce.org/projects/applications/xfce4-screenshooter || xfce4-screenshooter
  • xwd — X Window System image dumping utility
http://xorg.freedesktop.org/ || xorg-xwd
  • zscreen — Lightweight GUI which allows you to take a screenshot of the entire screen or to select an area and then uploading the screenshot automatically to imgur. For taking the screenshot it uses scrot and zenity for the GUI.
https://github.com/ChrisZeta/Scrot-and-imgur-zenity-GUI || zscreenAUR[broken link: archived in aur-mirror]

Packages including a screenshot utility

  • GIMP — Image editing suite in the vein of proprietary editors such as Adobe Photoshop. GIMP (GNU Image Manipulation Program) has been started in the mid 1990s and has acquired a large number of plugins and additional tools.
http://www.gimp.org/ || gimp
  • GraphicsMagick — Fork of ImageMagick designed to have API and command-line stability. It also supports multi-CPU for enhanced performance and thus is used by some large commercial sites (Flickr, etsy) for its performance.
http://www.graphicsmagick.org/ || graphicsmagick
  • ImageMagick — Command-line image manipulation program. It is known for its accurate format conversions with support for over 100 formats. Its API enables it to be scripted and it is usually used as a backend processor.
http://www.imagemagick.org/script/index.php || imagemagick
  • Imlib2 — Library that does image file loading and saving as well as rendering, manipulation, arbitrary polygon support.
http://sourceforge.net/projects/enlightenment/ || imlib2
  • MATE Utils — Common MATE utilities for viewing disk usage, logs and fonts, taking screenshots, managing dictionaries and searching files.
http://mate-desktop.org || mate-utils

Details: general methods

ImageMagick/GraphicsMagick

An easy way to take a screenshot of your current system is using the import command:

$ import -window root screenshot.jpg

import is part of the imagemagick package.

Running import without the -window option allows selecting a window or an arbitrary region interactively.

Note: If you prefer graphicsmagick alternative, just prepend "gm", e.g. $ gm import -window root screenshot.jpg.

Screenshot of multiple X screens

If you run twinview or dualhead, simply take the screenshot twice and use imagemagick to paste them together:

import -window root -display :0.0 -screen /tmp/0.png
import -window root -display :0.1 -screen /tmp/1.png
convert +append /tmp/0.png /tmp/1.png screenshot.png
rm /tmp/{0,1}.png

Screenshot of individual Xinerama heads

Xinerama-based multi-head setups have only one virtual screen. If the physical screens are different in height, you will find dead space in the screenshot. In this case, you may want to take screenshot of each physical screen individually. As long as Xinerama information is available from the X server, the following will work:

#!/bin/sh
xdpyinfo -ext XINERAMA | sed '/^  head #/!d;s///' |
while IFS=' :x@,' read i w h x y; do
        import -window root -crop ${w}x$h+$x+$y head_$i.png
done

Screenshot of the active/focused window

The following script takes a screenshot of the currently focused window. It works with EWMH/NetWM compatible X Window Managers. To avoid overwriting previous screenshots, the current date is used as the filename.

#!/bin/sh
activeWinLine=$(xprop -root | grep "_NET_ACTIVE_WINDOW(WINDOW)")
activeWinId=${activeWinLine:40}
import -window "$activeWinId" /tmp/$(date +%F_%H%M%S_%N).png

Alternatively, the following should work regardless of EWMH support:

$ import -window "$(xdotool getwindowfocus -f)" /tmp/$(date +%F_%H%M%S_%N).png
Note: If screenshots of some programs (dwb and zathura) appear blank, try appending -frame or removing -f from the xdotool command.

GIMP

You also can take screenshots with GIMP (File > Create > Screenshot...).

xwd

Take a screenshot of the root window:

$ xwd -root -out screenshot.xwd
Note: The methods for taking shots of active windows with import can also be used with xwd.

scrot

scrot enables taking screenshots from the CLI and offers features such as a user-definable time delay. Unless instructed otherwise, it saves the file in the current working directory.

$ scrot -t 20 -d 5

The above command saves a dated .png file, along with a thumbnail (20% of original), for Web posting. It provides a 5 second delay before capturing in this instance.

You can also use standard date and time formatting when saving to a file. e.g.,

$ scrot ~/screenshots/%Y-%m-%d-%T-screenshot.png

saves the screenshot in a filename with the current year, month, date, hours, minutes, and seconds to a folder in your home directory called "screenshots"

See man scrot for more information. You can simply automate the file to uploaded like so [1].

Note: According to this thread, scrot -s does not work when run using a shortcut in dwm (defined in config.def.c/config.c).

escrotum

escrotum-gitAUR screen capture using pygtk, inspired by scrot

Created because scrot has glitches when selection mode is used with refreshing windows.

Because the command line interface its almost the same as scrot, can be used as a replacement of it.

imlib2

imlib2 provides a binary imlib2_grab to take screenshots. To take a screenshot of the full screen, type:

$ imlib2_grab screenshot.png

Note that scrot actually uses imlib2.

maim

maim is aimed to be an improved scrot.

Takes screenshots of your desktop using imlib2 and slop for regions. It's meant to overcome shortcomings of scrot and performs better in several ways.

FFmpeg

FFmpeg provides an x11grab device that allows the screen to be captured in X11.

Take a screenshot on a width x height display:

$ ffmpeg -f x11grab -video_size widthxheight -i $DISPLAY -vframes 1 screen.png

Here, the PNG codec is used as it's lossless and suitable for screenshots, but any image codec can be used.

The same device allows for screencasting (on a display with a refresh rate of rate HZ):

$ ffmpeg -f x11grab -video_size widthxheight -framerate rate -i $DISPLAY -c:v libx264 -preset ultrafast cast.mkv

Here, the x264 codec with the fastest possible encoding speed is used. Other codecs can be used; if writing each frame is too slow (either due to inadequate disk performance or slow encoding), then frames will be dropped and video output will be choppy.

Weston

In the Weston Wayland compositor, screenshots can be taking by pressing Super+s, which are stored in Weston's current working directory. Screencasts are also supported; recording is started and stopped by pressing Super+r, which will create a file called capture.wcap in Weston's current working directory. The capture can be decoded to YUV format by running wcap-decode --yuv4mpeg2 capture.wcap; the output of this command can be written to a file or piped into FFmpeg for further processing.

Details: desktop environment specific

Spectacle

If you use KDE, you might want to use Spectacle.

Spectacle is provided by the spectacle.

Xfce Screenshooter

If you use Xfce you can install xfce4-screenshooter and then add a keyboard binding:

Xfce Menu > Settings > Keyboard > Application Shortcuts

If you want to skip the Screenshot prompt, type $ xfce4-screenshooter -h in terminal for the options.

GNOME

GNOME users can press Prnt Scr or Apps > Accessories > Take Screenshot. You may need to install gnome-screenshot.

Cinnamon

The default installation of Cinnamon does not provide a screenshot utility. Installing gnome-screenshot will enable screenshots through the Menu > Accessories > Screenshot or by pressing Prnt Scr.

Other desktop environments or window managers

For other desktop environments such as LXDE or window managers such as Openbox and Compiz, one can add the above commands to the hotkey to take the screenshot. For example,

$ import -window root ~/Pictures/$(date '+%Y%m%d-%H%M%S').png

Adding the above command to the Prnt Scr key to Compiz allows to take the screenshot to the Pictures folder according to date and time. Notice that the rc.xml file in Openbox does not understand commas; so, in order to bind that command to the Prnt Scr key in Openbox, you need to add the following to the keyboard section of your rc.xml file:

rc.xml
<!-- Screenshot -->
    <keybind key="Print">
      <action name="Execute">
        <command>sh -c "import -window root ~/Pictures/$(date '+%Y%m%d-%H%M%S').png"</command>
      </action>
    </keybind>

If the Print above does not work, see Extra keyboard keys and use different keysym or keycode.

Terminal

Output with ansi codes

You can use the script command, part of the util-linux package. Just enter $ script and from that moment, all the output is going to be saved to the typescript file, including the ansi codes.

Once you are done, just type exit and the typescript would ready. The resulting file can be converted to html using the package ansi2htmlAUR, from the AUR.

To convert the typescript file to typescript.html, do the following:

$ ansi2html --bg=dark < typescript > typescript.html

Actually, some commands can be piped directly to ansi2html:

$ ls --color|ansi2html --bg=dark >output.html

That does not work on every single case, so in those cases, using script is mandatory.

Virtual console

Install a framebuffer and use fbgrab or fbdump to take a screenshot.

If you merely want to capture the text in the console and not an actual image, you can use setterm, which is part of the util-linux package. The following command will dump the textual contents of virtual console 1 to a file screen.dump in the current directory:

# setterm -dump 1 -file screen.dump

Root permission is needed because the contents of /dev/vcs1 need to be read.