diff --git a/lawnchair/res/values/config.xml b/lawnchair/res/values/config.xml
index 282745c33d..35b15eab75 100644
--- a/lawnchair/res/values/config.xml
+++ b/lawnchair/res/values/config.xml
@@ -128,6 +128,7 @@
- 1.0
- 1.0
+ - 1.0
- 1.0
- 1.0
- 1.0
diff --git a/lawnchair/res/values/strings.xml b/lawnchair/res/values/strings.xml
index 4f63fc63d3..5ff4ba571c 100644
--- a/lawnchair/res/values/strings.xml
+++ b/lawnchair/res/values/strings.xml
@@ -597,7 +597,8 @@
- Icon background opacity
+ Icon preview background opacity
+ Folder background opacity
Icon background color
Maximum folder columns
diff --git a/lawnchair/src/app/lawnchair/preferences2/PreferenceManager2.kt b/lawnchair/src/app/lawnchair/preferences2/PreferenceManager2.kt
index 550220fa8c..b7a687543f 100644
--- a/lawnchair/src/app/lawnchair/preferences2/PreferenceManager2.kt
+++ b/lawnchair/src/app/lawnchair/preferences2/PreferenceManager2.kt
@@ -341,6 +341,12 @@ class PreferenceManager2 private constructor(private val context: Context) : Pre
onSet = { reloadHelper.reloadIcons() },
)
+ val folderBackgroundOpacity = preference(
+ key = floatPreferencesKey(name = "folder_background_opacity"),
+ defaultValue = resourceProvider.getFloat(R.dimen.config_default_folder_background_opacity),
+ onSet = { reloadHelper.reloadIcons() },
+ )
+
val showIconLabelsOnHomeScreen = preference(
key = booleanPreferencesKey(name = "show_icon_labels_on_home_screen"),
defaultValue = context.resources.getBoolean(R.bool.config_default_show_icon_labels_on_home_screen),
diff --git a/lawnchair/src/app/lawnchair/ui/preferences/destinations/FolderPreferences.kt b/lawnchair/src/app/lawnchair/ui/preferences/destinations/FolderPreferences.kt
index 061c200b3e..ce0428a985 100644
--- a/lawnchair/src/app/lawnchair/ui/preferences/destinations/FolderPreferences.kt
+++ b/lawnchair/src/app/lawnchair/ui/preferences/destinations/FolderPreferences.kt
@@ -51,6 +51,13 @@ fun FolderPreferences(
valueRange = 0F..1F,
showAsPercentage = true,
)
+ SliderPreference(
+ label = stringResource(id = R.string.folder_bg_opacity_label),
+ adapter = prefs2.folderBackgroundOpacity.getAdapter(),
+ step = 0.1F,
+ valueRange = 0F..1F,
+ showAsPercentage = true,
+ )
}
PreferenceGroup(heading = stringResource(id = R.string.grid)) {
SliderPreference(
diff --git a/lawnchair/src/app/lawnchair/util/LawnchairUtils.kt b/lawnchair/src/app/lawnchair/util/LawnchairUtils.kt
index 26cf5bd2b5..2839a1ed4d 100644
--- a/lawnchair/src/app/lawnchair/util/LawnchairUtils.kt
+++ b/lawnchair/src/app/lawnchair/util/LawnchairUtils.kt
@@ -169,6 +169,11 @@ fun getFolderPreviewAlpha(context: Context): Int {
return (prefs2.folderPreviewBackgroundOpacity.firstBlocking() * 255).toInt()
}
+fun getFolderBackgroundAlpha(context: Context): Int {
+ val prefs2 = PreferenceManager2.getInstance(context)
+ return (prefs2.folderBackgroundOpacity.firstBlocking() * 255).toInt()
+}
+
fun getAllAppsScrimColor(context: Context): Int {
val opacity = PreferenceManager.getInstance(context).drawerOpacity.get()
val scrimColor = ColorTokens.AllAppsScrimColor.resolveColor(context)
diff --git a/src/com/android/launcher3/folder/Folder.java b/src/com/android/launcher3/folder/Folder.java
index f004dc9f3a..9ee1c3b265 100644
--- a/src/com/android/launcher3/folder/Folder.java
+++ b/src/com/android/launcher3/folder/Folder.java
@@ -119,6 +119,7 @@ import java.util.stream.Stream;
import app.lawnchair.theme.drawable.DrawableTokens;
import app.lawnchair.util.EditTextExtensions;
+import app.lawnchair.util.LawnchairUtilsKt;
/**
* Represents a set of icons chosen by the user or generated by the system.
@@ -286,6 +287,8 @@ public class Folder extends AbstractFloatingView implements ClipPathView, DragSo
final int paddingLeftRight = dp.folderContentPaddingLeftRight;
mBackground = DrawableTokens.RoundRectFolder.resolve(getContext());
+ var alpha = LawnchairUtilsKt.getFolderBackgroundAlpha(getContext());
+ mBackground.setAlpha(alpha);
mContent = findViewById(R.id.folder_content);
mContent.setPadding(paddingLeftRight, dp.folderContentPaddingTop, paddingLeftRight, 0);