Sign in Join

Live chat for Free Pascal, Lazarus, Delphi and every Pascal programmer.

Catalog · How the catalog works
Anything · Lazarus or Delphi
Random projectRandom project

Eagle

Watch your filesystem like an eagle - Everything alternative for Linux.

View on GitHub

Member rating

No ratings yet.

Sign in to rate this project.

README

Eagle

Eagle is a fast file-search utility that can monitor file-system changes in real time. Obviously inspired by Everything, which I missed since moving to Linux.

Don't get me wrong, there's options out there - FSearch and ANGRYsearch come to mind - but I couldn't find one that's also aimed at communicating the search data with other apps.

Features

Main

  • scans your folders ahead of time, delivering instant search results when you need them
  • can keep real-time watch on your folders, so your search results are accurate
  • supports IPC to allow other programs to get instant search results

Others

  • allows searching in filename and (optionally) in path
  • display size and timestamp (can show pretty size and only date)
  • context menu to open file/folder, copy name/path
  • customizable actions for [Ctrl | Alt | Shift] + Click, double-click & middle-click
  • tray icon (can close/minimize/start minimized to tray)
  • autorun

Screenshots

Main window and options

You can see a first scan (around 318k files) and folder-watch here.

Note: media files can be outdated, sorry!

IPC - how to search using Eagle

If you want fast searches/listings from within your own app, you can implement your own duplex IPC and ask Eagle for the results. There is a sample app in the repo (EagleChick) to get you started. Remember to set Eagle to allow IPC (in Options).

Supported pipe commands:

  1. listfolder
pascal
listfolder
    -o  options to select what data to return
        - must be specified
        - can be any combination of the following: **npsdu** (name, path, size, date, unix)
        - combination order is irrelevant
        - if present, 'u' overrides 'd'
    
    -f  flat/single folder (non-recursive). Recursive by default.

    path to search. Use quotation marks if there are spaces in it.

Example usage:

pascal
listfolder -o=nps /mnt/partition/folder

This will return a list with the names, paths and sizes of all the files in the specified folder (recursively).

Example results:
base64_name|base64_path|size|*base64_name|base64_path|size|*

Note: Eagle must be configured to search for that particular folder (or one of its parent folders). Otherwise, oops.

  1. search
pascal
search
    -o  same as above

    -p  search in paths, too

    -s  if the keyword contains spaces, it will be treated as multiple separate keywords (wip)

    keyword to search for. Use quotation marks if there are spaces in it.

Example usage:

pascal
search -o=np test

This will return a list with the names and paths of all the files that match the test keyword.

Example results:
base64_name|base64_path|*base64_name|base64_path|*

  1. show

Used by Eagle itself to ping the running instance to pop up. You can create a global keyboard shortcut to launch Eagle and this will make sure there's only one instance running - and you get the search window popping up and ready to go.

Shouldn't be used by other apps, but hey... I'm just a readme file, I can't stop you!

Future plans

  • multiple search options - in progress
  • add option to list files in a treeview
  • mark files changed in the last X minutes / hours