Initial public release v0.1.0 - Linux Wabbajack Modlist Application

Jackify provides native Linux support for Wabbajack modlist installation
   and management with automated Steam integration and Proton configuration.

   Key Features:
   - Almost Native Linux implementation (texconv.exe run via proton)
   - Automated Steam shortcut creation and Proton prefix management
   - Both CLI and GUI interfaces, with Steam Deck optimization

   Supported Games:
   - Skyrim Special Edition
   - Fallout 4
   - Fallout New Vegas
   - Oblivion, Starfield, Enderal, and diverse other games

   Technical Architecture:
   - Clean separation between frontend and backend services
   - Powered by jackify-engine 0.3.x for Wabbajack-matching modlist installation
This commit is contained in:
Omni
2025-09-05 20:46:24 +01:00
commit cd591c14e3
445 changed files with 40398 additions and 0 deletions

106
hook-PySide6.py Normal file
View File

@@ -0,0 +1,106 @@
# Custom PyInstaller hook to optimize PySide6 by removing unused components
# This significantly reduces build size by excluding unnecessary Qt modules and tools
from PyInstaller.utils.hooks import collect_data_files, collect_submodules
import os
import shutil
from pathlib import Path
def hook(hook_api):
"""
PySide6 optimization hook - removes unused Qt modules and development tools
to reduce build size and improve startup performance.
"""
# Get the PySide6 data files
pyside_datas = collect_data_files('PySide6')
# Filter out unnecessary components
filtered_datas = []
for src, dst in pyside_datas:
# Skip development tools and scripts
if any(skip in src for skip in [
'/scripts/',
'/assistant/',
'/designer/',
'/linguist/',
'/lupdate',
'/lrelease',
'/qmllint',
'/qmlformat',
'/qmlls',
'/qsb',
'/svgtoqml',
'/balsam',
'/balsamui'
]):
continue
# Skip unused Qt modules (keep only what Jackify uses)
if any(skip in src for skip in [
'Qt3D',
'QtBluetooth',
'QtCharts',
'QtConcurrent', # Keep this one - might be needed
'QtDataVisualization',
'QtDBus',
'QtDesigner',
'QtGraphs',
'QtHelp',
'QtHttpServer',
'QtLocation',
'QtMultimedia',
'QtNfc',
'QtOpenGL', # Keep this one - might be needed by QtWidgets
'QtPdf',
'QtPositioning',
'QtPrintSupport',
'QtQml',
'QtQuick',
'QtRemoteObjects',
'QtScxml',
'QtSensors',
'QtSerial',
'QtSpatialAudio',
'QtSql',
'QtStateMachine',
'QtSvg',
'QtTest',
'QtTextToSpeech',
'QtWeb',
'QtXml',
'QtNetworkAuth',
'QtUiTools'
]):
continue
# Keep core modules that Jackify uses
if any(keep in src for keep in [
'QtCore',
'QtGui',
'QtWidgets',
'QtNetwork'
]):
filtered_datas.append((src, dst))
continue
# Add the filtered data files
hook_api.add_datas(filtered_datas)
# Also filter submodules to exclude unused ones
pyside_modules = collect_submodules('PySide6')
filtered_modules = []
for module in pyside_modules:
# Keep only core modules
if any(keep in module for keep in [
'PySide6.QtCore',
'PySide6.QtGui',
'PySide6.QtWidgets',
'PySide6.QtNetwork'
]):
filtered_modules.append(module)
# Add the filtered modules
hook_api.add_imports(*filtered_modules)