GrabFS: The Screenshot File System© Amit Singh. All Rights Reserved. Written in December 2007
Processes as Files
A while ago, I wrote about procfs for Mac OS X, a MacFUSE-based file system. Subsequently, I added more cool features to my procfs implementation. Recently, I had reason to demonstrate procfs again and realized that I needed still more cool features. That need led to GrabFS.
Screenshots as Files
In a pinch, GrabFS is a file system that shows you a live view of the window contents of currently running applications. In a GrabFS volume, folders represent running applications and image files represent instant screenshots ("grabs") of the applications' windows. You simply copy a file or just open it in place, and you have a screenshot. Open it again, and you have a new screenshot!
GrabFS requires Mac OS X "Leopard" and MacFUSE.
When you launch the GrabFS application, it mounts a volume that's visible on your Desktop as
GrabFS Volume. Of course, GrabFS being a "real" file system, you can just as well access it from the Terminal—it's mounted on
/Volumes/GrabFS/. To eject this volume, as you normally would, use one of the several ways possible on Mac OS X—drag it to the Trash, or select the icon and type
⌘-E, or use
At the top level of the GrabFS volume, you will see several folders—each corresponds to a running application. A folder's name incorporates the corresponding application's name and its BSD process identifier. For example:
$ ls /Volumes/GrabFS
Adium (341)/ SystemUIServer (113)/
AirPort Base Station Agent (120)/ Terminal (144)/
Dock (112)/ WindowServer (84)/
Finder (114)/ iTunes Helper (121)/
Preview (1520)/ loginwindow (32)/
Safari (339)/ mdworker (1505)/
GrabFS Root Folder
Within each folder you will see zero or more TIFF files—one for each onscreen window the application currently has. The files are named
<window_id> is the global window identifier for that window. Each such file, when opened, will consist of that window's contents at the moment the file is opened. In other words, these files are akin to live, in-place screenshots. "Grabbing a screenshot" becomes merely opening the file in the application of your choice. You can open these files in place, or copy them over to somewhere. Copying a file
N times gives you
N screenshots taken at
N moments in time. (Note that GrabFS is a read-only file system.)
$ ls -las /Volumes/GrabFS/Safari\ \(339\)/
0 drwxr-xr-x 1 root wheel 0 Dec 31 01:04 .
0 drwxr-xr-x@ 1 root wheel 0 Dec 31 01:04 ..
6144 -rw-r--r-- 1 root wheel 3143192 Dec 31 01:04 40a.tiff
6144 -rw-r--r-- 1 root wheel 3143192 Dec 31 01:04 5ef.tiff
6144 -rw-r--r-- 1 root wheel 3143192 Dec 31 01:04 5f2.tiff
$ sips -g all /Volumes/GrabFS/Safari\ \(339\)/40a.tiff
profile: Color LCD
Again, graphically speaking:
Contents of the Safari Folder in GrabFS
You will see that the number and names of TIFF files reflect the current state of things. As an application's onscreen windows come and go, the corresponding TIFF files appear and disappear, respectively, from that application's GrabFS folder. Besides, each time you go to the Finder window for a GrabFS folder, you will see that the preview images (including what you see in Cover Flow) are updated to the current window contents. Since the files in question are "real" image files for all intents and purposes, Mac OS X features such as Quick Look will work fine as well.
Quick Look on a GrabFS File
An interesting use of GrabFS is to discover which of the entities you see onscreen are "windows" and who owns them. For example, you will see that each icon on the Desktop is a window belonging to the Finder—you will find TIFF files for each within the
Finder folder. If you look inside the
WindowServer folder, you will see a window corresponding to your Desktop background, a window corresponding to the now infamous "translucent" menu bar, and another corresponding to the menu bar's shadow. Within the
SystemUIServer folder, you will see a window like the following.
A SystemUIServer Window
As can be seen, not all "icons" in the menu bar come from
SystemUIServer. The Spotlight icon on the top right corner of the screen can be found within the GrabFS folder for the
The purpose of GrabFS is to be an interesting utility and a demonstration of the kind of things you can do with MacFUSE. Have fun with it!
You must read and agree to this site's terms and conditions before downloading or using any software or other material available from this site.