From 1356a7e5b2db2c7cb46f0c93aed443830898d229 Mon Sep 17 00:00:00 2001
From: LisoUseInAIKyrios <118716522+LisoUseInAIKyrios@users.noreply.github.com>
Date: Mon, 20 Oct 2025 10:35:49 +0400
Subject: [PATCH] add 20.31+ bold icons setting
---
.../patches/NavigationButtonsPatch.java | 13 +++++++++++--
.../extension/youtube/settings/Settings.java | 1 +
.../layout/buttons/navigation/Fingerprints.kt | 12 +++++++++++-
.../navigation/NavigationButtonsPatch.kt | 18 ++++++++++++++++++
.../resources/addresources/values/strings.xml | 3 +++
5 files changed, 44 insertions(+), 3 deletions(-)
diff --git a/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/NavigationButtonsPatch.java b/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/NavigationButtonsPatch.java
index e5ec52b77..ded0512a9 100644
--- a/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/NavigationButtonsPatch.java
+++ b/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/NavigationButtonsPatch.java
@@ -5,12 +5,11 @@ import static app.revanced.extension.youtube.shared.NavigationBar.NavigationButt
import android.os.Build;
import android.view.View;
+import android.widget.TextView;
import java.util.EnumMap;
import java.util.Map;
-import android.widget.TextView;
-
import app.revanced.extension.shared.Utils;
import app.revanced.extension.youtube.settings.Settings;
@@ -39,6 +38,9 @@ public final class NavigationButtonsPatch {
private static final Boolean DISABLE_TRANSLUCENT_NAVIGATION_BAR_DARK
= Settings.DISABLE_TRANSLUCENT_NAVIGATION_BAR_DARK.get();
+ private static final Boolean NAVIGATION_BAR_DISABLE_BOLD_ICONS
+ = Settings.NAVIGATION_BAR_DISABLE_BOLD_ICONS.get();
+
/**
* Injection point.
*/
@@ -69,6 +71,13 @@ public final class NavigationButtonsPatch {
return Settings.NAVIGATION_BAR_ANIMATIONS.get();
}
+ /**
+ * Injection point.
+ */
+ public static boolean useBoldIcons(boolean original) {
+ return !NAVIGATION_BAR_DISABLE_BOLD_ICONS;
+ }
+
/**
* Injection point.
*/
diff --git a/extensions/youtube/src/main/java/app/revanced/extension/youtube/settings/Settings.java b/extensions/youtube/src/main/java/app/revanced/extension/youtube/settings/Settings.java
index c821dd45d..997b32bf7 100644
--- a/extensions/youtube/src/main/java/app/revanced/extension/youtube/settings/Settings.java
+++ b/extensions/youtube/src/main/java/app/revanced/extension/youtube/settings/Settings.java
@@ -285,6 +285,7 @@ public class Settings extends BaseSettings {
public static final BooleanSetting SWITCH_CREATE_WITH_NOTIFICATIONS_BUTTON = new BooleanSetting("revanced_switch_create_with_notifications_button", TRUE, true,
"revanced_switch_create_with_notifications_button_user_dialog_message");
public static final BooleanSetting NAVIGATION_BAR_ANIMATIONS = new BooleanSetting("revanced_navigation_bar_animations", FALSE);
+ public static final BooleanSetting NAVIGATION_BAR_DISABLE_BOLD_ICONS = new BooleanSetting("revanced_navigation_bar_disable_bold_icons", TRUE, true);
public static final BooleanSetting DISABLE_TRANSLUCENT_STATUS_BAR = new BooleanSetting("revanced_disable_translucent_status_bar", FALSE, true,
"revanced_disable_translucent_status_bar_user_dialog_message");
public static final BooleanSetting DISABLE_TRANSLUCENT_NAVIGATION_BAR_LIGHT = new BooleanSetting("revanced_disable_translucent_navigation_bar_light", FALSE, true);
diff --git a/patches/src/main/kotlin/app/revanced/patches/youtube/layout/buttons/navigation/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/youtube/layout/buttons/navigation/Fingerprints.kt
index 49868a731..61495eced 100644
--- a/patches/src/main/kotlin/app/revanced/patches/youtube/layout/buttons/navigation/Fingerprints.kt
+++ b/patches/src/main/kotlin/app/revanced/patches/youtube/layout/buttons/navigation/Fingerprints.kt
@@ -65,4 +65,14 @@ internal val translucentNavigationButtonsSystemFeatureFlagFingerprint by fingerp
instructions(
literal(45632194L) // Translucent system buttons feature flag.
)
-}
\ No newline at end of file
+}
+
+// Flag is present in 20.23, but icons are missing and forcing bold icons crashes the app.
+internal val boldIconsFeatureFlagFingerprint by fingerprint {
+ accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL)
+ returns("Z")
+ parameters()
+ instructions(
+ literal(45685201L)
+ )
+}
diff --git a/patches/src/main/kotlin/app/revanced/patches/youtube/layout/buttons/navigation/NavigationButtonsPatch.kt b/patches/src/main/kotlin/app/revanced/patches/youtube/layout/buttons/navigation/NavigationButtonsPatch.kt
index 7cc05190c..72932e8c0 100644
--- a/patches/src/main/kotlin/app/revanced/patches/youtube/layout/buttons/navigation/NavigationButtonsPatch.kt
+++ b/patches/src/main/kotlin/app/revanced/patches/youtube/layout/buttons/navigation/NavigationButtonsPatch.kt
@@ -14,6 +14,7 @@ import app.revanced.patches.youtube.misc.navigation.hookNavigationButtonCreated
import app.revanced.patches.youtube.misc.navigation.navigationBarHookPatch
import app.revanced.patches.youtube.misc.playservice.is_19_25_or_greater
import app.revanced.patches.youtube.misc.playservice.is_20_15_or_greater
+import app.revanced.patches.youtube.misc.playservice.is_20_31_or_greater
import app.revanced.patches.youtube.misc.playservice.versionCheckPatch
import app.revanced.patches.youtube.misc.settings.PreferenceScreen
import app.revanced.patches.youtube.misc.settings.settingsPatch
@@ -72,6 +73,12 @@ val navigationButtonsPatch = bytecodePatch(
)
}
+ if (is_20_31_or_greater) {
+ PreferenceScreen.GENERAL_LAYOUT.addPreferences(
+ SwitchPreference("revanced_navigation_bar_disable_bold_icons")
+ )
+ }
+
PreferenceScreen.GENERAL_LAYOUT.addPreferences(
PreferenceScreenPreference(
key = "revanced_navigation_buttons_screen",
@@ -146,5 +153,16 @@ val navigationButtonsPatch = bytecodePatch(
)
}
}
+
+ // Bold icon resources are found starting in 20.23, but many YT icons are not bold.
+ // 20.31 is the first version that seems to have all the bold icons.
+ if (is_20_31_or_greater) {
+ boldIconsFeatureFlagFingerprint.let {
+ it.method.insertLiteralOverride(
+ it.instructionMatches.first().index,
+ "$EXTENSION_CLASS_DESCRIPTOR->useBoldIcons(Z)Z"
+ )
+ }
+ }
}
}
diff --git a/patches/src/main/resources/addresources/values/strings.xml b/patches/src/main/resources/addresources/values/strings.xml
index b458bed75..a891e976b 100644
--- a/patches/src/main/resources/addresources/values/strings.xml
+++ b/patches/src/main/resources/addresources/values/strings.xml
@@ -792,6 +792,9 @@ If changing this setting does not take effect, try switching to Incognito mode."
Enable navigation bar animations
Navigation transitions are animated
Navigation transitions are not animated
+ Disable bold icons
+ Icons are not bold
+ Icons are bold
Disable translucent status bar
Status bar is opaque
Status bar is opaque or translucent