This monolithic commit represents a comprehensive overhaul of the application,
transitioning from a Docker-OSX based system image creator to a sophisticated
macOS USB Installer creation tool using `corpnewt/gibMacOS.py`. It also
incorporates significant research and implementation for hardware compatibility,
especially for NVIDIA GPUs on newer macOS via OpenCore Legacy Patcher (OCLP)
preparation, and substantial UI/UX enhancements.
**Core Architectural Changes:**
1. **Installer-Based Workflow with `gibMacOS`:**
- `main_app.py`: Completely refactored. All Docker dependencies, UI components,
and related logic have been removed.
- I introduced a way to download official macOS installer assets
directly from Apple via `gibMacOS.py`. The UI now reflects a two-step process:
1. Download macOS Assets, 2. Create USB Installer.
- The USB writing process now consumes `macos_download_path` from `gibMacOS`.
2. **Platform-Specific USB Writer Modules (`usb_writer_*.py`) Refactored:**
- **`usb_writer_linux.py`:** Creates a comprehensive macOS installer.
- Uses `sgdisk` for GPT partitioning (EFI FAT32, Main HFS+).
- Employs `7z` to extract BaseSystem HFS image from downloaded assets.
- Writes BaseSystem image to USB via `dd`.
- Copies essential installer files (`BaseSystem.dmg`/`.chunklist`,
`InstallInfo.plist`, `InstallAssistant.pkg`/`InstallESD.dmg`,
`AppleDiagnostics.dmg`, `boot.efi`) to standard locations within a
created `Install macOS [VersionName].app` structure on the USB.
- Sets up OpenCore EFI from `EFI_template_installer`, including
conditional `config.plist` enhancement via `plist_modifier.py`.
- Includes logic to emit determinate `rsync` progress (though UI display
in `main_app.py` was blocked by difficulties).
- **`usb_writer_macos.py`:** Mirrors Linux writer functionality using native
macOS tools (`diskutil`, `hdiutil`, `7z`, `dd`, `rsync`/`cp`, `bless`).
Creates a full installer with custom OpenCore EFI.
- **`usb_writer_windows.py`:**
- Automates EFI partition setup (`diskpart`) and OpenCore EFI placement
(from template + `plist_modifier.py`, using `robocopy`).
- Extracts BaseSystem HFS image using `7z`.
- Provides detailed, enhanced guidance for you to manually:
1. Write the `BaseSystem.hfs` to the main USB partition using
"dd for Windows" (includes disk number, path, partition info).
2. Copy other installer assets to the HFS+ partition using
third-party tools or another OS.
3. **`plist_modifier.py` (OpenCore `config.plist` Enhancement):**
- Expanded hardware mappings for Intel Alder Lake iGPUs (including headless
logic if dGPU detected), audio codecs (prioritizing detected names), and
Ethernet kexts.
- Refined NVIDIA GTX 970 (Maxwell) `boot-args` logic:
- `nvda_drv=1` for High Sierra.
- For Mojave+: `amfi_get_out_of_my_way=0x1` (OCLP prep), and `nv_disable=1`
if an iGPU is present and primary; otherwise, no `nv_disable=1` to allow
GTX 970 VESA boot.
- Creates a `config.plist.backup` before modifications.
4. **`linux_hardware_info.py` (Hardware Detection - Linux Host):**
- Added `get_audio_codecs()` to detect audio codec names from `/proc/asound/`,
improving `layout-id` accuracy for `plist_modifier.py`.
5. **`EFI_template_installer`:**
- `config-template.plist` significantly improved with robust, generic defaults
for modern systems (Alder Lake friendly) and for `plist_modifier.py`.
- Directory structure for kexts, drivers, ACPI defined with placeholders.
6. **UI/UX Enhancements (`main_app.py`):**
- Status bar features a QTimer-driven text-based spinner for active operations.
- Implemented determinate `QProgressBar` for `gibMacOS` downloads.
- Centralized UI state management (`_set_ui_busy`, `update_all_button_states`).
- Improved lifecycle and error/completion signal handling.
- Privilege checks implemented before USB writing.
- Windows USB detection improved using PowerShell/WMI to populate a selectable list.
7. **Documentation (`README.md`):**
- Completely rewritten with "Skyscope" branding and project vision.
- Details the new `gibMacOS`-based installer workflow.
* Explains the NVIDIA GPU support strategy (guiding you to OCLP for
post-install acceleration on newer macOS).
* Comprehensive prerequisites (including `gibMacOS.py` setup, `7z`, platform
tools like `hfsprogs` and `apfs-fuse` build info for Debian).
* Updated usage instructions and current limitations.
* Version updated to 1.1.0.
**Known Issue/Stuck Point:**
- Persistent difficulties prevented the full integration of determinate `rsync`
progress display in `main_app.py`. While `usb_writer_linux.py` emits the
data, I could not reliably update `main_app.py` to use it for the progress bar.
This change represents a foundational shift to a more flexible and direct
method of macOS installer creation and incorporates many advanced configuration
and usability features.
This commit introduces several major enhancements:
1. **Experimental `config.plist` Auto-Enhancement (Linux Host for Detection):**
* `linux_hardware_info.py`: Added audio codec detection.
* `plist_modifier.py`:
* Uses detected audio codecs for more accurate `layout-id` selection.
* Expanded mappings for Intel Alder Lake iGPUs, more audio devices, and Ethernet kexts.
* Refined NVIDIA GTX 970 `boot-args` logic based on target macOS version and iGPU presence.
* Creates a `.backup` of `config.plist` before modification and attempts restore on save failure.
* Integrated into `main_app.py` with a user-selectable experimental checkbox.
2. **Reworked `README.md`:**
* Completely rewritten for "Skyscope" branding and project vision.
* Details all current features, including platform-specific USB writing (manual Windows dd step).
* Comprehensive prerequisites, including `apfs-fuse` build dependencies for Debian.
* Updated usage guide and future enhancement plans. Version set to 0.8.2.
3. **UI/UX Enhancements for Task Progress:**
* Added a QTimer-driven text-based spinner to the status bar for active operations.
* Centralized UI state management (`_set_ui_busy`, `update_all_button_states`) for consistent feedback and control enabling/disabling.
* Refactored completion/error handling into generic slots.
4. **Improved Windows USB Writing Guidance:**
* `usb_writer_windows.py` now uses `diskpart` to fetch and display the
macOS partition number and byte offset, providing more specific details
for your manual `dd` operation.
5. **Debian 13 "Trixie" Compatibility:**
* Reviewed dependencies and updated `README.md` with specific notes for
`hfsprogs` and `apfs-fuse` installation on Debian-based systems.
This set of changes makes the application more intelligent in its OpenCore
configuration attempts, improves your feedback during operations, and provides
much more comprehensive documentation, while also advancing the capabilities
of the platform-specific USB writers.