Definition-driven Python tooling for planning a Windows user-profile migration onto Linux.
Features
- Inventory standard user folders like
Desktop,Documents,Downloads,Pictures,Music, andVideos - Detect cross-platform app config for migrating.
- Identify Steam games.
- Resolve likely Linux targets using host-aware rules
- Generate dry-run plans and reports
- Apply selected migrations with conflict backups
The scanner is driven by JSON migration definitions.
- Built-in definitions live under
migration_definitions/builtin - The shared schema lives at
migration_definitions/schema-v1.json - Custom definition folders can be layered in with
--definitions-dir - The engine handles definition loading, validation, scanning, target resolution, and reporting
Most migrations should be declarative. Python handlers are reserved for edge cases that are too complex to express safely in JSON alone.
Current built-in definitions include:
- Standard document folders
- Steam local state
- Steam games
- VLC
- LibreOffice
- Firefox
- OBS Studio
- Audacity
- GIMP
Launch the wizard:
PYTHONPATH=src .venv/bin/python -m win2linux_migrator.cli wizardCLI
Text output:
PYTHONPATH=src .venv/bin/python -m win2linux_migrator.cli scan --source "/media/stellaris/58A615CFA615AE8E/Users/stellaris"JSON output:
PYTHONPATH=src .venv/bin/python -m win2linux_migrator.cli scan --source "/media/stellaris/58A615CFA615AE8E/Users/stellaris" --jsonWith custom definitions:
PYTHONPATH=src .venv/bin/python -m win2linux_migrator.cli scan --source "/media/stellaris/58A615CFA615AE8E/Users/stellaris" --definitions-dir "./my-migrations"Dry-run plan:
PYTHONPATH=src .venv/bin/python -m win2linux_migrator.cli plan --source "/media/stellaris/58A615CFA615AE8E/Users/stellaris"Apply selected items:
PYTHONPATH=src .venv/bin/python -m win2linux_migrator.cli apply --source "/media/stellaris/58A615CFA615AE8E/Users/stellaris" --definition vlc --definition libreoffice