mirror of
https://github.com/Omni-guides/Jackify.git
synced 2026-01-17 11:37:01 +01:00
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:
106
hook-PySide6.py
Normal file
106
hook-PySide6.py
Normal 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)
|
||||
Reference in New Issue
Block a user