diff --git a/extensions/shared/src/main/java/app/revanced/extension/youtube/patches/shorts/ShortsPatch.java b/extensions/shared/src/main/java/app/revanced/extension/youtube/patches/shorts/ShortsPatch.java
index ee598aacd..9125a2138 100644
--- a/extensions/shared/src/main/java/app/revanced/extension/youtube/patches/shorts/ShortsPatch.java
+++ b/extensions/shared/src/main/java/app/revanced/extension/youtube/patches/shorts/ShortsPatch.java
@@ -207,4 +207,8 @@ public class ShortsPatch {
);
}
+ public static boolean restoreShortsOldPlayerLayout() {
+ return !Settings.RESTORE_SHORTS_OLD_PLAYER_LAYOUT.get();
+ }
+
}
diff --git a/extensions/shared/src/main/java/app/revanced/extension/youtube/settings/Settings.java b/extensions/shared/src/main/java/app/revanced/extension/youtube/settings/Settings.java
index f8ec174c3..04c9a60f3 100644
--- a/extensions/shared/src/main/java/app/revanced/extension/youtube/settings/Settings.java
+++ b/extensions/shared/src/main/java/app/revanced/extension/youtube/settings/Settings.java
@@ -492,6 +492,7 @@ public class Settings extends BaseSettings {
public static final BooleanSetting HIDE_SHORTS_NAVIGATION_BAR = new BooleanSetting("revanced_hide_shorts_navigation_bar", FALSE, true);
public static final IntegerSetting SHORTS_NAVIGATION_BAR_HEIGHT_PERCENTAGE = new IntegerSetting("revanced_shorts_navigation_bar_height_percentage", 45, true, parent(HIDE_SHORTS_NAVIGATION_BAR));
public static final BooleanSetting REPLACE_CHANNEL_HANDLE = new BooleanSetting("revanced_replace_channel_handle", FALSE, true);
+ public static final BooleanSetting RESTORE_SHORTS_OLD_PLAYER_LAYOUT = new BooleanSetting("revanced_restore_shorts_old_player_layout", FALSE, true);
// PreferenceScreen: Swipe controls
public static final BooleanSetting ENABLE_SWIPE_BRIGHTNESS = new BooleanSetting("revanced_enable_swipe_brightness", TRUE, true);
diff --git a/patches/src/main/kotlin/app/revanced/patches/youtube/shorts/components/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/youtube/shorts/components/Fingerprints.kt
index 7f281b150..3ebc3e3db 100644
--- a/patches/src/main/kotlin/app/revanced/patches/youtube/shorts/components/Fingerprints.kt
+++ b/patches/src/main/kotlin/app/revanced/patches/youtube/shorts/components/Fingerprints.kt
@@ -177,3 +177,13 @@ internal val shortsToolBarFingerprint = legacyFingerprint(
method.parameterTypes.firstOrNull() == "Z"
}
)
+
+internal const val FULLSCREEN_FEATURE_FLAG = 45398938L
+
+internal val shortsFullscreenFeatureFingerprint = legacyFingerprint(
+ name = "shortsFullscreenFeatureFingerprint",
+ returnType = "Z",
+ accessFlags = AccessFlags.PUBLIC or AccessFlags.FINAL,
+ literals = listOf(FULLSCREEN_FEATURE_FLAG),
+)
+
diff --git a/patches/src/main/kotlin/app/revanced/patches/youtube/shorts/components/ShortsComponentPatch.kt b/patches/src/main/kotlin/app/revanced/patches/youtube/shorts/components/ShortsComponentPatch.kt
index e68949a0e..8d9bbc34c 100644
--- a/patches/src/main/kotlin/app/revanced/patches/youtube/shorts/components/ShortsComponentPatch.kt
+++ b/patches/src/main/kotlin/app/revanced/patches/youtube/shorts/components/ShortsComponentPatch.kt
@@ -864,6 +864,18 @@ val shortsComponentPatch = bytecodePatch(
// endregion
+ // region patch for restore shorts old player layout
+
+ if (!is_19_25_or_greater) {
+ shortsFullscreenFeatureFingerprint.injectLiteralInstructionBooleanCall(
+ FULLSCREEN_FEATURE_FLAG,
+ "$SHORTS_CLASS_DESCRIPTOR->restoreShortsOldPlayerLayout()Z"
+ )
+ settingArray += "SETTINGS: RESTORE_SHORTS_OLD_PLAYER_LAYOUT"
+ }
+
+ // endregion
+
addLithoFilter(BUTTON_FILTER_CLASS_DESCRIPTOR)
addLithoFilter(SHELF_FILTER_CLASS_DESCRIPTOR)
addLithoFilter(RETURN_YOUTUBE_CHANNEL_NAME_FILTER_CLASS_DESCRIPTOR)
diff --git a/patches/src/main/resources/youtube/settings/host/values/strings.xml b/patches/src/main/resources/youtube/settings/host/values/strings.xml
index 2a9d6a5b5..28863227d 100644
--- a/patches/src/main/resources/youtube/settings/host/values/strings.xml
+++ b/patches/src/main/resources/youtube/settings/host/values/strings.xml
@@ -1432,6 +1432,10 @@ Limitations:
Replace channel handle
Channel name is used.
Channel handle is used.
+ Restore old player layout
+ "Old player layout is used.
+No margins on top and bottom of player."
+ Old player layout is not used.
diff --git a/patches/src/main/resources/youtube/settings/xml/revanced_prefs.xml b/patches/src/main/resources/youtube/settings/xml/revanced_prefs.xml
index 472e600ce..0b04b9868 100644
--- a/patches/src/main/resources/youtube/settings/xml/revanced_prefs.xml
+++ b/patches/src/main/resources/youtube/settings/xml/revanced_prefs.xml
@@ -617,7 +617,12 @@
-
+ SETTINGS: SHORTS_COMPONENTS -->
+
+
+
+