Building from Source - FreakySneaky787/Simple-Organizer GitHub Wiki
Simple Organizer uses only the Python standard library.
- Python 3.11 or newer with Tkinter
- Fedora / Bazzite:
sudo dnf install python3-tkinter - Debian / Ubuntu:
sudo apt install python3-tk - Windows: the python.org installer includes Tkinter
- Fedora / Bazzite:
- Optional:
tkinterdnd2for drag-and-drop of folders onto the path field
git clone https://github.com/FreakySneaky787/Simple-Organizer.git
cd Simple-Organizer
python3 main.py # Windows: py main.pypython3 -m venv .venv
source .venv/bin/activate # Linux
# .venv\Scripts\activate # Windows
pip install pyinstallerLinux:
pyinstaller --onefile --windowed --name simple_organizer \
--add-data "icon.png:." main.pyWindows:
py -m PyInstaller --onefile --windowed --name simple_organizer ^
--add-data "icon.png;." --icon icon.ico main.pyThe result is in dist/. icon.png and icon.ico are part of the repository; without them the app still works and draws its own window icon.
python3 packaging/build_deb.py # -> dist/simple-organizer_<version>_all.debPure Python, so it also works on Windows. packaging/test_deb.sh checks the package in a clean Debian 12 (lintian, install, start on a virtual screen, scan / organize / undo / trash, removal); GitHub Actions runs it on every push and attaches the package to every release:
docker run --rm -v "$PWD:/src" -w /src debian:bookworm sh packaging/test_deb.sh dist/simple-organizer_*_all.debThe regression tests of every release are in tests/ — core suites without a window and GUI suites that drive the real app. They use temporary folders and a temporary APPDATA only:
py tests\run_all.pyThey are written for Windows. GitHub Actions runs them on every push with Python 3.11 and the newest Python.
Dropping a folder (or a file, to use its folder) onto the path field needs the Tcl extension tkdnd. The easiest way is pip install tkinterdnd2, which bundles it. Without it, the feature is simply off and the tooltip does not mention it.
| File | Contents |
|---|---|
main.py |
Window, dialogs, background tasks, scheduler integration |
organizer.py |
Scanning, organising, undo history, staging, duplicates, trash |
utils.py |
Categories, file-type detection, safe file moves, data folders, instance lock, error log |
rules.py |
Rules: storage, validation, matching |
config.py |
Settings: defaults, loading with validation, saving |
scheduler.py |
Interval timer for Auto-organize |
theme.py |
Light / dark theme, rounded controls drawn at runtime |
icons.py |
Phosphor icons (MIT) rendered at runtime |
Bug reports and ideas are welcome as issues. For bugs, please attach error.log (see Data and Settings).