Skip to main content

TUI Package and ISO Manager with JSON repository support

Project description

MozApp - Wine & Application Package Manager

MozApp is a unified Python CLI and Textual TUI package manager built on top of CheapWine and Maestro-Plus. It provides non-interactive and interactive workflows for downloading, mounting, and installing Windows applications, VST plugins, ISO images, and package archives inside a managed Wine prefix environment. Made with Gemini ! 🚀


🌟 Key Features

  • 🍷 CheapWine & Maestro-Plus Integration: Built-in environment isolation under ~/.mozapp/cheapwine with direct command passthrough (run, wine, winetricks, env, tui, chocolatey, export, etc.).
  • 🛡️ Guarded Initialisation (mozapp init): Fetches and executes the maestro-plus setup script in-place inside ~/.mozapp/cheapwine. Command execution is guarded until initialization completes successfully, with automated cleanup on failure or --force reset.
  • 📀 Automated ISO Mounting & Silent Installation (install_local_ni_iso):
    • Mounts ISO files via udisksctl with -o unhide.
    • Links to ~/.mozapp/iso_mount_point.
    • Detects top-level .exe installers and executes silent setup (/s SILENT=TRUE) via CheapWine.
  • Google Drive Virus Warning Bypass: Automatically detects Google Drive "file is too large to scan" HTML warning pages, extracts session tokens (confirm=t, uuid), and streams the true binary payload.
  • 🔗 Workspace Prefix Mounting: Automatically mounts cheapwine/.cheapwine to workspace/.cheapwine during package installations.
  • 📦 Batch Repository & Direct CLI Installation:
    • mozapp install_package <repo_name> / mozapp install_iso <repo_name> installs all items in a repository.
    • Omission of arguments opens the interactive Textual TUI with default table keyboard focus.
  • 🖥️ Interactive Textual TUI: Live filtering, markdown details, progress bars, and keyboard shortcuts (Enter, b, q).

📁 Directory Structure (~/.mozapp)

All MozApp data and prefixes are isolated in ~/.mozapp:

Path Description
~/.mozapp/config.json Central configuration containing repository sources & sentinel state
~/.mozapp/cheapwine/ Wine prefix directory & cheapwine binary execution context
~/.mozapp/workspace/ Package archive extraction & build workspace
~/.mozapp/isos/ Downloaded ISO image storage
~/.mozapp/iso_mount_point/ Active ISO mountpoint target

🚀 Quick Start & Installation

Installation

Install MozApp in editable mode:

uv pip install -e .

Initialisation

Before running any application management commands, initialize the CheapWine prefix context:

mozapp init

To force re-initialization and clear the existing cheapwine directory, run mozapp init --force.


📖 Command Reference

🎛️ Interactive TUI

# Open TUI for package repositories
mozapp install_package

# Open TUI for ISO repositories
mozapp install_iso

📦 Non-Interactive Package & ISO Installation

# Install a single package from a repository
mozapp install_package "Official Packages" "Sample Package"

# Install ALL packages from a repository
mozapp install_package "Official Packages"

# Install a single ISO from a repository
mozapp install_iso "Google Drive ISO Repo" "Nucleus Lite Edition"

# Install ALL ISOs from a repository
mozapp install_iso "Google Drive ISO Repo"

💿 Local ISO Mounting & Silent Installation

# Unmount existing ISO, mount local file via udisksctl (-o unhide), and run silent installer
mozapp install_local_ni_iso /path/to/installer.iso

🍷 CheapWine & Registered Application Forwarding

MozApp forwards Wine commands directly to cheapwine with WINEPREFIX=~/.mozapp/cheapwine:

# Run a registered application or arbitrary Windows executable
mozapp run "Native Access"
mozapp run ./installer.exe

# List registered Wine applications
mozapp list_apps

# Run wine / winetricks inside local prefix
mozapp wine cfg
mozapp winetricks corefonts

🛠️ Repository Configuration Management

# List configured repositories or remote repo items
mozapp list
mozapp list package "Official Packages"
mozapp list iso "Google Drive ISO Repo"

# Add a package or ISO repository
mozapp add_repo package "Custom Repos" "https://example.com/packages.json"
mozapp add_repo iso "Custom ISOs" "https://example.com/isos.json"

# Remove a repository
mozapp remove_repo package "Custom Repos"

📝 Configuration (config.json)

Example configuration file located at ~/.mozapp/config.json:

{
  "initialized": true,
  "package_repos": [
    {
      "name": "Official Packages",
      "url": "https://raw.githubusercontent.com/mozapp/sample-repo/main/packages.json"
    }
  ],
  "iso_repos": [
    {
      "name": "Official ISOs",
      "url": "https://raw.githubusercontent.com/mozapp/sample-repo/main/isos.json"
    }
  ]
}

🧪 Testing

Run the full pytest suite:

pytest

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mozapp-0.1.3.tar.gz (19.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

mozapp-0.1.3-py2.py3-none-any.whl (19.1 kB view details)

Uploaded Python 2Python 3

File details

Details for the file mozapp-0.1.3.tar.gz.

File metadata

  • Download URL: mozapp-0.1.3.tar.gz
  • Upload date:
  • Size: 19.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for mozapp-0.1.3.tar.gz
Algorithm Hash digest
SHA256 80dc1f2b11eaefbe3aca89f30dc74d5e8620438d1629feb6a2fcc06a67ef5b32
MD5 9122f9f8900ef08623c3de26a4c38f8d
BLAKE2b-256 79781ee8cc6a837f3e5dd03e3acd7b4a2f128bcea47bdab19116fed30cf6cd23

See more details on using hashes here.

Provenance

The following attestation bundles were made for mozapp-0.1.3.tar.gz:

Publisher: publish.yml on HeapHeapHooray/mozapp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file mozapp-0.1.3-py2.py3-none-any.whl.

File metadata

  • Download URL: mozapp-0.1.3-py2.py3-none-any.whl
  • Upload date:
  • Size: 19.1 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for mozapp-0.1.3-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 e33736e74cf50199a8b5f9a3e429d37dccd624a720cefe99570d5a17b9370730
MD5 594802ae3bbd74f56af688acf3d67d59
BLAKE2b-256 40a7224b3a17e031ae5a5f992836b025df0ffcb7d06c369ef89521601316425a

See more details on using hashes here.

Provenance

The following attestation bundles were made for mozapp-0.1.3-py2.py3-none-any.whl:

Publisher: publish.yml on HeapHeapHooray/mozapp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page