Skip to content

feat: add full Linux desktop support - #18

Merged
TrapEmAll merged 1 commit into
mainfrom
agent/full-linux-support
Jul 23, 2026
Merged

feat: add full Linux desktop support#18
TrapEmAll merged 1 commit into
mainfrom
agent/full-linux-support

Conversation

@TrapEmAll

Copy link
Copy Markdown
Owner

Summary

This adds first-class Linux support across runtime behavior, desktop integration, packaging, CI, releases, tests, and documentation.

Runtime and desktop

  • use XDG-native data, configuration, cache, and state directories on Linux
  • preserve existing Windows paths and cross-platform portable mode
  • use Linux-appropriate fonts and support both xdg-open and gio open
  • provide useful startup errors when Tkinter or a graphical session is unavailable
  • assign a stable UnityScraper desktop class for taskbar grouping
  • move knowledge-source snapshots into the platform cache directory
  • remove another custom-database test/profile side effect from BackupRepository

Linux distribution

  • add setup.sh and run-unityscraper.sh for source installations
  • add a cross-platform PyInstaller spec and build_linux.sh
  • produce UnityScraper-Linux-x86_64.tar.gz with SHA-256 verification
  • include a no-root user installer, desktop entry, 1024px icon, AppStream metadata, command symlink, and safe uninstaller
  • preserve user databases, configuration, downloads, caches, and logs during uninstall

Automation

  • add an Ubuntu 22.04 Linux executable job after the Windows/Linux Python matrix
  • validate shell syntax, FreeDesktop metadata, and AppStream metadata
  • smoke test the packaged GUI under Xvfb
  • publish Windows and Linux artifacts together from version tags
  • keep AppStream, Python, VERSION, and project versions synchronized

Documentation

  • add LINUX.md with supported distributions, release/source installation, XDG locations, mounted-device behavior, uninstallation, and troubleshooting
  • update README, architecture, contributor guidance, project status, documentation index, and changelog

Compatibility and migration

  • Windows remains unchanged under %LOCALAPPDATA%\UnityScraper.
  • Linux now uses the XDG Base Directory specification instead of the historical ~/.unityscraper fallback.
  • Portable mode still uses UnityScraperData beside the executable when portable.mode or UNITYSCRAPER_PORTABLE=1 is present.
  • The Linux release targets x86_64 glibc-based desktops. ARM64 and musl packages remain future work.
  • Linux devices must already be mounted. UnityScraper does not install filesystem drivers or request elevated privileges.
  • XboxUnity remains explicitly HTTP-only.

Validation

  • Ruff: passed
  • compileall: passed
  • core tests: 60 passed
  • integration tests: 31 passed
  • version consistency including AppStream metadata: passed
  • Markdown links: passed
  • Linux shell syntax: passed
  • Windows PyInstaller build and checksum: passed
  • native Ubuntu PyInstaller build, desktop metadata validation, and Xvfb smoke test: performed by this PR's CI before merge

Add XDG-native storage, cross-platform desktop integration, Linux source launchers, and a self-contained x86_64 release bundle with user-level installation and uninstallation. Extend CI and tagged releases to build, validate, smoke test, checksum, and publish Windows and Linux artifacts while preserving XboxUnity's HTTP-only transport.
@TrapEmAll
TrapEmAll marked this pull request as ready for review July 23, 2026 21:43
@TrapEmAll
TrapEmAll merged commit 0c23721 into main Jul 23, 2026
6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant