20 November 1999

# fsv - 3D File System Visualizer

Daniel Richard G.

1999 Daniel Richard G.

## Introduction

fsv offers an intuitive, visual means of overviewing the layout and content of a file system. It translates a mass of information about files and directories (such as relative sizes) into geometry, constructing a 3D representation which can be easily viewed and manipulated. Each distinct file system entity, or node-- be it a file, directory, symbolic link, device interface, etc.-- is given a geometric counterpart with representational properties.

fsv's user interface consists of two main components:

- A directory tree / file list browser, as seen in many file manager programs, and

- a graphical viewport for viewing file system geometry.

The functionality of these are closely linked together, for a simple yet flexible means of browsing the file system.

## Startup

### Command-line arguments

When fsv is invoked with the `--help` option, it prints out a usage summary:

    bash$ fsv --help

    fsv - 3D File System Visualizer
          Version 0.9
    Copyright (C)1999 Daniel Richard G. <skunk@mit.edu>

    Usage: fsv [rootdir] [options]
      rootdir      Root directory for visualization
                   - (defaults to current directory)
      --mapv       Start in MapV mode (default)
      --treev      Start in TreeV mode
      --help       Print this help and exit

### Options and arguments

`rootdir`

- Specifies the base of the directory tree for fsv to work in. Everything inside this directory will be scanned, and subsequently translated into geometry.

  If no value is given, fsv works in the directory it is invoked from.

`--mapv`

- Starts the program in MapV visualization mode. (This is the default)

`--treev`

- Starts the program in TreeV visualization mode.

`--help`

- Prints out the usage summary and exits.

### Examples

To give the TreeV view of everything under `/usr`:

    bash$ fsv /usr --treev &

## Main window

### Toolbar

First button

Sends the camera back to the node it was viewing previously.

Second button

Repositions the camera to view the root directory.

Third button

Points the camera at a node one level closer to the root directory.

Fourth button

Sends the camera soaring up for a bird's-eye view.

### Directory tree

(upper-left panel of the main program window)

The directory tree displays all or part of the currently loaded directory structure, indicating which directories are collapsed and which are expanded. The selected entry (`linux` in this example) indicates the current directory, whose contents are listed in the file list.

### File list

(lower-left panel of the main program window)

The file list displays the contents of the current directory. Each entry in the list corresponds to a file system node, and is paired with an icon indicating the node type.

### Graphical viewport

(right panel of the main program window)

This is where the real action happens! The viewport displays the camera view. The camera automatically repositions itself as necessary to observe the current node of interest, which is indicated by white box-corners (as shown above).

The scrollbars may be used to move the camera around; the permitted range of motion depends on the camera's position and the current node.

## Using the mouse

fsv's user interface relies heavily on the mouse. Mouse functionality differs only slightly between the left and right panes of the main program window.

In the directory tree / file list area (left pane):

- The left button selects a node entry.

- The middle button doesn't do anything.

- The right button brings up a context-sensitive menu for a node entry.

In the graphical viewport area (right pane):

- The left button selects a node, and sends the camera toward it.

- The middle button dollies the camera forward or backward. (click & drag)

- The right button brings up a context-sensitive menu for a node.

## Menus

This section documents the various items accessible from fsv's top menu bar.

### File

Change root...

- Restarts fsv in a different root directory. This brings up a directory selection dialog, and once a directory is specified, fsv will perform another scan and generate new file system geometry accordingly.

Exit

- Quits the program.

### Vis

This menu allows you to choose between fsv's various visualization modes. Each of these is a different approach to representing a file system. When you switch from one mode to another, the camera will automatically home in on the same node it was looking at before.

MapV

- Each node is a block which sits on top of its parent directory. (Viewed from above, it is basically a Venn diagram). The area covered by each block is proportional to the size of the corresponding file system node.

TreeV

- Nodes are separated into two categories: platforms and leaves. Platforms are directories which have been expanded for viewing; everything else is a leaf, which sits on some platform. The platforms are connected by branches, reflecting the file system's directory structure. The height of a leaf node indicates its size.

### Colors

This menu controls how colors are assigned to nodes.

By node type

- Assigns colors according to each node's file system entity type, which can be one of the following:

  - Directory - Also known as a "folder"

  - Regular file - Most nodes are of this type

  - Symbolic link - These just point to another file

  - Named pipe (FIFO) - Very rare

  - Network socket - Even rarer

  - Character device - Found in `/dev`

  - Block device - Also in `/dev`

  - Unknown - ???

By timestamp

- Assigns colors from a continuous spectrum representing time. The default setup employs a rainbow spectrum, coloring new files red, somewhat older files green, much older files indigo/violet, and so forth. Nodes which are too old (or too new) to occur within the spectrum's time range are shown darkened.

By wildcards

- Assigns colors using a set of wildcard patterns. Each pattern is associated with a color, and may use the `?` and `*` characters to match against filenames. (An example would be `*.html`). If a node's filename matches a pattern, then the color of that pattern is used to draw the node. If a filename does not match any patterns, a default color is used.

  By convention, a `?` (question mark) matches any single character, and a `*` (asterisk) matches any group of characters. To give an example, `?pple` will match against `apple`, but not `snapple`. Alternately, `*pple` will match `pple`, `apple`, `snapple`, and `thebigapple`. Neither of these patterns, however, will match `appleseed`.

  This feature may be used to assign colors to files based on the filename extension. A pattern of (for example) `*.jpg` will against all files having the `.jpg` extension in their names (which, by convention, should be JPEG image files).

  Matching is performed on a case-sensitive basis. Thus, the pattern `*.jpg` is not the same as `*.JPG`.

Setup...

- Brings up a setup dialog for the various color modes. [The dialog has yet to be documented]

### Help

Contents...

- Launches a help browser.

About...

- Gives authorship and version information for the program.

## About fsv

fsv - 3D File System Visualizer

http://fox.mit.edu/skunk/soft/fsv/

Copyright ©1999 Daniel Richard G. skunk@mit.edu

This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA