Simplistic but cross-platform version of Everything
- Install Python 2.7
- sudo apt install python-pyqt5 (pip install python-qt5 fails with missing egg-info)
- sudo apt install python-pyqt5.qtsql (optional for the time being)
- Install Python 2.7
- pip install python-qt5 (or follow https://github.com/pyqt/python-qt5)
python-qt5 is a 64-bit Windows project so it doesn't work in 32-bit Windows XP, fortunately some versions of Anaconda do support PyQt5 and 32-bit Windows XP.
- Install Anaconda 2.2.0 which is the last Anaconda Python 2.7.x version that is known to work on XP (2.3.0 also seems to work, but has missing DLL paths at runtime). This will install Python 2.7.9 which has sqlite 3.6.21 which doesn't support WAL (needs sqlite 3.7.4)
- Create a conda python 2.7 environment, this will install Python 2.7.13 in that environment, which has sqlite 3.8.11, which has WAL support.
- conda install PyQt5
- At this point the application should work, but sqlite 3.8.11 is known to have
~0.5s stalls on every commit, so ideally copy over a more recent sqlite3.dll
to the DLLs path of that environment:
- The sqlite.org current win32 sqlite 3.38.2 is known to work
- Lower version numbers may work too (eg sqlite version 3.28.0 that comes with Python 2.7.18 is known to work ok on 64-bit Windows 10 or on 32-bit ARM Linux)
filefinder.py [comma separated list of directories to collect] [database filepath]
Eg on Windows,
filefinder.py \windows\system32 _out\files.db
on Linux,
./filefinder.py ~/.mozilla,/etc _out/files.db
- Uses PyQt5, Python 2.7 and sqlite3
- Works on Raspberry Pi 2 with LXDE
- Works on 64-bit Windows 10, 32-bit Windows XP, probably other combinations
- On demand row displaying/virtual table for efficency (but note that directories are still loaded wholesome at startup, just displayed on demand as the table is scrolled to prevent QTableView building startup time)
- Launch associated applications on doubleclick/enter
- Copy all selected paths to clipboard on right click/ctrl+c
- Copy/cut selected files to clipboard
- Uses sqlite3 as database, smart updated in the background at app launch
- Python 2.7.13 or higher (sqlite >= 3.7.4 for WAL support)
- For good commit performance you will need some sqlite version higher than 3.8.11 (exact version unknown, but sqlite 3.28.0 that comes with Python 2.7.18 is known to be ok, replacing the sqlite dll with the current one at sqlite.org 3.39.2 is also known to work, at least on 32-bit Windows XP)
- PyQt5
- Move paths to its own table instead of replicating them on every file (reduces database size)
- Try sqlite3 Full Text Search
- Move db update to a different process (prevent GIL UI stalls)
- Server/Client (allow servers to index local filesystems and expose them to clients)
- Infinite loop safeguards (don't follow links, mounted drives, etc)
- Pie charts/statistics
- Bookmarks
- Storing file type
- Complex filters (file type, size, date)
- More keyboard shortcuts (delete, go to search box, etc)
- Detailed installation instructions/requirements.txt
- Command line help
- Configuration file
- Configuration UI
- Store file-specific metadata (image sizes, video lengths...)
- Open Everything data files? (the database format looks private, but it could open .efu files, use the SDK or use the command line tool es.exe (note the last two methods wouldn't be cross platform)