xdiskusage Version 1.60

----------------------------------------------------------------
How to compile xdiskusage:
----------------------------------------------------------------

You need fltk.  If you do not have it yet, download it from
http://www.fltk.org, and compile and install it. You can also
use the CVS version of fltk2 located on the same site.

Type "./configure" (not necessary if you have gmake)

Type "make"

Test it by typing "./xdiskusage"

Become superuser and type "make install"

If you wish to edit the code, type "make depend"

----------------------------------------------------------------
How to use xdiskusage:
----------------------------------------------------------------

Typing "xdiskusage dir" where "dir" is a folder causes "du" to be
run on that folder and the result displayed.  If the named file is
a symbolic link it is dereferenced before being sent to du. The "-a"
switch, if given, is passed to "du" to cause all files to be measured.

Typing "xdiskusage file" where "file" is not a folder makes
xdiskusage parse that file as though it was "du" output and display
the result. You can use "-" to read from stdin, thus allowing you
to pipe a du command to the display, for instance "du -k . | xdiskusage".

You can type several file and folder names and get several display
windows.

Typing just "xdiskusage" brings up the disk browser described here:

----------------------------------------------------------------
How to use the Disk Browser
----------------------------------------------------------------

By default xdiskusage presents you with a list of all the disks
mounted on your system (it found these by running "df").  Click one of
these names and it will scan the entire disk (by running "du") and
present a graphical display of how much space all the files are taking
on that disk.

You can click on several disks (or on the same disk multiple times,
for instance if you have changed the files stored on it) and get
multiple display windows.

The "rescan" button reruns "df" to get a new list of disks.  You need
to do this if you mount or unmount a disk, or to see new usage
percentages.

The (C) button shows you the copyright and license.

You can type a filename into the input field on the bottom and type
Enter. If the name is a folder, xdiskusage will attempt to run "du"
on it and display the result. If the name is a file it is assummed to
be "du" output and it is parsed and displayed.

The "all files" button sends the -a switch to "du" causing it to list
the space for every file on the disk.  This can significantly increase
the time it takes to scan.

----------------------------------------------------------------
How to use the Display
----------------------------------------------------------------

Each white box represents a folder.  It's size is equal to the sum
of all it's contents (all sub-folders and files).  To the right of
each box are stacked the boxes for the sub-folders (and files if
the "all files" switch was given).

If you selected a disk from the disk browser, some extra boxes are
added to show information learned from df:

  "(free)" is the free space reported by df.

  "(permission denied)" is space that df said was used but du did not
  report. Besides permission errors when running du, this may also be
  the result of a file deleted from its containing folder, but still
  in use by a program, so its space is not reclaimed yet. Mounted
  loopback filesystems (ISO image just checked before burning, then
  deleted while still mounted) are common examples.

  "(inodes)" is the difference between the total size of the disk and
  the used + available space reported by du, this is overhead used by
  the file system.

The left-most box is the "current root". One of the boxes is outlined
in red, this is the "current node".

Clicking on any box makes it the current node. The arrow keys can also
be used to navigate you around. Hitting return makes the current node
be the current root: putting it on the left edge and blowing it up to
the height of the window and scaling all it's contents the same. The
left arrow can be used to move the root and current node back up, or
you can type '/' to move just the root, leaving the current node where
it is.

To dismiss any window type Escape.

----------------------------------------------------------------
Menu Items:
----------------------------------------------------------------

There is a pop-up menu on the right-hand mouse button.  Every item on
the menu has a keyboard shortcut.  The menu items are:

  In (right arrow): go to the first child of the current folder.

  Next (down arrow): go down to brother of current folder.

  Previous (up arrow): go up to the brother of current folder.

  Out (left arrow): go to parent of current folder.

  Root out (slash): move the root of the window up to it's parent.

  Hide (h): remove this node from the display and scale rest up to fit

  Unhide (H): Recursivly turn off the hide flag from all children

  Sort/Largest (s): sort largest size at the top

  Sort/Smallest (r): sort smallest size at the top

  Sort/Alphabetical (a): sort in alphabetical order

  Sort/Reverse Alphabetical (z): sort in backwards alphabetical order

  Sort/Unsorted (u): sort in the order read from du.

  Columns/2-11 (2-9,0,1): arrange display to have N columns.

  Copy to Clipboard (c): the pathname of the current node is put in
  the X clipboard (you can then paste it into a shell command).

  Print (p): The current display is printed.  The output is Encapsulated
  PostScript.  It will either run it through lpr (or any command you
  choose) or send it to a file.

  Quit (q or Esc): exit

----------------------------------------------------------------
Acknowledgements
----------------------------------------------------------------

This program was inspired by, and the user interface design copied
from, the "xdu" program written by Phillip C. Dykstra.
<dykstra at ieee dot org> <phil at arl dot army dot mil>

Stephane Gourichon contributed many suggested improvements.
<stephane dot gourichon at lip6 dot fr>

So did Keith Thompson <Keith.S.Thompson at g mail>

----------------------------------------------------------------
Copyright (C) 2021 Bill Spitzak
----------------------------------------------------------------
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU 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
General Public License for more details.

You should have received a copy of the GNU General Public License
along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
USA.

Written by Bill Spitzak		spitzak at gee m ail dotcom
----------------------------------------------------------------
END
----------------------------------------------------------------
