diff --git a/devicemanagement/device_manager.py b/devicemanagement/device_manager.py
index 85d7f49..1cb0d45 100644
--- a/devicemanagement/device_manager.py
+++ b/devicemanagement/device_manager.py
@@ -56,6 +56,7 @@ class DeviceManager:
self.apply_over_wifi = False
self.auto_reboot = True
self.allow_risky_tweaks = False
+ self.windows_path_fix = True
self.show_all_spoofable_models = False
self.skip_setup = True
self.supervised = False
@@ -329,7 +330,12 @@ class DeviceManager:
uses_domains = True
elif isinstance(tweak, PosterboardTweak):
tmp_pb_dir = TemporaryDirectory()
- tweak.apply_tweak(files_to_restore=files_to_restore, output_dir=tmp_pb_dir.name)
+ tweak.apply_tweak(
+ files_to_restore=files_to_restore, output_dir=tmp_pb_dir.name,
+ windows_path_fix=self.windows_path_fix
+ )
+ if tweak.enabled:
+ uses_domains = True
else:
if gestalt_plist != None:
gestalt_plist = tweak.apply_tweak(gestalt_plist)
diff --git a/gui/main_window.py b/gui/main_window.py
index 30d765f..c63bfd8 100644
--- a/gui/main_window.py
+++ b/gui/main_window.py
@@ -1,5 +1,6 @@
from PySide6 import QtCore, QtWidgets, QtGui
from enum import Enum
+from os import name as os_name
import webbrowser
import plistlib
@@ -18,7 +19,7 @@ from tweaks.tweaks import tweaks
from tweaks.custom_gestalt_tweaks import CustomGestaltTweaks, ValueTypeStrings
from tweaks.daemons_tweak import Daemon
-App_Version = "5.0"
+App_Version = "5.0.1"
App_Build = 0
class Page(Enum):
@@ -183,6 +184,11 @@ class MainWindow(QtWidgets.QMainWindow):
self.ui.allowWifiApplyingChk.toggled.connect(self.on_allowWifiApplyingChk_toggled)
self.ui.autoRebootChk.toggled.connect(self.on_autoRebootChk_toggled)
self.ui.showRiskyChk.toggled.connect(self.on_showRiskyChk_toggled)
+ # windows path fix toggle
+ if os_name == "nt":
+ self.ui.windowsPathFixChk.toggled.connect(self.on_windowsPathFixChk_toggled)
+ else:
+ self.ui.windowsPathFixChk.hide()
self.ui.showAllSpoofableChk.toggled.connect(self.on_showAllSpoofableChk_toggled)
self.ui.revertRdarChk.toggled.connect(self.on_revertRdarChk_toggled)
@@ -1013,6 +1019,10 @@ class MainWindow(QtWidgets.QMainWindow):
else:
self.ui.advancedPageBtn.hide()
self.ui.resetPRBExtBtn.hide()
+ def on_windowsPathFixChk_toggled(self, checked: bool):
+ self.device_manager.windows_path_fix = checked
+ # save the setting
+ self.settings.setValue("windows_path_fix", checked)
def on_showAllSpoofableChk_toggled(self, checked: bool):
self.device_manager.show_all_spoofable_models = checked
# save the setting
diff --git a/qt/mainwindow.ui b/qt/mainwindow.ui
index 88927d9..68f4e45 100644
--- a/qt/mainwindow.ui
+++ b/qt/mainwindow.ui
@@ -243,7 +243,7 @@ QSlider::tick:horizontal {
}
-
+
:/icon/phone.svg:/icon/phone.svg
@@ -308,7 +308,7 @@ QSlider::tick:horizontal {
}
-
+
:/icon/arrow-clockwise.svg:/icon/arrow-clockwise.svg
@@ -415,7 +415,7 @@ QSlider::tick:horizontal {
Home
-
+
:/icon/house.svg:/icon/house.svg
@@ -462,7 +462,7 @@ QSlider::tick:horizontal {
Mobile Gestalt
-
+
:/icon/iphone-island.svg:/icon/iphone-island.svg
@@ -506,7 +506,7 @@ QSlider::tick:horizontal {
Feature Flags
-
+
:/icon/flag.svg:/icon/flag.svg
@@ -535,7 +535,7 @@ QSlider::tick:horizontal {
Eligibility
-
+
:/icon/geo-alt.svg:/icon/geo-alt.svg
@@ -564,7 +564,7 @@ QSlider::tick:horizontal {
Springboard Options
-
+
:/icon/app-indicator.svg:/icon/app-indicator.svg
@@ -593,7 +593,7 @@ QSlider::tick:horizontal {
Internal Options
-
+
:/icon/hdd.svg:/icon/hdd.svg
@@ -625,7 +625,7 @@ QSlider::tick:horizontal {
Daemons
-
+
:/icon/toggles.svg:/icon/toggles.svg
@@ -657,7 +657,7 @@ QSlider::tick:horizontal {
Posterboard
-
+
:/icon/wallpaper.svg:/icon/wallpaper.svg
@@ -686,7 +686,7 @@ QSlider::tick:horizontal {
Risky Options
-
+
:/icon/star.svg:/icon/star.svg
@@ -730,7 +730,7 @@ QSlider::tick:horizontal {
Apply
-
+
:/icon/check-circle.svg:/icon/check-circle.svg
@@ -759,7 +759,7 @@ QSlider::tick:horizontal {
Settings
-
+
:/icon/gear.svg:/icon/gear.svg
@@ -873,7 +873,7 @@ QSlider::tick:horizontal {
}
-
+
:/icon/phone.svg:/icon/phone.svg
@@ -1002,7 +1002,7 @@ QSlider::tick:horizontal {
...
-
+
:/credits/big_nugget.png:/credits/big_nugget.png
@@ -1089,7 +1089,7 @@ QSlider::tick:horizontal {
Join the Discord
-
+
:/icon/discord.svg:/icon/discord.svg
@@ -1103,7 +1103,7 @@ QSlider::tick:horizontal {
Star on Github
-
+
:/icon/star.svg:/icon/star.svg
@@ -1207,7 +1207,7 @@ QSlider::tick:horizontal {
LeminLimez
-
+
:/credits/LeminLimez.png:/credits/LeminLimez.png
@@ -1234,7 +1234,7 @@ QToolButton:pressed {
...
-
+
:/icon/twitter.svg:/icon/twitter.svg
@@ -1258,7 +1258,7 @@ QToolButton:pressed {
...
-
+
:/icon/github.svg:/icon/github.svg
@@ -1283,7 +1283,7 @@ QToolButton:pressed {
...
-
+
:/icon/currency-dollar.svg:/icon/currency-dollar.svg
@@ -1683,7 +1683,7 @@ QToolButton:pressed {
}
-
+
:/icon/iphone-island.svg:/icon/iphone-island.svg
@@ -2221,7 +2221,7 @@ Note: OTA updates will be broken until this is disabled.
Add Key
-
+
:/icon/plus.svg:/icon/plus.svg
@@ -2338,7 +2338,7 @@ what you are doing.
}
-
+
:/icon/flag.svg:/icon/flag.svg
@@ -2570,7 +2570,7 @@ Only works on iOS 18.0 beta 1-2.
}
-
+
:/icon/geo-alt.svg:/icon/geo-alt.svg
@@ -3210,7 +3210,7 @@ QComboBox QAbstractItemView::item:hover {
}
-
+
:/icon/app-indicator.svg:/icon/app-indicator.svg
@@ -3462,7 +3462,7 @@ QComboBox QAbstractItemView::item:hover {
}
-
+
:/icon/hdd.svg:/icon/hdd.svg
@@ -3785,7 +3785,7 @@ QComboBox QAbstractItemView::item:hover {
}
-
+
:/icon/toggles.svg:/icon/toggles.svg
@@ -4144,7 +4144,7 @@ To work properly, also disable the daemon using the toggle above.
}
-
+
:/icon/wallpaper.svg:/icon/wallpaper.svg
@@ -4209,7 +4209,7 @@ To work properly, also disable the daemon using the toggle above.
Find Wallpapers
-
+
:/icon/globe.svg:/icon/globe.svg
@@ -4235,7 +4235,7 @@ To work properly, also disable the daemon using the toggle above.
...
-
+
:/icon/questionmark.circle.svg:/icon/questionmark.circle.svg
@@ -4312,7 +4312,7 @@ To work properly, also disable the daemon using the toggle above.
Import Files (.tendies)
-
+
:/icon/import.svg:/icon/import.svg
@@ -4393,7 +4393,7 @@ To work properly, also disable the daemon using the toggle above.
Clear Collections Wallpapers
-
+
:/icon/arrow.clockwise.svg:/icon/arrow.clockwise.svg
@@ -4412,7 +4412,7 @@ Warning: This will remove all of your wallpapers and will restrict you from addi
Remove All Wallpapers
-
+
:/icon/arrow.clockwise.svg:/icon/arrow.clockwise.svg
@@ -4487,7 +4487,7 @@ Warning: This will remove all of your wallpapers and will restrict you from addi
}
-
+
:/icon/star.svg:/icon/star.svg
@@ -4870,7 +4870,7 @@ Warning: Disabling will cause the battery to show "Unknown Part" or &q
}
-
+
:/icon/check-circle.svg:/icon/check-circle.svg
@@ -4994,7 +4994,7 @@ Warning: Disabling will cause the battery to show "Unknown Part" or &q
Choose Gestalt File
-
+
:/icon/folder.svg:/icon/folder.svg
@@ -5025,7 +5025,7 @@ Warning: Disabling will cause the battery to show "Unknown Part" or &q
Apply Changes
-
+
:/icon/check-circle.svg:/icon/check-circle.svg
@@ -5207,7 +5207,7 @@ Warning: Disabling will cause the battery to show "Unknown Part" or &q
}
-
+
:/icon/gear.svg:/icon/gear.svg
@@ -5344,6 +5344,16 @@ Warning: Disabling will cause the battery to show "Unknown Part" or &q
+ -
+
+
+ Use Windows Path Fix (for Posterboard)
+
+
+ true
+
+
+
-
@@ -5544,7 +5554,7 @@ Warning: Disabling will cause the battery to show "Unknown Part" or &q
}
-
+
:/icon/geo-alt.svg:/icon/geo-alt.svg
@@ -5829,7 +5839,7 @@ Warning: Disabling will cause the battery to show "Unknown Part" or &q
}
-
+
:/icon/pencil.svg:/icon/pencil.svg
@@ -5960,7 +5970,7 @@ Warning: Disabling will cause the battery to show "Unknown Part" or &q
Import .cowperation
-
+
:/icon/import.svg:/icon/import.svg
@@ -5995,7 +6005,7 @@ Warning: Disabling will cause the battery to show "Unknown Part" or &q
New Operation
-
+
:/icon/plus.svg:/icon/plus.svg
@@ -6076,7 +6086,7 @@ Warning: Disabling will cause the battery to show "Unknown Part" or &q
}
-
+
:/icon/compass.svg:/icon/compass.svg
@@ -6212,7 +6222,7 @@ Warning: Disabling will cause the battery to show "Unknown Part" or &q
}
-
+
:/icon/iphone-island.svg:/icon/iphone-island.svg
@@ -6306,7 +6316,7 @@ Warning: Disabling will cause the battery to show "Unknown Part" or &q
...
-
+
:/icon/folder.svg:/icon/folder.svg
@@ -6317,7 +6327,7 @@ Warning: Disabling will cause the battery to show "Unknown Part" or &q
...
-
+
:/icon/file-earmark-zip.svg:/icon/file-earmark-zip.svg
diff --git a/qt/mainwindow_ui.py b/qt/mainwindow_ui.py
index 8d78de5..63b410d 100644
--- a/qt/mainwindow_ui.py
+++ b/qt/mainwindow_ui.py
@@ -2776,6 +2776,12 @@ class Ui_Nugget(object):
self._21.addWidget(self.showRiskyChk)
+ self.windowsPathFixChk = QCheckBox(self.settingsPageContent)
+ self.windowsPathFixChk.setObjectName(u"windowsPathFixChk")
+ self.windowsPathFixChk.setChecked(True)
+
+ self._21.addWidget(self.windowsPathFixChk)
+
self.showAllSpoofableChk = QCheckBox(self.settingsPageContent)
self.showAllSpoofableChk.setObjectName(u"showAllSpoofableChk")
@@ -3735,6 +3741,7 @@ class Ui_Nugget(object):
self.allowWifiApplyingChk.setText(QCoreApplication.translate("Nugget", u"Allow Applying Over WiFi", None))
self.autoRebootChk.setText(QCoreApplication.translate("Nugget", u"Auto Reboot After Applying", None))
self.showRiskyChk.setText(QCoreApplication.translate("Nugget", u"Show Risky Tweak Options", None))
+ self.windowsPathFixChk.setText(QCoreApplication.translate("Nugget", u"Use Windows Path Fix (for Posterboard)", None))
#if QT_CONFIG(tooltip)
self.showAllSpoofableChk.setToolTip(QCoreApplication.translate("Nugget", u"Show models for other device types in the AI device spoofing tab.", None))
#endif // QT_CONFIG(tooltip)
diff --git a/qt/ui_mainwindow.py b/qt/ui_mainwindow.py
index b38b08e..9fd3e00 100644
--- a/qt/ui_mainwindow.py
+++ b/qt/ui_mainwindow.py
@@ -2776,6 +2776,12 @@ class Ui_Nugget(object):
self._21.addWidget(self.showRiskyChk)
+ self.windowsPathFixChk = QCheckBox(self.settingsPageContent)
+ self.windowsPathFixChk.setObjectName(u"windowsPathFixChk")
+ self.windowsPathFixChk.setChecked(True)
+
+ self._21.addWidget(self.windowsPathFixChk)
+
self.showAllSpoofableChk = QCheckBox(self.settingsPageContent)
self.showAllSpoofableChk.setObjectName(u"showAllSpoofableChk")
@@ -3735,6 +3741,7 @@ class Ui_Nugget(object):
self.allowWifiApplyingChk.setText(QCoreApplication.translate("Nugget", u"Allow Applying Over WiFi", None))
self.autoRebootChk.setText(QCoreApplication.translate("Nugget", u"Auto Reboot After Applying", None))
self.showRiskyChk.setText(QCoreApplication.translate("Nugget", u"Show Risky Tweak Options", None))
+ self.windowsPathFixChk.setText(QCoreApplication.translate("Nugget", u"Use Windows Path Fix (for Posterboard)", None))
#if QT_CONFIG(tooltip)
self.showAllSpoofableChk.setToolTip(QCoreApplication.translate("Nugget", u"Show models for other device types in the AI device spoofing tab.", None))
#endif // QT_CONFIG(tooltip)
diff --git a/tweaks/posterboard_tweak.py b/tweaks/posterboard_tweak.py
index c6f3e06..86aed2f 100644
--- a/tweaks/posterboard_tweak.py
+++ b/tweaks/posterboard_tweak.py
@@ -151,25 +151,29 @@ class PosterboardTweak(Tweak):
else:
self.recursive_add(files_to_restore, os.path.join(curr_path, folder), isAdding=False)
- def apply_tweak(self, files_to_restore: list[FileToRestore], output_dir: str):
+ def apply_tweak(self, files_to_restore: list[FileToRestore], output_dir: str, windows_path_fix: bool):
# unzip the file
if not self.enabled:
return
if self.resetting:
# null out the folder
- file_path = ""
+ file_paths = []
if self.resetType == 0:
# resetting descriptors
- file_path = "/61/Extensions/com.apple.WallpaperKit.CollectionsPoster/descriptors"
- files_to_restore.append(FileToRestore(
- contents=b"",
- restore_path=f"/Library/Application Support/PRBPosterExtensionDataStore{file_path}",
- domain=f"AppDomain-{self.bundle_id}"
- ))
+ file_paths.append("/61/Extensions/com.apple.WallpaperKit.CollectionsPoster/descriptors")
+ file_paths.append("/61/Extensions/com.apple.MercuryPoster/descriptors")
+ else:
+ file_paths.append("")
+ for file_path in file_paths:
+ files_to_restore.append(FileToRestore(
+ contents=b"",
+ restore_path=f"/Library/Application Support/PRBPosterExtensionDataStore{file_path}",
+ domain=f"AppDomain-{self.bundle_id}"
+ ))
return
elif self.tendies == None or len(self.tendies) == 0:
return
- if os.name == "nt":
+ if os.name == "nt" and windows_path_fix:
# try to get past directory name limit on windows
output_dir = "\\\\?\\" + output_dir
for tendie in self.tendies: