Stop guessing what's on your external drives. DiskLog is a lightweight, fully customizable desktop application designed to track and manage collections of external disks, flash drives, and memory cards. Built entirely with Python's standard library, it offers a snappy, zero-dependency solution to digital hoarding.
What makes DiskLog special? It is 100% config-driven. You define your database schema and UI forms in a simple JSON file, and DiskLog automatically handles the rest, from rendering input fields to dynamically altering your SQLite database.
- π Dynamic, Config-Driven UI: Add, remove, or modify columns via a simple
config.json. The app instantly generates the appropriate UI elements and updates the database schema automatically. - π€ Flexible Data Export: (New in v2.1.0) Export your filtered data to CSV for spreadsheets or to a brand-new SQLite database file for external use.
- π Advanced Query Search: Use powerful database operators directly in the search bar (e.g.,
Type = SSD,is encrypted = 1). - βοΈ In-App Schema Editor: Tweak your configuration directly inside the app with built-in validation.
- β‘ Zero Dependencies: Built strictly with Python's standard library. No
pip installrequired.
Download the latest .exe from the Releases page for a self-contained, no-installation experience.
Requirements: Python 3.10+ on Windows, macOS, or Linux.
-
Clone and enter the repository:
git clone https://github.com/MohtadiAwada/DiskLog.git cd DiskLog -
Run the application:
python app.py
DiskLog now features a "What You See Is What You Get" export system. Only the data currently visible in your table (based on your search/filters) will be exported.
- Spreadsheet (.csv): Generates a clean CSV file compatible with Excel, Google Sheets, and Numbers.
- Database File (.db): Generates a new SQLite database. You can customize the Table Name and Primary Key during the export process, making it perfect for migrating specific datasets to other projects.
The search bar parses input to execute complex queries:
- Global Search: Type any word to search across all columns.
- Targeted Operators: Use
=,!=,>,<,>=,<=, orLIKE.- Example:
Type != HDD
- Example:
- Multiple Queries: Combine filters with a comma.
- Example:
Type = Flash Drive, Sandisk
- Example:
When you add a new column to the columns list in your config, DiskLog's engine automatically executes an ALTER TABLE command to update your SQLite database.
DiskLog/
βββ app.py # Entry point (Initializes Tkinter mainloop)
βββ config.json # Auto-generated schema configuration
βββ data.db # Auto-generated SQLite database
βββ core/ # Backend Logic
β βββ config.py # Config loader and validator
β βββ db.py # Dynamic SQLite engine and query parser
β βββ store.py # State management
βββ models/ # Reusable UI Components
β βββ table.py # Dynamic data grid
β βββ tools.py # Toolbar buttons
β βββ export.py # CSV and SQLite export engine (v2.1.0)
βββ windows/ # Application Windows
βββ main.py # Main GUI layout
βββ add_popup.py # Dynamic creation form
βββ edit_popup.py # Dynamic edit form
βββ config_popup.py # Raw JSON editor with safety validations
MIT License - see the LICENSE file for details.
