Q. What algorithm is used to check for duplicate files?
A. On a standard install, you can see the script used in
   /usr/share/fslint/fslint/findup. In summary the algorithm is:
   1. exclude files with unique lengths
   2. handle files that are hardlinked to each other
   3. exclude files with unique md5(first_4k(file))
   4. exclude files with unique md5(whole file)
   5. exclude files with unique sha1(whole file) (in case of md5 collisions).

Q. Is there a command line version?
A. Yes, you can download the tarball and cd to
   the fslint directory, and use it directly from there.
   Note the GUI just wraps these command line programs,
   so alternatively you can cd or add to $PATH the
   /usr/share/fslint/fslint directory on a standard install.

Q. Can I download the tarball and hack & run the GUI without installing it?
A. Yes, just run ./fslint-gui from the directory you extract
   and it automatically notices this and uses just the
   files in the extracted directory. Note you will need
   to do a make in the po directory for i18n to work.

Q. Where's the Makefile? How do I build/install it from source?
A. It's python so nothing needs to be built on the target.
   There's no Makefile to [un]install because there's no need (see previous FAQ)
   To build an rpm just tar.gz the working directory to fslint-x.xx.tar.gz.
   For example: tar czf fslint-2.17.tar.gz --exclude=.svn fslint
   and then: rpmbuild -ta fslint-x.xx.tar.gz. Alternatively
   to build a deb just cp -a the working directory to fslint-x.xx
   and then: cd fslint-x.xx && dpkg-buildpackage -I.svn -rfakeroot -tc

Q. The released RPM doesn't install on mandriva or SuSE?
A. Unfortunately Mandriva and SuSE at least use different
   pygtk package names to fedora/redhat.
   FSlint does support automatically building the correct package
   on the mandriva and suse platforms. To build a package for these
   distros, just get the release tar.gz and as in the previous FAQ:
       sudo rpmbuild -ta fslint-x.xx.tar.gz

Q. Why does the GUI default to including my $HOME dir, and how do I change it?
A. Well more accurately it adds the current working directory by default,
   so when started from the gnome menu, it will default to $HOME.
   You can pass (multiple) directories on the command line like:
     Alt-F2 -> fslint-gui /your/dir
   Or you could edit the menu entry to hardcode a different start path.

Q. In the GUI how do I exclude dirs (and and sub-dirs) matching a pattern?
A. In "Advanced Search Parameters"->"Paths to exclude", add
   "*/CVS" to exclude all CVS dirs for example

Q. In the GUI how do I exclude files matching a pattern?
A. In "Advanced Search Parameters"->"Extra find parameters", add
   "\( ! -name COPYING* -a ! -name LICENSE \)" to exclude licence files for e.g.

Q. From the command line how do I exclude paths matching a pattern?
A. To exclude directories: findup \( -path "*/.svn" \) -prune -o
   To exclude files:       findup \( ! -name "*.py[co]" \)

Q. How do I navigate the file lists with the keyboard?
A. FSlint uses a GtkCList in "multiple selection" mode throughout.

   1. Ctrl + up, down to scroll the list.
   2. up, down, PgUp, PgDown, Ctrl+home and Ctrl+end to change selected item.
   3. Shift + the movement keys extends a contiguous selection.
   4. Ctrl + space, toggles the discontiguous selection mode.
   When in this mode, one can navigate to any row using the movement keys
   and space will toggle that row's selection state. Also holding Shift
   while using the movement keys will extend the selection.

   For completeness the mouse works like:

   1. Clicking an item selects it.
   2. Ctrl+click adds toggles rows to and from a discontiguous selection.
   3. Dragging the mouse over rows makes a contiguous selection.
   4. Shift+click extends a contiguous selection to the clicked row.
