I capture a lot of screenshots—both for this blog, and for our Many Tricks' help files and web pages. Depending on the project, I may need a full screen, a portion of a screen, a window, an object, or some combination of the above. As such, I use a few different ways of capturing screenshots.
First up are the built-in macOS screenshot tools, which you'll find on the Keyboard System Preferences panel, in the Shortcuts tab:
These four commands let you capture full screens or windows, directly to files or to the clipboard. And, for many users, these may be all you need. If that's you, great! (You may want to assign some easier-to-type shortcuts, as these—especially the clipboard variants—require some advanced finger gymnastics.)
I use some of these built-in tools, along with a key third-party app, to handle all my image capture needs.
Of the Os-provided tools, I primarily use ⇧⌘⌃4,1Why don't I change this to something simpler to press? In case I ever need a screenshot of the screenshots area, as above, I want them to be stock., but not for region capture. Instead, I use it to capture a full window with shadows to the clipboard, like this:
The trick to capturing windows with this shortcut—and its ⇧⌘4 non-clipboard cousin—is to press the Space Bar before taking the snapshot. This turns the cursor into a camera icon; click on any window, and a shot of that full window winds up on the clipboard.
For me, after years of looking at alternatives, this is still the quickest way I've found to grab a screenshot of a full window with its shadow. I then switch to Acorn (my image editor of choice), hit ⌘V, and I've got my windowed screenshot.
If you prefer window screenshots without shadows, there are a number of alternatives (the built-in Grab app and Terminal, to name two). But the best solution I've found is to use the same shortcut as above, ⇧⌘⌃4 (or ⇧⌘4), then press the Space Bar to get in window capture mode. However, before clicking the mouse, hold down the Option key. This will suppress the shadow in the captured image.
The advantage of this method over Grab or Terminal is that the captured window remains in the foreground, so it appears in its 'foreground' mode—the header isn't dimmed as when in the background. Both Grab or Terminal become the foreground application when capturing a window, so the captured window will have the dimmed header.
More generally speaking, I don't like non-windowed screenshots for full-window shots. That's because the shadow itself provides the edge defintion for the window. This isn't a problem in all shots, but…
…shooting a white window for use against a white background reveals the problem. You'd need to manually add a border to the capture on the left to give it some definition. So yes, shadows add bulk, but for my needs, it takes more time to work around their absence than it does to just use them.
It used to be that if I needed an icon from the toolbar, I'd either try to find the source app and dig out its icon from the bundle, or take a screenshot of the region, and then edit out all but the icon. Both are time consuming solutions. And both are incredibly more complicated than the solution I'm now using.
As it turns out, icons in the menubar are really just tiny little windows. As such, you can capture any of them by pressing ⇧⌘⌃4 (or ⇧⌘4), pressing the Space Bar, then just mousing over the icon of interest and clicking the mouse. Bingo, menubar icon on clipboard (or in file).
I have no idea how long this has been possible (perhaps for as long as macOS/OS X has been around), but it's definitely the easiest way to grab icons from the menubar.
If you need a shot of the entire screen, Apple's built-in ⇧⌘3 and ⇧⌘⌃3 will do so, either to a file or the clipboard. But these images aren't easily modifiable—they're just a picture of everything on your screen. If you need to move a window around a bit, or want to focus on one thing over another with some simple edits, it's very hard to do. (You also don't get the cursor.)
I'll still use the Apple solutions if all I need is a simple full-screen screenshot. But more often than not, I want an image I can manipulate—maybe move the cursor around, reposition some windows, hide certain menu bar icons, etc.
In order to do that, you need a layered screenshot, one where every object on the screen is in its own layer, so you can move, delete, and modify layers as you need. I'm aware of two ways to capture such images, though I'm sure there are many others.
A free solution
Install the app, launch it, and you'll see a new "layer-ish" icon in your menu bar. You can use the menu bar icon, or the provided keyboard shortcuts, to grab the entire screen and save it as a layered Photoshop file. You can then open that image in any app that can handle Photoshop layers; there are many, including Acorn.
While this works very well, it's not what I use…
A non-free solution
Acorn includes a layered screen capture tool; you'll find it listed as New Image From Layered Screenshot in the Image menu. It's got a hidden power, though, and that's the fact that the listed keyboard shortcut—⇧⌘6—is, in fact, a global shortcut. So regardless of which app you're in, as long as Acorn is running, ⇧⌘6 will capture the entire screen as a layered screenshot.
I prefer Acorn's capture over ScreenToLayers primarily because of how it creates its layers: It groups items into folders, which makes for much faster browsing of the layers in an editor. In addition, Acorn is able to name each of the "SystemUIServer" objects (i.e. menu bar icons), which makes it really easy to find what I need.
This comparison of the two apps' captures (using Acorn) shows the differences:
On the left, ScreenToLayers has every object in its own layer, including two Dropbox icons (I run two clients) and a bunch of unidentified SystemUIServer entries. On the right, Acorn's capture put the two Dropbox icons in a folder, and identified all the SystemUIServer entries.
If you need to take a lot of full-screen shots, taking them as layered screenshots lets you do a lot of post-shot editing that you wouldn't otherwise be able to do—use ScreenToLayers or Acorn or some other solution, but use something.
There are tons of screen capture tools out there; I used to use Ambrosia's Snapz Pro X, for instance, for capturing screen shots (and screen movies, but that's for another day). If you have a favorite, feel free to share in the comments.