A lightweight, cross-platform desktop organizer for managing software shortcuts with tab-based categorization.
| Attribute | Details |
|---|---|
| Tech Stack | Python 3.10+ / PySide6 (Qt) / QSettings |
| License | MIT (PySide6 dynamically linked under LGPLv3) |
| Exchange Format | softwarecenter-profile-v1.json (see EXPORTFORMAT.md) |
| PWA Companion | Static Web/PWA Companion (see web_companion/README.md) |
| Last Checked | 2026-06-11 (Hygiene & LLM Documentation Check) |
- Tab Organization - Group programs into renamable, movable tabs
- Drag & Drop - Add files via drag and drop
- Two View Modes - Tiles (large icons) and list
- Auto Save - Tabs, contents, and window position are persisted
- Context Menu - Right-click to open or remove
- Cross-Platform - Windows, macOS, and Linux
- Native Icons - Automatic display of system application icons
- macOS App Bundles - Drag and drop
.appapplications directly into the organizer - Linux Desktop Launchers -
.desktopentries show their app name and launch via their desktop command - Profile Export/Import - Versioned
softwarecenter-profile-v1.jsonformat for migrations and future web/PWA companions - Web/PWA Companion - Static
web_companion/viewer for mobile and browser-based profile inspection without launcher permissions - Multi-Selection - Delete multiple entries at once
- Offline-First - No telemetry, no accounts, no cloud connection
- Python 3.10+
- PySide6
pip install -r requirements.txtpython SoftwareCenter.pyOn Windows, you can also use START.bat or the prebuilt SoftwareCenter.exe from the Releases.
| Action | Instructions |
|---|---|
| Add programs | Drag files, shortcuts, .app bundles on macOS, or .desktop launchers on Linux into the window |
| Organize tabs | Toolbar > "New Tab", double-click to rename |
| Switch view | Toolbar > Tiles / List |
| Launch programs | Double-click or right-click > Open/Start |
| Remove entries | Right-click > Delete (removes shortcut only) |
| Export profile | File > Export Profile or the toolbar action |
| Import profile | File > Import Profile or the toolbar action; replaces the current profile |
pip install pyinstaller
python -m PyInstaller --noconfirm --clean SoftwareCenter.specThe EXE will be in dist/SoftwareCenter.exe. On Windows, build_exe.bat also copies it to the project root for local use.
python -m compileall -q SoftwareCenter.py manage_translations.py translator.py
python -m json.tool locales/translations.json
python -m json.tool store_package.json
python -m pytest -q
python tests/macos_platform_smoke.py
python tests/linux_platform_smoke.pyGitHub Actions runs these smoke checks. The macOS smoke validates .app import, open launching, QSettings persistence, and profile export on macos-latest; the Linux smoke covers .desktop import, Exec/xdg-open launching, QSettings persistence, and profile export on ubuntu-latest. Build artifacts and local task/test files are ignored and should not be committed.
For the Windows Store path, python scripts/run_windows_wack.py --dry-run checks the local MSIX/AppCert paths and prints the reproducible WACK command. The real certification run should be executed from an elevated PowerShell against a fresh signed MSIX before submission.
Profiles can be exported as softwarecenter-profile-v1.json and imported again later. The format carries tabs, view modes, and entries with label, path, kind, and optional notes, but does not copy local files or credentials. See EXPORTFORMAT.md for details.
The web_companion/README.md documents a static browser companion for the export format. It imports softwarecenter-profile-v1.json locally, offers tab/type filtering, and restores the last loaded profile for offline starts.
| Component | Technology |
|---|---|
| Language | Python 3.10+ |
| GUI Framework | PySide6 (Qt for Python) |
| Storage | QSettings (Windows Registry / INI) |
| Code Size | ~690 lines |
Note: This application uses PySide6, licensed under LGPLv3. PySide6 is dynamically linked.
This project is an unpaid open-source donation. Liability is limited to intent and gross negligence (§ 521 German Civil Code). Use at your own risk. No warranty, no maintenance guarantee, no fitness-for-purpose assumed.
