diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml
new file mode 100644
index 00000000000..0aa4d36bb9c
--- /dev/null
+++ b/.github/FUNDING.yml
@@ -0,0 +1 @@
+open_collective: lawnchair
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 6544213bfe1..3889360ed6f 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -38,10 +38,9 @@ jobs:
with:
distribution: 'zulu'
java-version: 21
- - uses: gradle/actions/setup-gradle@v3
+ - uses: gradle/actions/setup-gradle@v4
with:
cache-encryption-key: Da25KUVSE5jbGds2zXmfXw==
- gradle-home-cache-cleanup: true
- name: Write sign info
if: github.repository_owner == 'LawnchairLauncher'
run: |
@@ -70,9 +69,7 @@ jobs:
with:
distribution: 'zulu'
java-version: 21
- - uses: gradle/actions/setup-gradle@v3
- with:
- gradle-home-cache-cleanup: true
+ - uses: gradle/actions/setup-gradle@v4
- run: ./gradlew spotlessCheck
send-notifications:
diff --git a/.github/workflows/release_update.yml b/.github/workflows/release_update.yml
index 67498417f69..d92eb5a1cd3 100644
--- a/.github/workflows/release_update.yml
+++ b/.github/workflows/release_update.yml
@@ -31,9 +31,7 @@ jobs:
with:
distribution: 'zulu'
java-version: 21
- - uses: gradle/actions/setup-gradle@v3
- with:
- gradle-home-cache-cleanup: true
+ - uses: gradle/actions/setup-gradle@v4
- name: Write sign info
id: sign-release-apk
if: github.repository_owner == 'LawnchairLauncher'
@@ -71,7 +69,7 @@ jobs:
uses: softprops/action-gh-release@v2
with:
tag_name: ${{ github.event.inputs.tagName }}
- prerelease: ${{ github.events.inputs.prerelease }}
+ prerelease: ${{ github.event.inputs.prerelease }}
draft: true
body_path: ${{ github.workspace }}/GITHUB_CHANGELOG.md
files: artifacts/release-apk/${{ github.event.inputs.artifactName }}
diff --git a/baseline-profile/build.gradle b/baseline-profile/build.gradle
index cd04c10ca83..adf6c9eda6d 100644
--- a/baseline-profile/build.gradle
+++ b/baseline-profile/build.gradle
@@ -40,8 +40,8 @@ baselineProfile {
}
dependencies {
- implementation 'androidx.test.ext:junit:1.1.5'
- implementation 'androidx.test.espresso:espresso-core:3.5.1'
+ implementation 'androidx.test.ext:junit:1.2.1'
+ implementation 'androidx.test.espresso:espresso-core:3.6.1'
implementation 'androidx.test.uiautomator:uiautomator:2.3.0'
implementation 'androidx.benchmark:benchmark-macro-junit4:1.2.4'
}
diff --git a/build.gradle b/build.gradle
index b1346a3ff4d..6851a59b2f1 100644
--- a/build.gradle
+++ b/build.gradle
@@ -3,15 +3,15 @@ import com.android.build.gradle.api.AndroidBasePlugin
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
plugins {
- id 'com.android.application' version "8.5.0"
- id 'com.android.library' version "8.5.0" apply false
- id 'com.android.test' version '8.5.0' apply false
+ id 'com.android.application' version "8.5.2"
+ id 'com.android.library' version "8.5.2" apply false
+ id 'com.android.test' version '8.5.2' apply false
id 'androidx.baselineprofile' version '1.2.4'
- id 'org.jetbrains.kotlin.android' version "2.0.0"
- id 'org.jetbrains.kotlin.plugin.compose' version "2.0.0"
- id 'org.jetbrains.kotlin.plugin.parcelize' version "2.0.0"
- id 'org.jetbrains.kotlin.plugin.serialization' version "2.0.0"
- id "com.google.devtools.ksp" version "2.0.0-1.0.22"
+ id 'org.jetbrains.kotlin.android' version "2.0.10"
+ id 'org.jetbrains.kotlin.plugin.compose' version "2.0.10"
+ id 'org.jetbrains.kotlin.plugin.parcelize' version "2.0.10"
+ id 'org.jetbrains.kotlin.plugin.serialization' version "2.0.10"
+ id "com.google.devtools.ksp" version "2.0.10-1.0.24"
id 'com.google.protobuf' version "0.9.4"
id 'app.cash.licensee' version "1.11.0"
id 'dev.rikka.tools.refine' version "4.4.0"
@@ -42,7 +42,7 @@ allprojects {
}
plugins.withId('com.google.protobuf') {
- def protocVersion = '4.27.1'
+ def protocVersion = '4.27.3'
protobuf {
// Configure the protoc executable
protoc {
@@ -78,7 +78,7 @@ allprojects {
ext {
FRAMEWORK_PREBUILTS_DIR = "$rootDir/prebuilts/libs"
- daggerVersion = '2.51.1'
+ daggerVersion = '2.52'
addFrameworkJar = { String name ->
def frameworkJar = new File(FRAMEWORK_PREBUILTS_DIR, name)
@@ -164,7 +164,6 @@ android {
buildFeatures {
aidl true
buildConfig true
- compose true
resValues true
}
@@ -360,7 +359,7 @@ dependencies {
implementation "androidx.preference:preference-ktx:1.2.1"
implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.8.1'
- implementation 'org.jetbrains.kotlinx:kotlinx-serialization-json:1.7.0'
+ implementation 'org.jetbrains.kotlinx:kotlinx-serialization-json:1.7.1'
implementation "org.jetbrains.kotlinx:kotlinx-collections-immutable:0.3.7"
implementation 'com.github.ChickenHook:RestrictionBypass:2.2'
implementation 'dev.rikka.tools.refine:runtime:4.4.0'
@@ -375,12 +374,12 @@ dependencies {
implementation "androidx.compose.material:material-icons-extended"
implementation "androidx.compose.material:material"
implementation "androidx.compose.runtime:runtime-livedata"
- implementation 'androidx.compose.material3:material3:1.3.0-beta03'
- implementation 'androidx.compose.material3:material3-window-size-class:1.3.0-beta03'
+ implementation 'androidx.compose.material3:material3:1.3.0-beta05'
+ implementation 'androidx.compose.material3:material3-window-size-class:1.3.0-beta05'
implementation "androidx.constraintlayout:constraintlayout:2.1.4"
- implementation "androidx.activity:activity-compose:1.9.0"
- implementation "androidx.lifecycle:lifecycle-viewmodel-compose:2.8.2"
- implementation "androidx.navigation:navigation-compose:2.8.0-beta03"
+ implementation "androidx.activity:activity-compose:1.9.1"
+ implementation "androidx.lifecycle:lifecycle-viewmodel-compose:2.8.4"
+ implementation "androidx.navigation:navigation-compose:2.8.0-beta07"
implementation "androidx.palette:palette-ktx:1.0.0"
implementation "androidx.slice:slice-core:1.1.0-alpha02"
def accompanistVersion = '0.34.0'
@@ -390,7 +389,7 @@ dependencies {
implementation "com.google.android.material:material:1.12.0"
implementation "io.github.fornewid:material-motion-compose-core:1.2.1"
implementation 'dev.kdrag0n:colorkt:1.0.5'
- implementation 'io.coil-kt:coil-compose:2.6.0'
+ implementation 'io.coil-kt:coil-compose:2.7.0'
implementation 'me.xdrop:fuzzywuzzy:1.4.0'
def optoVersion = "1.0.18"
implementation "com.patrykmichalik.opto:domain:$optoVersion"
@@ -406,17 +405,22 @@ dependencies {
implementation "androidx.room:room-ktx:$roomVersion"
ksp "androidx.room:room-compiler:$roomVersion"
- implementation "com.github.topjohnwu.libsu:service:5.3.0"
+ implementation "com.github.topjohnwu.libsu:service:6.0.0"
// Persian Date
implementation 'com.github.samanzamani:PersianDate:1.7.1'
- implementation 'com.airbnb.android:lottie:6.4.1'
+ implementation 'com.airbnb.android:lottie:6.5.0'
+
+ // Compose drag and drop library
+ implementation 'sh.calvin.reorderable:reorderable:2.3.0'
// Smartspacer
- implementation('com.kieronquinn.smartspacer:sdk-client:1.0.10') {
+ implementation('com.kieronquinn.smartspacer:sdk-client:1.0.11') {
exclude group: "com.github.skydoves", module: "balloon"
}
+
+ implementation("com.github.android:renderscript-intrinsics-replacement-toolkit:b6363490c3")
}
ksp {
@@ -434,7 +438,7 @@ spotless {
kotlin {
target("lawnchair/src/**/*.kt")
ktlint().customRuleSets([
- "io.nlopez.compose.rules:ktlint:0.4.4",
+ "io.nlopez.compose.rules:ktlint:0.4.10",
]).editorConfigOverride([
"ktlint_compose_compositionlocal-allowlist": "disabled",
])
@@ -445,6 +449,8 @@ licensee {
allow("Apache-2.0")
allow("BSD-3-Clause")
allow("GPL-2.0-or-later")
+ allowDependency("com.github.topjohnwu.libsu", "core", "6.0.0")
+ allowDependency("com.github.topjohnwu.libsu", "service", "6.0.0")
allowUrl("https://github.com/patrykmichalik/opto/blob/master/LICENSE")
allowUrl("https://github.com/RikkaApps/HiddenApiRefinePlugin/blob/main/LICENSE")
allowUrl("https://opensource.org/licenses/mit-license.php")
diff --git a/compatLib/compatLibVS/src/main/java/app/lawnchair/compatlib/twelve/QuickstepCompatFactoryVS.java b/compatLib/compatLibVS/src/main/java/app/lawnchair/compatlib/twelve/QuickstepCompatFactoryVS.java
index c8a56869e19..0683015b2fc 100644
--- a/compatLib/compatLibVS/src/main/java/app/lawnchair/compatlib/twelve/QuickstepCompatFactoryVS.java
+++ b/compatLib/compatLibVS/src/main/java/app/lawnchair/compatlib/twelve/QuickstepCompatFactoryVS.java
@@ -30,11 +30,7 @@ public ActivityOptionsCompat getActivityOptionsCompat() {
@NonNull
@Override
public RemoteTransitionCompat getRemoteTransitionCompat() {
- try {
- return this::createRemoteTransition;
- } catch (Throwable t) {
- return super.getRemoteTransitionCompat();
- }
+ return this::createRemoteTransition;
}
// TODO remove this as it causing glitches on first launch opening/closing app
@@ -51,7 +47,8 @@ private RemoteTransition createRemoteTransition(
| InstantiationException
| InvocationTargetException
| NoSuchMethodException e) {
- throw new RuntimeException("Error creating RemoteTransitionCompat" + debugName, e);
+ return super.getRemoteTransitionCompat()
+ .getRemoteTransition(remoteTransition, appThread, debugName);
}
}
}
diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar
index e6441136f3d..2c3521197d7 100644
Binary files a/gradle/wrapper/gradle-wrapper.jar and b/gradle/wrapper/gradle-wrapper.jar differ
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
index 8a1f6b97f47..68e8816d71c 100644
--- a/gradle/wrapper/gradle-wrapper.properties
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -1,7 +1,7 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
-distributionSha256Sum=a4b4158601f8636cdeeab09bd76afb640030bb5b144aafe261a5e8af027dc612
-distributionUrl=https\://services.gradle.org/distributions/gradle-8.8-bin.zip
+distributionSha256Sum=d725d707bfabd4dfdc958c624003b3c80accc03f7037b5122c4b1d0ef15cecab
+distributionUrl=https\://services.gradle.org/distributions/gradle-8.9-bin.zip
networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME
diff --git a/gradlew b/gradlew
index b740cf13397..f5feea6d6b1 100755
--- a/gradlew
+++ b/gradlew
@@ -15,6 +15,8 @@
# See the License for the specific language governing permissions and
# limitations under the License.
#
+# SPDX-License-Identifier: Apache-2.0
+#
##############################################################################
#
@@ -84,7 +86,8 @@ done
# shellcheck disable=SC2034
APP_BASE_NAME=${0##*/}
# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036)
-APP_HOME=$( cd "${APP_HOME:-./}" > /dev/null && pwd -P ) || exit
+APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s
+' "$PWD" ) || exit
# Use the maximum available, or set MAX_FD != -1 to use that value.
MAX_FD=maximum
diff --git a/gradlew.bat b/gradlew.bat
index 25da30dbdee..9d21a21834d 100644
--- a/gradlew.bat
+++ b/gradlew.bat
@@ -13,6 +13,8 @@
@rem See the License for the specific language governing permissions and
@rem limitations under the License.
@rem
+@rem SPDX-License-Identifier: Apache-2.0
+@rem
@if "%DEBUG%"=="" @echo off
@rem ##########################################################################
diff --git a/lawnchair/AndroidManifest.xml b/lawnchair/AndroidManifest.xml
index e7de5f4cb3b..5d56727bb4b 100644
--- a/lawnchair/AndroidManifest.xml
+++ b/lawnchair/AndroidManifest.xml
@@ -25,6 +25,7 @@
+
diff --git a/lawnchair/res/drawable-ru/ic_yandex.xml b/lawnchair/res/drawable-ru/ic_yandex.xml
new file mode 100644
index 00000000000..c03bd29faae
--- /dev/null
+++ b/lawnchair/res/drawable-ru/ic_yandex.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
diff --git a/lawnchair/res/drawable-ru/ic_yandex_tinted.xml b/lawnchair/res/drawable-ru/ic_yandex_tinted.xml
new file mode 100644
index 00000000000..40cf7520cbc
--- /dev/null
+++ b/lawnchair/res/drawable-ru/ic_yandex_tinted.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/lawnchair/res/drawable/ic_yandex.xml b/lawnchair/res/drawable/ic_yandex.xml
new file mode 100644
index 00000000000..c8346e2ee4e
--- /dev/null
+++ b/lawnchair/res/drawable/ic_yandex.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
diff --git a/lawnchair/res/drawable/ic_yandex_tinted.xml b/lawnchair/res/drawable/ic_yandex_tinted.xml
new file mode 100644
index 00000000000..b66d4e81760
--- /dev/null
+++ b/lawnchair/res/drawable/ic_yandex_tinted.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/lawnchair/res/layout/search_container_all_apps.xml b/lawnchair/res/layout/search_container_all_apps.xml
index 7ea5ae5e2d0..9966792c6dc 100644
--- a/lawnchair/res/layout/search_container_all_apps.xml
+++ b/lawnchair/res/layout/search_container_all_apps.xml
@@ -16,6 +16,7 @@
-
+ android:layout_gravity="bottom|end|center"
+ android:clipToPadding="false"
+ android:orientation="horizontal"
+ tools:ignore="RtlSymmetry">
+
+
+
+
+
+
+
+
diff --git a/lawnchair/res/values-af-rZA/strings.xml b/lawnchair/res/values-af-rZA/strings.xml
index dcb282b4d72..c1d298a25ac 100644
--- a/lawnchair/res/values-af-rZA/strings.xml
+++ b/lawnchair/res/values-af-rZA/strings.xml
@@ -221,9 +221,20 @@
Donker
Stelsel
Match wallpaper
+
+ Color style
+ Spritz
+ Tonal Spot
+ Vibrant
+ Expressive
+ Rainbow
+ Fruit Salad
+ Content
+ Monochromatic
Kleure
Accent color
+ Stroke color
Swatches
RGB
Red
@@ -357,6 +368,9 @@
Home screen rotation
Allow home screen rotation when device is rotated
+ Enable wallpaper blur
+ Blur intensity
+ Factor threshold
Add new apps to home screen
Show feed
No feed apps installed
@@ -397,6 +411,8 @@
Search bar widget
Disabled
Google Search bar
+ Opacity
+ Stroke
Corner radius
Apply accent color
Search provider
@@ -464,7 +480,7 @@
Files from device
Settings from device
Search for more apps
- Search on Startpage
+ Search on %1$s
No app store or browser installed
Clear search history
Clear search box
@@ -498,7 +514,7 @@
Media, files, and more
Contacts and more
- Via Startpage
+ Via %1$s
Maximum number of apps in search results
Maximum number of people in search results
@@ -511,4 +527,8 @@
To search for contacts, grant contacts and phone permissions to Lawnchair
To search your files, grant storage permissions to Lawnchair
Grant permissions
+ Lawnchair (compose)
+ Web suggestion provider
+ Show web suggestion provider icon in search bar
+ Match dock search bar style
diff --git a/lawnchair/res/values-am-rET/strings.xml b/lawnchair/res/values-am-rET/strings.xml
index ffebbd27f2e..5b1a8bbc40a 100644
--- a/lawnchair/res/values-am-rET/strings.xml
+++ b/lawnchair/res/values-am-rET/strings.xml
@@ -221,9 +221,20 @@
Dark
System
Match wallpaper
+
+ Color style
+ Spritz
+ Tonal Spot
+ Vibrant
+ Expressive
+ Rainbow
+ Fruit Salad
+ Content
+ Monochromatic
Colors
Accent color
+ Stroke color
Swatches
RGB
Red
@@ -357,6 +368,9 @@
Home screen rotation
Allow home screen rotation when device is rotated
+ Enable wallpaper blur
+ Blur intensity
+ Factor threshold
Add new apps to home screen
Show feed
No feed apps installed
@@ -397,6 +411,8 @@
Search bar widget
Disabled
Google Search bar
+ Opacity
+ Stroke
Corner radius
Apply accent color
Search provider
@@ -464,7 +480,7 @@
Files from device
Settings from device
Search for more apps
- Search on Startpage
+ Search on %1$s
No app store or browser installed
Clear search history
Clear search box
@@ -498,7 +514,7 @@
Media, files, and more
Contacts and more
- Via Startpage
+ Via %1$s
Maximum number of apps in search results
Maximum number of people in search results
@@ -511,4 +527,8 @@
To search for contacts, grant contacts and phone permissions to Lawnchair
To search your files, grant storage permissions to Lawnchair
Grant permissions
+ Lawnchair (compose)
+ Web suggestion provider
+ Show web suggestion provider icon in search bar
+ Match dock search bar style
diff --git a/lawnchair/res/values-ar-rSA/strings.xml b/lawnchair/res/values-ar-rSA/strings.xml
index 4baaa1331d2..0bd1b8c00fa 100644
--- a/lawnchair/res/values-ar-rSA/strings.xml
+++ b/lawnchair/res/values-ar-rSA/strings.xml
@@ -23,7 +23,7 @@
-->
معاينة
إنشاء
- Backup
+ نسخ احتياطي
استعادة
حذف
إعادة ضبط
@@ -31,19 +31,19 @@
قُفْل
تطبيق
تخصيص
- Always
- Never
+ دائماً
+ أبداً
الحافظة
- Copy link
+ نسخ الرابط
نسخ
لصق
يتم التحميل…
يدار بواسطة Lawnchair
التفضيلات
- Home settings
- System settings
- Change settings
+ إعدادات الصفحة الرئيسية
+ إعدادات النظام
+ تغيير الإعدادات
- خلفية الخلفية
- Background opacity
+ الخلفية
+ شفافية الخلفية
- Copied to clipboard
+ تم النسخ إلى الحافظة
تم إزالة العنصر
- What to show
+ ماذا يُعرض
- To lock your phone when performing a gesture, Lawnchair requires accessibility access.\n\nLawnchair doesn\'t watch any user action, though the privilege to do so is required for all accessibility services. Lawnchair discards any event sent by the system.\n\nIn order to lock your phone, Lawnchair uses the performGlobalAction Accessibility service.
- %1$d x %2$d
- %s & %s
+ لقفل هاتفك عند تنفيذ إيماءة، يتطلب Lawnchair الوصول إلى إمكانية الوصول.\n\nLawnchair لا يراقب أي إجراء للمستخدم، رغم أن الصلاحية للقيام بذلك مطلوبة لجميع خدمات إمكانية الوصول. يقوم Lawnchair بالتخلص من أي حدث يتم إرساله بواسطة النظام.\n\nلقفل هاتفك، يستخدم Lawnchair خدمة إمكانية الوصول لتنفيذ الإجراء العالمي.
+ 18. %1$d x %2$d
+ 19. %s & %s
الإعدادات
عام
- Colors, icon packs, notification dots
- Home screen
- Feed, grid, icons
+ الألوان، حزم الأيقونات، نقاط الإشعارات
+ الشاشة الرئيسية
+ الموجز، الشبكة، الأيقونات
المرسى
- Search bar, icon count
- App drawer
- Hidden apps, column count, icons
- Drawer search
- Web suggestions, global search
+ شريط البحث، عدد الأيقونات
+ درج التطبيقات
+ التطبيقات المخفية، عدد الأعمدة، الأيقونات
+ بحث الدرج
+ اقتراحات الويب، البحث العالمي
المجلدات
- Row and column count
+ عدد الصفوف والأعمدة
الإيماءات
- Taps and swipes
+ النقرات والسحب
مؤخَرًا
- Clear All button, corner radius
+ زر \"مسح الكل\"، نصف قطر الزاوية
حول التطبيق
- App info
+ معلومات التطبيق
إعادة تشغيل Lawnchair
- Experimental features
+ الميزات التجريبية
- Font customization
+ تخصيص الخط
لا يزال بعض النص دون تغيير
- At a Glance calendar customization
+ تخصيص تقويم اللمحة السريعة
السماح بعرض التاريخ في أنظمة التقويم غير الميلادي
- Increase maximum grid size limit
- Increase maximum allowed home screen grid size from 10 x 10 to 20 x 20
- Always reload icons
+ زيادة حد حجم الشبكة القصوى
+ زيادة الحجم الأقصى المسموح به لشبكة الشاشة الرئيسية من 10 x 10 إلى 20 x 20
+ إعادة تحميل الأيقونات دائماً
تجنب استخدام الأيقونات المخزنة مؤقتًا من حزم الأيقونات
- Lock/unlock
- Prevent selected app from closing when pressing \"Clear all\"
+ قفل/فتح
+ منع إغلاق التطبيق المحدد عند الضغط على \"مسح الكل\"
- To access shortcuts and additional features, set Lawnchair as your default launcher
- Notification dots
- Show notification counter
- Notification dot color
- Notification counter color
- Warning: Notification dot and counter colors don\'t have enough contrast with each other
- Warning: Notification dot and counter colors might not always have enough contrast with each other
- صَلاحِيَة الوصول إلى الإشعارات مطلوبة
- To show Notification Dots, turn on app notifications for %1$s
+ للوصول إلى الاختصارات والميزات الإضافية، عيّن Lawnchair كمشغل افتراضي
+ نقاط الإشعارات
+ عرض عداد الإشعارات
+ لون نقطة الإشعار
+ لون عداد الإشعارات
+ تحذير: لا يوجد تباين كاف بين لون نقطة الإشعار وعداد الإشعارات
+ تحذير: قد لا يكون هناك دائمًا تباين كافٍ بين لون نقطة الإشعار وعداد الإشعارات
+ َلاحِيَة الوصول إلى الإشعارات مطلوبة
+ لعرض نقاط الإشعارات، قم بتشغيل إشعارات التطبيقات لـ %1$s
- Icon style
- Icon shape
- Icon size
- Show labels
- Label size
- Use multiple lines
+ نمط الأيقونة
+ شكل الأيقونة
+ حجم الأيقونة
+ عرض العلامات
+ حجم العلامة
+ استخدام خطوط متعددة
- Transparent themed icons
+ أيقونات ذات خلفية شفافة
استخدم خلفيه شفافه مع تغير مظهر الأيقونات
- Auto-adaptive icons
- For all non-adaptive icons
- Background lightness
- Use 100% background lightness for white
- Reset custom icons
+ أيقونات متكيفة تلقائيًا
+ لجميع الأيقونات غير المتكيفة
+ خفة الخلفية
+ استخدم 100٪ خفة الخلفية للون الأبيض
+ إعادة تعيين الأيقونات المخصصة
سيتم إعادة تعيين جميع الأيقونات المخصصة. هل تريد المتابعة؟
الأيقونات
- Reset to default
- Open external picker
- Pick icon from
- Couldn\'t load more icons
+ إعادة تعيين إلى الافتراضي
+ فتح منتقي خارجي
+ اختر الأيقونة من
+ تعذر تحميل المزيد من الأيقونات
- نظام
+ تابع النظام
دائرة
- أسطوانة
+ سطوانة
ماسي
بيضة
أيفون
ثماني الشكل
نظام سامسونج
- Rounded square
- Sharp square
+ مربع مستدير
+ مربع حاد
مربع
سوكلي
دمعة
- Custom icon shape
- Create custom icon shape
- Edit custom icon shape
- Corner shape
+ شكل أيقونة مخصص
+ إنشاء شكل أيقونة مخصص
+ تحرير شكل أيقونة مخصص
+ شكل الزاوية
دائري
سلاسة
- اقطع
- Top left
- Top right
- Bottom left
- Bottom right
- Export to clipboard
- Import from clipboard
- Clipboard doesn\'t contain a valid icon shape
+ قطع
+ أعلى اليسار
+ أعلى اليمين
+ الأسفل يسار
+ الأسفل يمين
+ تصدير إلى الحافظة
+ استيراد من الحافظة
+ الحافظة لا تحتوي على شكل أيقونة صالح
- Icon pack
- Themed icon source
- System icons
- Themed icons
+ حزمة الأيقونات
+ مصدر الأيقونات المخصصة
+ أيقونات النظام
+ الأيقونات المخصصة
معطل
- Home screen
- Home screen & app drawer
- لا يوجد حزم أيقونات مدعومة
+ الشاشة الرئيسية
+ الشاشة الرئيسية ودرج التطبيقات
+ لا توجد حزم أيقونات مدعومة
- Add fonts
- OTF and TTF fonts are supported
+ إضافة خطوط
+ الخطوط بنوعي OTF وTTF مدعومة
لم يتم العثور على الخط
- Font (experimental)
+ الخط (تجريبي)
عام
عناوين
- Headings (medium)
+ عناوين (متوسط)
جسم
- Body (medium)
+ جسم (متوسط)
مائل
رفيع
- Extra light
- الوضع الفاتح
+ خفيف جداً
+ خفيف
عادي
متوسط
نصف غامق
غامق
- Extra bold
+ غامق جداً
أسود
- Theme
+ الثيم
الوضع الفاتح
الوضع الداكن
نظام
- Match wallpaper
+ مطابقة خلفية الشاشة
+
+ نمط اللون
+ Spritz
+ بقعة نغمية
+ نابض بالحياة
+ معبر
+ قوس قزح
+ سلطة فواكه
+ محتوى
+ أحادي اللون
الألوان
- Accent color
- الحوامل
+ لون التمييز
+ Stroke color
+ عينات
RGB
الأحمر
الأخضر
الأزرق
ح س ب
- مسحة
+ الدرجة
التشبع
السطوع
- عرافة
- الشرائح
- Invalid color
+ سداسي عشري
+ محددات اللون
+ لون غير صالح
جار الشحن
تم الشحن
- Battery low
+ البطارية منخفضة
"%1$d%% — ممتلئ في %2$s"
- اللمحة
- What to show
+ لمحة
+ ماذا تعرض
التقويم
- Date & time
+ التاريخ والوقت
التاريخ
الوقت
- Time format
- Follow system
- 12-hour format
- 24-hour format
+ تنسيق الوقت
+ مطابقة نظام
+ تنسيق 12 ساعة
+ تنسيق 24 ساعة
الطقس
- Battery status
- مشغل الموسيقي اللحظي
+ حالة البطارية
+ التشغيل الحالي
- Tap to set up
+ اضغط للإعداد
لاستخدام <xliff:g مثال="مزودى" الهويه الشخصيه="اسم المزود">%1$s</xliff:g>، تمكين نِقَاط الإشعار.
- Show on home screen
- At a Glance can be manually added to the home screen by placing the Lawnchair widget
+ عرض على الشاشة الرئيسية
+ يمكنك إضافة لمحة يدوياً إلى الشاشة الرئيسية عن طريق وضع ويدجيت Lawnchair
- At a Glance provider
+ مزود لمحة
جوجل
بحث جوجل
@@ -286,12 +297,12 @@
-->
الأخبار
الدعم
- منتج
- Design & development
+ المنتج
+ التصميم والتطوير
التطوير
- QuickSwitch maintenance
+ صيانة QuickSwitch
DevOps
- الدعم & و العلاقات العامة
+ الدعم والعلاقات العامة
الشكر والتقدير
ترجمة
- Create backup
- What to back up
- Layout and settings
- خلفية الخلفية
- Backup created
- Failed to create backup
- Restore backup
- What to restore
- Backup restored
- Failed to restore backup
- Invalid backup file
+ إنشاء نسخة احتياطية
+ ماذا يتم نسخه احتياطياً
+ التخطيط والإعدادات
+ خلفية الشاشة
+ تم إنشاء النسخة الاحتياطية
+ فشل في إنشاء النسخة الاحتياطية
+ استعادة النسخة الاحتياطية
+ ماذا يتم استعادته
+ تم استعادة النسخة الاحتياطية
+ فشل في استعادة النسخة الاحتياطية
+ ملف نسخة احتياطية غير صالح
- Double tap
- Swipe up
- Swipe down
- Home button
- Back button
- Do nothing
+ النقر المزدوج
+ التمرير لأعلى
+ التمرير لأسفل
+ زر الصفحة الرئيسية
+ زر العودة
+ لا تفعل شيئاً
السكون
- Open notification panel
- Open app
+ فتح لوحة الإشعارات
+ فتح التطبيق
فتح %1$s
- Open app drawer
- Open app search
- Open search
- Pick app
- Admin permissions required
- To use Double-Tap to Sleep, set Lawnchair as a device admin app. Tap \"Open settings\", then tap \"Activate this device admin app.\"
+ فتح قائمة التطبيقات
+ فتح بحث التطبيق
+ فتح البحث
+ اختر التطبيق
+ أذونات المشرف مطلوبة
+ لاستخدام النقرة المزدوجة لإطفاء الشاشة، عيّن Lawnchair كتطبيق مشرف للجهاز. انقر على فتح الإعدادات، ثم انقر على \"فعِّل التطبيق كمشرف على الجهاز.\"
Double Tap to Sleep will be disabled.
- Turn on accessibility service
- To use Double-Tap to Sleep, turn on the Lawnchair accessibility service. Tap \"Open settings\", select \"Lawnchair\" and turn on \"Use Lawnchair.\"
- Open settings
+ تشغيل خدمة الوصول
+ لاستخدام الضغط المزدوج لإغلاق الشاشة، قم بتشغيل خدمة الوصول إلى Lawnchair. اضغط على \"فتح الإعدادات\" ثم قم باختيار \"Lawnchair\" وفعِّل \"استخدم Lawnchair\"
+ فتح الإعدادات
- Lawnchair bug report
- %1$s crashed
- Upload crash log
+ تقرير خطأ Lawnchair
+ %1$s تعطل
+ تحميل سجل التعطل
فشل التحميل
جارٍ التحميل…
- Bug reports
- Upload status
- %d new reports
- Multiple new reports
+ تقارير الأخطاء
+ حالة التحميل
+ %d تقارير جديدة
+ تقارير جديدة متعددة
- Home screen rotation
- Allow home screen rotation when device is rotated
- Add new apps to home screen
- Show feed
+ تدوير الشاشة الرئيسية
+ السماح بتدوير الشاشة الرئيسية عند تدوير الجهاز
+ Enable wallpaper blur
+ Blur intensity
+ Factor threshold
+ إضافة التطبيقات الجديدة إلى الشاشة الرئيسية
+ إظهار الموجز
لا توجد تطبيقات عرض موجز مثبتة
الموجز
- Feed provider
- Scroll wallpaper
- Wallpaper depth effect
- Zoom in and out of the wallpaper when transitioning between areas of the launcher
- Top shadow
- Home screen grid
- Lock home screen
- Unlock home screen
- Home screen is locked
+ مزود الموجز
+ تحريك الخلفية
+ تأثير عمق الخلفية
+ تكبير وتصغير الخلفية عند الانتقال بين مناطق المشغل
+ الظل العلوي
+ شبكة الشاشة الرئيسية
+ قفل الشاشة الرئيسية
+ فتح قفل الشاشة الرئيسية
+ الشاشة الرئيسية مقفلة
منع التغييرات في تخطيط الشاشة الرئيسية
إظهار صفحة النقاط
- استخدم النقاط بدلاً من الأسطر لإظهار رقم الصفحة
- Use new pop-up style
- Use Material You\'s bouncy and slightly consolidated pop-up style
- Pop-up menu
- Show lock button
- Show system settings entry
- Show Edit button
- Status bar
- Show status bar
- Dark status bar
- Text color
+ استخدام النقاط بدلاً من الأسطر لإظهار رقم الصفحة
+ استخدام نمط النافذة المنبثقة الجديد
+ استخدام نمط النافذة المنبثقة النابض والمجدد في Material You
+ القائمة المنبثقة
+ إظهار زر القفل
+ إظهار إدخال إعدادات النظام
+ إظهار زر التعديل
+ شريط الحالة
+ إظهار شريط الحالة
+ شريط الحالة الداكن
+ لون النص
الوضع الفاتح
الوضع الداكن
- Rounded corners
- Allow overlap
- Enforce widget resizing
+ زوايا مدورة
+ السماح بالتداخل
+ فرض إعادة حجم التطبيقات المصغرة
السماح بإعادة تحديد حجم التطبيقات المصغرة المقيدة بحجم محدد
- Remove size constraints
+ إزالة قيود الحجم
إزالة قيود الحد الأدنى والحد الأقصى لحجم التطبيقات المصغرة
- Show dock
- Search bar
- Search bar widget
+ إظهار الرصيف
+ شريط البحث
+ أداة شريط البحث
معطلة
- Google Search bar
+ شريط بحث Google
+ Opacity
+ Stroke
نصف قطر الزاوية
- Apply accent color
- Search provider
- Dock icons
- Bottom padding
+ تطبيق لون التمييز
+ مزود البحث
+ أيقونات الرصيف
+ المساحة السفلية
- App search
- %1$s and Lawnchair have a revenue share agreement.\n\nSearching with %1$s helps support Lawnchair.
+ بحث التطبيقات
+ %1$s وLawnchair لديهما اتفاقية مشاركة الإيرادات.\n\nالبحث باستخدام %1$s يساعد في دعم Lawnchair.
التطبيق
الموقع
التطبيق مطلوب
@@ -413,47 +429,47 @@
عدسة جوجل
البحث الصوتي
- Hidden apps
- Load apps in bulk
- Load and display icons in bulk instead of individually
- Remember position
+ التطبيقات المخفية
+ تحميل التطبيقات بالجملة
+ تحميل وعرض الأيقونات بالجملة بدلاً من فردية
+ تذكر الموقع
تذكر المكان الذي توقفت عنده في قائمة التطبيق بعد الخروج من القائمة
- Show scrollbar
- App drawer columns
- Row height
- Horizontal padding
+ إظهار شريط التمرير
+ أعمدة درج التطبيقات
+ ارتفاع الصف
+ التوسيع الأفقي
- Hide from app drawer
- Hidden apps (%1$d)
+ إخفاء من درج التطبيقات
+ التطبيقات المخفية (%1$d)
- - %1$d apps
- - %1$d app
- - %1$d apps
- - %1$d apps
- - %1$d apps
- - %1$d apps
+ - %1$d تطبيقات
+ - %1$d تطبيق
+ - %1$d تطبيقين
+ - %1$d تطبيقات
+ - %1$d تطبيقات
+ - %1$d تطبيقات
- Icon background opacity
- Icon background color
- Maximum folder columns
- Maximum folder rows
+ شفافية خلفية الأيقونة
+ لون خلفية الأيقونة
+ أقصى عدد من الأعمدة في المجلد
+ أقصى عدد من الصفوف في المجلد
- These settings will be ignored as Lawnchair isn\'t set as the Recents provider
- Incompatible system integration
- Your device is configured to have system gestures (known as Quickstep) provided by %1$s, but this version of %1$s isn\'t compatible with your Android version. To continue using your device, please uninstall %1$s updates or disable %1$s as a system gesture provider.
- Translucent background
- Background opacity
- Quick actions
+ سيتم تجاهل هذه الإعدادات لأن Lawnchair لم يتم تعيينه كمزود للتطبيقات الأخيرة
+ تكامل النظام غير متوافق
+ تم تكوين جهازك ليحتوي على إيماءات النظام (المعروفة باسم Quickstep) المقدمة بواسطة %1$s، ولكن هذا الإصدار من %1$s غير متوافق مع إصدار Android الخاص بك. لمتابعة استخدام جهازك، يرجى إلغاء تثبيت تحديثات %1$s أو تعطيل %1$s كمزود لإيماءات النظام.
+ خلفية شفافة
+ شفافية الخلفية
+ الإجراءات السريعة
مشاركة
عدسة
- Clear all
- الإغلاق إجباريا
- Screen corner radius
- Custom screen corner radius
- When you swipe up to open Recents, the current app follows your finger, shrinking into a card. Use this slider to adjust the corner radius of the card when it\'s nearly full screen so it matches the corners of your screen.
+ مسح الكل
+ الإغلاق إجبارياً
+ نصف قطر زوايا الشاشة
+ تخصيص نصف قطر زوايا الشاشة
+ عندما تقوم بالتمرير لأعلى لفتح التطبيقات الأخيرة، يتبع التطبيق الحالي إصبعك، ويتقلص إلى بطاقة. استخدم هذا الشريط لضبط نصف قطر زوايا البطاقة عندما تكون تقريبًا ملء الشاشة بحيث يتطابق مع زوايا شاشتك.
شريط المهام
- Show taskbar (experimental)
+ إظهار شريط المهام (تجريبي)
البحث
البحث عن التطبيقات
- No apps found matching \"%1$s\"
+ لم يتم العثور على تطبيقات مطابقة لـ \"%1$s\"
من الويب
- Contacts from device
- Files from device
- Settings from device
- Search for more apps
- البحث في صفحة البداية
- No app store or browser installed
- Clear search history
- Clear search box
+ جهات الاتصال من الجهاز
+ ملفات من الجهاز
+ إعدادات من الجهاز
+ البحث عن المزيد من التطبيقات
+ البحث على %1$s
+ لا يوجد متجر تطبيقات أو متصفح مثبت
+ مسح سجل البحث
+ مسح مربع البحث
البحث
- Show search bar
- Automatically show keyboard
- Fuzzy search
- Approximate matching for app searches
+ إظهار شريط البحث
+ عرض لوحة المفاتيح تلقائيًا
+ البحث الغامض
+ مطابقة تقريبية لعمليات البحث عن التطبيقات
اقتراحات
- Show suggested apps at the top of the drawer
- Device search
- Search your phone contacts, files, and settings
- Show hidden apps in search results
- If full name is typed
- Search algorithm
+ إظهار التطبيقات المقترحة في أعلى الدرج
+ بحث الجهاز
+ البحث في جهات اتصال هاتفك، الملفات، والإعدادات
+ إظهار التطبيقات المخفية في نتائج البحث
+ إذا تم كتابة الاسم الكامل
+ خوارزمية البحث
بحث التطبيقات
- Global search (on-device)
- Global search (via ASI)
+ البحث العالمي (على الجهاز)
+ البحث العالمي (عبر ASI)
- Show in search results
+ إظهار في نتائج البحث
التطبيقات والاختصارات
- App shortcuts
+ اختصارات التطبيقات
الأشخاص
- Pixel tips
- Android settings
+ نصائح Pixel
+ إعدادات Android
ملفات
اقتراحات الويب
- Search history
- Calculator
+ سجل البحث
+ آلة حاسبة
الوسائط، الملفات، والمزيد
جهات الاتصال والمزيد
- Via Startpage
+ عبر %1$s
- Maximum number of apps in search results
- Maximum number of people in search results
- Maximum number of files in search results
- Maximum number of settings entries in search results
- Maximum number of history entries in search results
- Maximum number of suggestions in search results
- Maximum web suggestion delay
+ الحد الأقصى لعدد التطبيقات في نتائج البحث
+ الحد الأقصى لعدد الأشخاص في نتائج البحث
+ الحد الأقصى لعدد الملفات في نتائج البحث
+ الحد الأقصى لعدد إدخالات الإعدادات في نتائج البحث
+ الحد الأقصى لعدد إدخالات السجل في نتائج البحث
+ الحد الأقصى لعدد الاقتراحات في نتائج البحث
+ الحد الأقصى لتأخير اقتراحات الويب
- To search for contacts, grant contacts and phone permissions to Lawnchair
- To search your files, grant storage permissions to Lawnchair
- Grant permissions
+ للبحث عن جهات الاتصال، امنح أذونات جهات الاتصال والهاتف لـ Lawnchair
+ للبحث في ملفاتك، امنح أذونات التخزين لـ Lawnchair
+ منح الأذونات
+ Lawnchair (compose)
+ مزود اقتراحات الويب
+ إظهار أيقونة مزود اقتراحات الويب في شريط البحث
+ مطابقة نمط شريط البحث في الدرج
diff --git a/lawnchair/res/values-az-rAZ/strings.xml b/lawnchair/res/values-az-rAZ/strings.xml
index 7b9f5713d65..54a560dce70 100644
--- a/lawnchair/res/values-az-rAZ/strings.xml
+++ b/lawnchair/res/values-az-rAZ/strings.xml
@@ -221,9 +221,20 @@
Dark
System
Match wallpaper
+
+ Color style
+ Spritz
+ Tonal Spot
+ Vibrant
+ Expressive
+ Rainbow
+ Fruit Salad
+ Content
+ Monochromatic
Colors
Accent color
+ Stroke color
Swatches
RGB
Red
@@ -357,6 +368,9 @@
Home screen rotation
Allow home screen rotation when device is rotated
+ Enable wallpaper blur
+ Blur intensity
+ Factor threshold
Add new apps to home screen
Show feed
No feed apps installed
@@ -397,6 +411,8 @@
Search bar widget
Disabled
Google Search bar
+ Opacity
+ Stroke
Corner radius
Apply accent color
Search provider
@@ -464,7 +480,7 @@
Files from device
Settings from device
Search for more apps
- Search on Startpage
+ Search on %1$s
No app store or browser installed
Clear search history
Clear search box
@@ -498,7 +514,7 @@
Media, files, and more
Contacts and more
- Via Startpage
+ Via %1$s
Maximum number of apps in search results
Maximum number of people in search results
@@ -511,4 +527,8 @@
To search for contacts, grant contacts and phone permissions to Lawnchair
To search your files, grant storage permissions to Lawnchair
Grant permissions
+ Lawnchair (compose)
+ Web suggestion provider
+ Show web suggestion provider icon in search bar
+ Match dock search bar style
diff --git a/lawnchair/res/values-b+sr+Latn/strings.xml b/lawnchair/res/values-b+sr+Latn/strings.xml
index 6e06d74a716..4df17d72b02 100644
--- a/lawnchair/res/values-b+sr+Latn/strings.xml
+++ b/lawnchair/res/values-b+sr+Latn/strings.xml
@@ -221,9 +221,20 @@
Tamna
Sistemska
Na osnovu pozadine
+
+ Šema boja
+ Aperol
+ Nijansiranje
+ Živopisno
+ Ekspresivno
+ Duga
+ Voćna salata
+ Sadržaj
+ Monohromatsko
Boje
Boja za naglašavanje
+ Stroke color
Obrasci
RGB
Crvena
@@ -357,6 +368,9 @@
Rotacija početnog ekrana
Dozvolite rotaciju početnog ekrana kada se uređaj rotira
+ Enable wallpaper blur
+ Blur intensity
+ Factor threshold
Dodaj nove aplikacije na početni ekran
Prikaži fid
Nijedna aplikacija za fid nije instalirana
@@ -397,6 +411,8 @@
Vidžet trake za pretragu
Onemogućeno
Google traka za pretragu
+ Opacity
+ Stroke
Zaobljenost uglova
Primeni boju za naglašavanje
Pretraživač
@@ -465,7 +481,7 @@
Fajlovi sa uređaja
Podešavanja sa uređaja
Pretražite još aplikacija
- Pretražuj pomoću usluge Startpage
+ Search on %1$s
Nije instalirana prodavnica aplikacija ni pregledač
Obriši istoriju pretrage
Obriši polje za pretragu
@@ -499,7 +515,7 @@
Mediji, fajlovi i drugo
Kontakti i drugo
- Pomoću usluge Startpage
+ Via %1$s
Maksimalan broj aplikacija u rezultatima pretrage
Maksimalan broj kontakata u rezultatima pretrage
@@ -512,4 +528,8 @@
Da biste pretraživali kontakte, dodelite Lawnchairu dozvole Kontakti i Telefon
Da biste pretraživali fajlove, dodelite Lawnchairu pristup memoriji
Dodeli dozvole
+ Lawnchair (sastavljeno)
+ Web suggestion provider
+ Show web suggestion provider icon in search bar
+ Match dock search bar style
diff --git a/lawnchair/res/values-bn-rBD/strings.xml b/lawnchair/res/values-bn-rBD/strings.xml
index 853002211b7..8e364ca0d74 100644
--- a/lawnchair/res/values-bn-rBD/strings.xml
+++ b/lawnchair/res/values-bn-rBD/strings.xml
@@ -23,27 +23,27 @@
-->
প্রিভিউ
তৈরি করুন
- Backup
+ ব্যাকআপ
উদ্ধার
মুছে ফেলুন
রিসেট
- Unlock
- Lock
+ আনলক
+ লক
সম্পূর্ণ করুন
কাস্টমাইজ করুন
- Always
- Never
+ সবসময়
+ কখনো না
ক্লিপবোর্ড
- Copy link
+ লিঙ্ক কপি করুন
কপি
পোস্ট
লোড হচ্ছে…
Lawnchair দ্বারা পরিচালিত করা হবে
পছন্দ-সমুহ
- Home settings
- System settings
- Change settings
+ হোম সেটিংস
+ সিস্টেম সেটিংস
+ সেটিংস পরিবর্তন করুন
কলাম
@@ -64,14 +64,14 @@
গঠন
ওয়ালপেপার
- Background opacity
+ ব্যাকগ্রাউন্ডের অস্বচ্ছতা
- Copied to clipboard
- Item removed
+ ক্লিপবোর্ডের অস্বচ্ছতা
+ আইটেম রিমুভ করা হয়েছে
- What to show
+ যা দেখাবে
- To lock your phone when performing a gesture, Lawnchair requires accessibility access.\n\nLawnchair doesn\'t watch any user action, though the privilege to do so is required for all accessibility services. Lawnchair discards any event sent by the system.\n\nIn order to lock your phone, Lawnchair uses the performGlobalAction Accessibility service.
+ জেসচারের মাধ্যমে ফোন লক করার জন্য Lawnchair এর এক্সেসিবিলিটি এক্সেস প্রয়োজন।\n\nLawnchair ব্যবহারকারীদের কর্মকান্ডে কোন নজরদারি করে না, যদিও এক্সেসিবিলিটি সার্ভিসের জন্য এই ক্ষমতা প্রয়োজন। সিস্টেম কর্তৃক পাঠানো যেকোন কিছু Lawnchair সংরক্ষণ করবে না।\n\nLawnchair ফোন লক করার জন্য performGlobalAction এক্সেসিবিলিটি সার্ভিস ব্যবহার করে।
%1$d x %2$d
%s & %s
সেটিংস
সাধারণ
- Colors, icon packs, notification dots
- Home screen
- Feed, grid, icons
+ কালারস, আইকন প্যাকস ও নোটিফিকেশন ডটস
+ হোম স্ক্রিন
+ ফিড, গ্রিডস, আইকনস
ডক
- Search bar, icon count
- App drawer
+ অনুসন্ধান বার, আইকন সংখ্যা
+ অ্যাপ ড্রয়ার
Hidden apps, column count, icons
Drawer search
Web suggestions, global search
@@ -221,9 +221,20 @@
গাঢ়
সিস্টেম
Match wallpaper
+
+ Color style
+ Spritz
+ Tonal Spot
+ Vibrant
+ Expressive
+ Rainbow
+ Fruit Salad
+ Content
+ Monochromatic
রং
Accent color
+ Stroke color
Swatches
আর জি বি
লাল
@@ -357,6 +368,9 @@
Home screen rotation
Allow home screen rotation when device is rotated
+ Enable wallpaper blur
+ Blur intensity
+ Factor threshold
Add new apps to home screen
Show feed
No feed apps installed
@@ -397,6 +411,8 @@
Search bar widget
Disabled
Google Search bar
+ Opacity
+ Stroke
কোণের ব্যাসার্ধ
Apply accent color
Search provider
@@ -464,7 +480,7 @@
Files from device
Settings from device
Search for more apps
- Search on Startpage
+ Search on %1$s
No app store or browser installed
Clear search history
Clear search box
@@ -498,7 +514,7 @@
Media, files, and more
Contacts and more
- Via Startpage
+ Via %1$s
Maximum number of apps in search results
Maximum number of people in search results
@@ -511,4 +527,8 @@
To search for contacts, grant contacts and phone permissions to Lawnchair
To search your files, grant storage permissions to Lawnchair
Grant permissions
+ Lawnchair (compose)
+ Web suggestion provider
+ Show web suggestion provider icon in search bar
+ Match dock search bar style
diff --git a/lawnchair/res/values-bs-rBA/strings.xml b/lawnchair/res/values-bs-rBA/strings.xml
index 7ee3cae0265..738a404835b 100644
--- a/lawnchair/res/values-bs-rBA/strings.xml
+++ b/lawnchair/res/values-bs-rBA/strings.xml
@@ -221,9 +221,20 @@
Dark
System
Match wallpaper
+
+ Color style
+ Spritz
+ Tonal Spot
+ Vibrant
+ Expressive
+ Rainbow
+ Fruit Salad
+ Content
+ Monochromatic
Colors
Accent color
+ Stroke color
Swatches
RGB
Red
@@ -357,6 +368,9 @@
Home screen rotation
Allow home screen rotation when device is rotated
+ Enable wallpaper blur
+ Blur intensity
+ Factor threshold
Add new apps to home screen
Show feed
No feed apps installed
@@ -397,6 +411,8 @@
Search bar widget
Disabled
Google Search bar
+ Opacity
+ Stroke
Corner radius
Apply accent color
Search provider
@@ -465,7 +481,7 @@
Files from device
Settings from device
Search for more apps
- Search on Startpage
+ Search on %1$s
No app store or browser installed
Clear search history
Clear search box
@@ -499,7 +515,7 @@
Media, files, and more
Contacts and more
- Via Startpage
+ Via %1$s
Maximum number of apps in search results
Maximum number of people in search results
@@ -512,4 +528,8 @@
To search for contacts, grant contacts and phone permissions to Lawnchair
To search your files, grant storage permissions to Lawnchair
Grant permissions
+ Lawnchair (compose)
+ Web suggestion provider
+ Show web suggestion provider icon in search bar
+ Match dock search bar style
diff --git a/lawnchair/res/values-ca-rES/strings.xml b/lawnchair/res/values-ca-rES/strings.xml
index 59fb74c9c90..ea5326b2cca 100644
--- a/lawnchair/res/values-ca-rES/strings.xml
+++ b/lawnchair/res/values-ca-rES/strings.xml
@@ -221,9 +221,20 @@
Fosc
Sistema
Match wallpaper
+
+ Color style
+ Spritz
+ Tonal Spot
+ Vibrant
+ Expressive
+ Rainbow
+ Fruit Salad
+ Content
+ Monochromatic
Colors
Accent color
+ Stroke color
Mostres
RGB
Vermell
@@ -357,6 +368,9 @@
Home screen rotation
Allow home screen rotation when device is rotated
+ Enable wallpaper blur
+ Blur intensity
+ Factor threshold
Add new apps to home screen
Show feed
No n\'hi ha aplicacions de feed instal·lades
@@ -397,6 +411,8 @@
Search bar widget
Desactivat
Google Search bar
+ Opacity
+ Stroke
Radi de les cantonades
Apply accent color
Search provider
@@ -464,7 +480,7 @@
Files from device
Settings from device
Search for more apps
- Buscar en Startpage
+ Search on %1$s
No app store or browser installed
Clear search history
Clear search box
@@ -498,7 +514,7 @@
Media, files, and more
Contactes i més
- Via Startpage
+ Via %1$s
Maximum number of apps in search results
Maximum number of people in search results
@@ -511,4 +527,8 @@
To search for contacts, grant contacts and phone permissions to Lawnchair
To search your files, grant storage permissions to Lawnchair
Grant permissions
+ Lawnchair (compose)
+ Web suggestion provider
+ Show web suggestion provider icon in search bar
+ Match dock search bar style
diff --git a/lawnchair/res/values-cs-rCZ/strings.xml b/lawnchair/res/values-cs-rCZ/strings.xml
index 028693a697d..cb1b367903d 100644
--- a/lawnchair/res/values-cs-rCZ/strings.xml
+++ b/lawnchair/res/values-cs-rCZ/strings.xml
@@ -34,16 +34,16 @@
Vždy
Nikdy
Schránka
- Copy link
+ Zkopírovat odkaz
Kopírovat
Vložit
Načítání…
Spravováno aplikací Lawnchair
Předvolby
- Home settings
- System settings
- Change settings
+ Nastavení domovské obrazovky
+ Systémová nastavení
+ Změnit nastavení
Tapeta
- Background opacity
+ Průhlednost Pozadí
- Copied to clipboard
+ Zkopírováno do schránky
Položka odebrána
- What to show
+ Co Zobrazit
K uzamčení telefonu při provádění gesta vyžaduje Lawnchair přístup k usnadnění.\n\nLawnchair nesleduje žádnou akci uživatele, ačkoli oprávnění k tomu je vyžadováno pro všechny služby usnadnění. Lawnchair zahodí jakoukoli událost odeslanou systémem.\n\nAby byl váš telefon uzamčen, používá Lawnchair službu usnadnění performGlobalAction.
%1$d x %2$d
@@ -81,48 +81,48 @@
-->
Nastavení
Obecné
- Colors, icon packs, notification dots
- Home screen
- Feed, grid, icons
+ Barvy, Balíčky Ikon, Tečky Oznámení
+ Domácí obrazovka
+ Feed, grid, ikony
Dok
- Search bar, icon count
- App drawer
- Hidden apps, column count, icons
- Drawer search
- Web suggestions, global search
+ Vyhledávací panel, Počet ikon
+ Seznam aplikací
+ Skryté aplikace, počet sloupců, ikony
+ Vyhledávání aplikací
+ Webová doporučení, globální vyhledávání
Složky
- Row and column count
+ Počet sloupců a řádků
Gesta
- Taps and swipes
+ Ťuknutí a přetažení
Předešlé
- Clear All button, corner radius
+ Tlačítko „Vymazat vše“, Poloměr rohů
O aplikaci
- App info
+ Informace o aplikaci
Restartovat Lawnchair
- Experimental features
+ Experimentální funkce
- Font customization
+ Přizbpůsobení fontu
Některý text zůstává beze změny
- At a Glance calendar customization
+ Přizpůsobení glanc kalendáře
Povolit zobrazení data v kalendářích ne-Gregoriánských systémů
- Increase maximum grid size limit
- Increase maximum allowed home screen grid size from 10 x 10 to 20 x 20
- Always reload icons
+ Zvýšit maximální limit velikosti mřížky
+ Zvýšit maximální povolenou velikost mřížky domovské obrazovky z 10 x 10 na 20 x 20
+ Vždy znovu načíst ikony
Vyhnout se používání uložených ikon z balíčků ikon
- Lock/unlock
- Prevent selected app from closing when pressing \"Clear all\"
+ Zamknout/odemknout
+ Zabránit ukončení vybrané aplikace při stisknutí tlačítka „Vyčistit vše“
Pro přístup ke zkratkám a dalším funkcím nastavte Lawnchair jako výchozí spouštěč
- Notification dots
- Show notification counter
- Notification dot color
- Notification counter color
- Warning: Notification dot and counter colors don\'t have enough contrast with each other
- Warning: Notification dot and counter colors might not always have enough contrast with each other
+ Notifikační tečky
+ Zobrazit počet oznámení
+ Barva oznamovací tečky
+ Barva počítadla oznámení
+ Varování: Barvy upozornění a počítadla upozornění nemají dostatečný kontrast
+ Varování: Barva teček upozornění a barva počítadla upozornění možná nemá dostatečný kontrast
Je vyžadován přístup k oznámením
Chcete-li používat tečky oznámení, zapněte oznámení aplikace pro %1$s
Styl ikon
- Icon shape
+ Tvar ikon
Velikost ikon
Zobrazit popisky
- Label size
+ Velikost popisku
Dvouřádková popiska
Popiska ikon na průhledném pozadí
Použít průhledné pozadí u ikon s tématem
- Auto-adaptive icons
- For all non-adaptive icons
- Background lightness
- Use 100% background lightness for white
- Reset custom icons
+ Automaticky adaptivní ikony
+ Pro všechny neadaptivní ikony
+ Jas pozadí
+ Pro bílý režim použít 100% osvětlení pozadí
+ Obnovit upravené ikony
Všechny vlastní ikony budou obnoveny. Přejete si pokračovat?
Ikony
Obnovit výchozí
- Open external picker
- Pick icon from
- Couldn\'t load more icons
+ Otevřít externí výběr
+ Vybrat ikonu z
+ Nelze načíst více ikon
Systém
Kruh
@@ -161,54 +161,54 @@
iOS
Osmiúhelník
One UI
- Rounded square
- Sharp square
+ Zaoblený čtverec
+ Ostrý čtverec
Čtverec
Zaoblený čtverec
Slza
- Custom icon shape
- Create custom icon shape
- Edit custom icon shape
+ Vlastní tvar ikon
+ Vytvořit vlastní tvar ikon
+ Upravit vlastní tvar ikon
Tvar rohů ikon
Kulatý
Hladký
Oříznutý
Tvar levého horního rohu ikon
Tvar pravého horního rohu
- Bottom left
+ Vlevo dole
Tvar spodního pravého rohu
- Export to clipboard
- Import from clipboard
- Clipboard doesn\'t contain a valid icon shape
+ Zkopírovat do schránky
+ Vložit ze schránky
+ Schránka neobsahuje platný tvar ikony
- Icon pack
- Themed icon source
- System icons
- Themed icons
+ Balíček ikon
+ Zdroj tematických ikon
+ Systémové ikony
+ Ikony s motivy
Vyp.
- Home screen
- Home screen & app drawer
+ Domácí obrazovka
+ Domácí obrazovka & nabídka aplikací
Žádné podporované balíčky ikon
- Add fonts
- OTF and TTF fonts are supported
+ Přidat fonty
+ OTF a TTF formáty jsou podporovány
Font nenalezen
- Font (experimental)
+ Fonty (experimentální)
Obecné
Nadpisy
- Headings (medium)
+ Nadpisy (střední)
Tělo
- Body (medium)
+ Tělo (střední)
Kurzíva
Tenké
- Extra light
+ Velmi tenké
Světlé
Běžné
Střední
Středně tučné
Tučné
- Extra bold
+ Velmi tučné
Black
+ Barevný styl
+ Spritz
+ Tonal Spot
+ Sytá
+ Expressive
+ Rainbow
+ Fruit Salad
+ Content
+ Monochromatic
Barvy
Accent color
+ Stroke color
Vzorníky
RGB
Červená
@@ -235,7 +246,7 @@
Jas
Hex
Posuvníky
- Invalid color
+ Neplatná barva
Nabíjení
Nabito
- Battery low
+ Nízký stav baterie
"%1$d%% — Plná v %2$s"
Přehled událostí
- What to show
+ Co zobrazit
Kalendář
Date & time
Datum
Čas
- Time format
- Follow system
- 12-hour format
- 24-hour format
+ Formát času
+ Podle systému
+ 12-hodinový formát
+ 24-hodinový formát
Počasí
- Battery status
+ Stav baterie
Právě hraje
- Tap to set up
+ Klepnutím nastavíte
Chcete‑li použít %1$s, povolte puntíky oznámení.
- Show on home screen
+ Zobrazit na domovské obrazovce
At a Glance can be manually added to the home screen by placing the Lawnchair widget
At a Glance provider
@@ -289,7 +300,7 @@
Produkt
Design & development
Vývoj
- QuickSwitch maintenance
+ Nastavení QuickSwitch
DevOps
Podpora & PR
Uznání
@@ -299,14 +310,14 @@
Backup and restore
-->
- Create backup
- What to back up
- Layout and settings
+ Vytvořit zálohu
+ Co zálohovat
+ Rozložení a nastavení
Tapeta
Záloha vytvořena
Nepodařilo se vytvořit zálohu
- Restore backup
- What to restore
+ Obnovit ze zálohy
+ Co obnovit ze zálohy
Obnoveno ze zálohy
Nepodařilo se obnovit ze zálohy
Neplatný záložní soubor
@@ -315,37 +326,37 @@
Gesture settings
-->
- Double tap
- Swipe up
- Swipe down
- Home button
- Back button
- Do nothing
+ Dvojité klepnutí
+ Přejetí nahoru
+ Přejetí dolů
+ Tlačítko domů
+ Tlačítko zpět
+ Nedělat nic
Spánek
- Open notification panel
- Open app
+ Otevřít panel oznámení
+ Otevřít aplikaci
Otevřít %1$s
- Open app drawer
- Open app search
- Open search
- Pick app
- Admin permissions required
+ Otevřít seznam aplikací
+ Otevřít vyhledávání aplikací
+ Otevřít vyhledávání
+ Vybrat aplikaci
+ Vyžaduje oprávnění administrátora
To use Double-Tap to Sleep, set Lawnchair as a device admin app. Tap \"Open settings\", then tap \"Activate this device admin app.\"
Uspání dvojitým poklepáním bude vypnuto.
- Turn on accessibility service
+ Zapnout službu usnadnění
To use Double-Tap to Sleep, turn on the Lawnchair accessibility service. Tap \"Open settings\", select \"Lawnchair\" and turn on \"Use Lawnchair.\"
- Open settings
+ Otevřít nastavení
- Lawnchair bug report
- %1$s crashed
- Upload crash log
+ Hlášení o chybě v Lawnchair
+ %1$s přestal fungovat
+ Nahrát protokol pádů
Nahrávání selhalo
Nahrávám…
- Bug reports
+ Chybová hlášení
Upload status
%d new reports
Multiple new reports
@@ -357,6 +368,9 @@
Home screen rotation
Allow home screen rotation when device is rotated
+ Enable wallpaper blur
+ Blur intensity
+ Factor threshold
Add new apps to home screen
Show feed
Není nainstalován žádný poskytovatel Feedu
@@ -397,14 +411,16 @@
Search bar widget
Zakázáno
Google Search bar
+ Opacity
+ Stroke
Poloměr rohu
Apply accent color
- Search provider
- Dock icons
- Bottom padding
+ Poskytovatel vyhledávání
+ Ikony doku
+ Spodní mezera
- App search
- %1$s and Lawnchair have a revenue share agreement.\n\nSearching with %1$s helps support Lawnchair.
+ Hledání aplikací
+ %1$s a Lawnchair má smlouvu o sdílení příjmů.\n\nVyhledávání pomocí %1$s pomáhá podpořit Lawnchair.
Aplikace
Web
Aplikace je vyžadována
@@ -413,42 +429,42 @@
Google Lens
Hlasové vyhledávání
- Hidden apps
- Load apps in bulk
+ Skryté aplikace
+ Načíst aplikace hromadně
Load and display icons in bulk instead of individually
- Remember position
+ Zapamatovat pozici
Zapamatovat pozici seznamu aplikací po opuštění
- Show scrollbar
- App drawer columns
- Row height
- Horizontal padding
+ Zobrazit posuvník
+ Sloupce seznamu aplikací
+ Výška řádku
+ Vodorovná mezera
- Hide from app drawer
- Hidden apps (%1$d)
+ Skrýt v seznamu aplikací
+ Skryté aplikace (%1$d)
- %1$d app
- %1$d apps
- %1$d apps
- - %1$d apps
+ - %1$d aplikací
- Icon background opacity
- Icon background color
- Maximum folder columns
- Maximum folder rows
+ Průhlednost pozadí ikon
+ Barva pozadí ikon
+ Maximální počet sloupců složky
+ Maximální počet řádků složky
- These settings will be ignored as Lawnchair isn\'t set as the Recents provider
- Incompatible system integration
+ Tato nastavení budou ignorována, protože Lawnchair není nastaven jako poskytovatel nedávných aplikací
+ Nekompatibilní systémová integrace
Your device is configured to have system gestures (known as Quickstep) provided by %1$s, but this version of %1$s isn\'t compatible with your Android version. To continue using your device, please uninstall %1$s updates or disable %1$s as a system gesture provider.
- Translucent background
- Background opacity
- Quick actions
+ Průsvitné pozadí
+ Průhlednost pozadí
+ Rychlé akce
Sdílet
Lens
- Clear all
+ Vymazat vše
Vynutit ukončení
- Screen corner radius
- Custom screen corner radius
+ Poloměr rohů obrazovky
+ Vlastní poloměr rohů obrazovky
When you swipe up to open Recents, the current app follows your finger, shrinking into a card. Use this slider to adjust the corner radius of the card when it\'s nearly full screen so it matches the corners of your screen.
Hlavní panel
Show taskbar (experimental)
@@ -466,7 +482,7 @@
Files from device
Settings from device
Search for more apps
- Hledat na Startpage
+ Search on %1$s
No app store or browser installed
Clear search history
Clear search box
@@ -500,7 +516,7 @@
Média, soubory a další
Kontakty a další
- Přes Startpage
+ Via %1$s
Maximum number of apps in search results
Maximum number of people in search results
@@ -513,4 +529,8 @@
To search for contacts, grant contacts and phone permissions to Lawnchair
To search your files, grant storage permissions to Lawnchair
Grant permissions
+ Lawnchair (compose)
+ Web suggestion provider
+ Show web suggestion provider icon in search bar
+ Match dock search bar style
diff --git a/lawnchair/res/values-da-rDK/strings.xml b/lawnchair/res/values-da-rDK/strings.xml
index f8e1707f78d..5ed2d86712d 100644
--- a/lawnchair/res/values-da-rDK/strings.xml
+++ b/lawnchair/res/values-da-rDK/strings.xml
@@ -221,9 +221,20 @@
Mørk
System
Match wallpaper
+
+ Color style
+ Spritz
+ Tonal Spot
+ Vibrant
+ Expressive
+ Rainbow
+ Fruit Salad
+ Content
+ Monochromatic
Farver
Accent color
+ Stroke color
Swatches
RGB
Rød
@@ -357,6 +368,9 @@
Home screen rotation
Allow home screen rotation when device is rotated
+ Enable wallpaper blur
+ Blur intensity
+ Factor threshold
Add new apps to home screen
Show feed
Ingen feed-apps installeret
@@ -397,6 +411,8 @@
Search bar widget
Deaktiveret
Google Search bar
+ Opacity
+ Stroke
Hjørne radius
Apply accent color
Search provider
@@ -464,7 +480,7 @@
Files from device
Settings from device
Search for more apps
- Søg på Startpage
+ Search on %1$s
No app store or browser installed
Clear search history
Clear search box
@@ -498,7 +514,7 @@
Medier, filer og mere
Kontakter og mere
- Via Startpage
+ Via %1$s
Maximum number of apps in search results
Maximum number of people in search results
@@ -511,4 +527,8 @@
To search for contacts, grant contacts and phone permissions to Lawnchair
To search your files, grant storage permissions to Lawnchair
Grant permissions
+ Lawnchair (compose)
+ Web suggestion provider
+ Show web suggestion provider icon in search bar
+ Match dock search bar style
diff --git a/lawnchair/res/values-de-rDE/strings.xml b/lawnchair/res/values-de-rDE/strings.xml
index 3c5cc015110..80b2f259eb8 100644
--- a/lawnchair/res/values-de-rDE/strings.xml
+++ b/lawnchair/res/values-de-rDE/strings.xml
@@ -23,7 +23,7 @@
-->
Vorschau
Erstellen
- Backup
+ Sichern
Wiederherstellen
Löschen
Zurücksetzen
@@ -221,9 +221,20 @@
Dunkel
System
An Hintergrund anpassen
+
+ Farbstil
+ Spritz
+ Tonal Spot
+ Vibrant
+ Expressive
+ Rainbow
+ Fruit Salad
+ Inhalt
+ Einfarbig
Farben
Akzentfarbe
+ Strichfarbe
Farbfelder
RGB
Rot
@@ -357,6 +368,9 @@
Startbildschirm-Drehung
Drehen des Startbildschirms bei Drehung des Geräts erlauben
+ Hintergrund-Unschärfe aktivieren
+ Unschärfe-Intensität
+ Faktor-Schwellenwert
Neue Apps zum Startbildschirm hinzufügen
Feed anzeigen
Keine Feed-Apps installiert
@@ -397,6 +411,8 @@
Suchleisten-Widget
Deaktiviert
Google-Suchleiste
+ Deckkraft
+ Strichstärke
Ecken radius
Akzentfarbe verwenden
Suchanbieter
@@ -404,7 +420,7 @@
Unterer Abstand
App-Suche
- %1$s and Lawnchair have a revenue share agreement.\n\nSearching with %1$s helps support Lawnchair.
+ %1$s und Lawnchair haben eine Umsatzbeteiligungsvereinbarung.\n\nSuchen mit %1$s unterstützt Lawnchair.
App
Webseite
App erforderlich
@@ -413,43 +429,43 @@
Google Lens
Sprachsuche
- Hidden apps
- Load apps in bulk
- Load and display icons in bulk instead of individually
- Remember position
+ Versteckte Anwendungen
+ Anwendungen auf einmal laden
+ Lade und zeige Symbole auf einmal statt einzeln
+ Position merken
App-Drawer-Position nach Verlassen der Übersicht merken
- Show scrollbar
- App drawer columns
- Row height
- Horizontal padding
+ Zeige Scrollbar
+ Spalten in der Anwendungsübersicht
+ Zeilenhöhe
+ Horizontaler Abstand
- Hide from app drawer
- Hidden apps (%1$d)
+ Aus der Anwendungsübersicht ausblenden
+ Versteckte Apps (%1$d)
- - %1$d app
- - %1$d apps
+ - %1$d Anwendung
+ - %1$d Anwendungen
- Icon background opacity
- Icon background color
- Maximum folder columns
- Maximum folder rows
+ Symbol-Hintergrundtransparenz
+ Symbol-Hintergrundfarbe
+ Maximale Anzahl an Ordner Spalten
+ Maximale Anzahl an Ordner Reihen
- These settings will be ignored as Lawnchair isn\'t set as the Recents provider
- Incompatible system integration
- Your device is configured to have system gestures (known as Quickstep) provided by %1$s, but this version of %1$s isn\'t compatible with your Android version. To continue using your device, please uninstall %1$s updates or disable %1$s as a system gesture provider.
- Translucent background
- Background opacity
- Quick actions
+ Diese Einstellungen werden ignoriert, da Lawnchair nicht als \"Recents-Provider\" eingestellt ist
+ Inkompatible Systemintegration
+ Dein Gerät ist so konfiguriert, dass Systemgesten (bekannt als Quickstep) von %1$s bereitgestellt werden, diese Version von %1$s ist jedoch nicht mit deiner Android Version kompatibel. Um dein Gerät weiter zu verwenden, deinstalliere bitte %1$s Aktualisierungen oder deaktiviere %1$s als Systemgesten-Provider.
+ Transparenter Hintergrund
+ Deckkraft des Hintergrund
+ Schnelle Aktionen
Teilen
Lens
- Clear all
+ Alle löschen
Schließen erzwingen
- Screen corner radius
- Custom screen corner radius
- When you swipe up to open Recents, the current app follows your finger, shrinking into a card. Use this slider to adjust the corner radius of the card when it\'s nearly full screen so it matches the corners of your screen.
+ Radius der Bildschirmecken
+ Benutzerdefinierter Radius der Bildschirmecken
+ Wenn du nach oben wischst, um die zuletzt verwendeten Apps zu öffnen, folgt die aktuelle App deinem Finger und verkleinert sich zu einer Karte. Verwende diesen Regler, um den Eckenradius der Karte anzupassen, wenn sie fast im Vollbildmodus ist, sodass er mit den Ecken deines Bildschirms übereinstimmt.
Taskbar
- Show taskbar (experimental)
+ Taskbar anzeigen (experimentell)
Suchen
Apps durchsuchen
- No apps found matching \"%1$s\"
+ Keine Apps gefunden, die mit „%1$s“ übereinstimmen
Aus dem Internet
Kontakte auf dem Gerät
Datei auf dem Gerät
Geräteeinstellungen
- Search for more apps
- Suche bei Startpage
- No app store or browser installed
- Clear search history
- Clear search box
+ Nach mehr Anwendungen suchen
+ Suche bei %1$s
+ Kein App-Store oder Browser installiert
+ Suchverlauf löschen
+ Suchfeld leeren
Suchen
- Show search bar
+ Suchleiste anzeigen
Tastatur automatisch anzeigen
- Fuzzy search
- Approximate matching for app searches
+ Unscharfe Suche
+ Ungefähre Übereinstimmung für Anwendungs-Suche
Vorschläge
- Show suggested apps at the top of the drawer
- Device search
- Search your phone contacts, files, and settings
+ Zeige Anwendungsvorschläge oben in der Übersicht
+ Gerätesuche
+ Durchsuchen Kontakte, Dateien und Einstellungen ihres Telefons
Versteckte Apps in Suchergebnissen anzeigen
Wenn vollständiger Name eingegeben wird
Such-Algorithmus
@@ -485,12 +501,12 @@
Globale Suche (auf dem Gerät)
Globale Suche (über ASI)
- Show in search results
+ In Suchergebnissen anzeigen
Apps & Verknüpfungen
- App shortcuts
+ Anwendungs Verknüpfungen
Personen
- Pixel tips
- Android settings
+ Pixel-Tipps
+ Android Einstellungen
Dateien
Webvorschläge
Suchverlauf
@@ -498,17 +514,21 @@
Medien, Dateien und mehr
Kontakte und mehr
- Via Startpage
+ Mit %1$s
- Maximum number of apps in search results
- Maximum number of people in search results
- Maximum number of files in search results
- Maximum number of settings entries in search results
- Maximum number of history entries in search results
- Maximum number of suggestions in search results
- Maximum web suggestion delay
+ Maximale Anzahl von Anwendungen in Suchergebnissen
+ Maximale Anzahl von Personen in Suchergebnissen
+ Maximale Anzahl von Dateien in Suchergebnissen
+ Maximale Anzahl an Einstellungen in Suchergebnissen
+ Maximale Anzahl von Verlaufseinträgen in Suchergebnissen
+ Maximale Anzahl von Vorschlägen in Suchergebnissen
+ Maximale Verzögerung für Webvorschläge
Um nach Kontakten zu suchen, erteile Lawnchair Berechtigungen für Kontakte und Telefon
Um Deine Dateien zu durchsuchen, erteile Lawnchair Speicher-Berechtigungen
- Grant permissions
+ Berechtigungen erteilen
+ Lawnchair (zusammengesetzt)
+ Web-Vorschlag-Anbieter
+ Anbieter-Symbol der Web-Vorschläge in Suchleiste anzeigen
+ Dock-Suchleisten-Stil angleichen
diff --git a/lawnchair/res/values-el-rGR/strings.xml b/lawnchair/res/values-el-rGR/strings.xml
index 4d63ee0039a..8395e624fc9 100644
--- a/lawnchair/res/values-el-rGR/strings.xml
+++ b/lawnchair/res/values-el-rGR/strings.xml
@@ -23,7 +23,7 @@
-->
Προεπισκόπηση
Δημιουργία
- Backup
+ Αντίγραφα ασφαλείας
Επαναφορά
Διαγραφή
Επαναφορά
@@ -34,16 +34,16 @@
Πάντα
Ποτέ
Πρόχειρο
- Copy link
+ Αντιγραφή συνδέσμου
Αντιγραφή
Επικόλληση
Φόρτωση…
Διαχειριζόμενο από τον εκκινητή Lawnchair
Προτιμήσεις
- Home settings
- System settings
- Change settings
+ Ρυθμίσεις αρχικής οθόνης
+ Ρυθμίσεις συστήματος
+ Αλλαγή ρυθμίσεων
Ταπετσαρία
- Background opacity
+ Αδιαφάνεια φόντου
- Copied to clipboard
+ Αντιγράφηκε στο πρόχειρο
Το στοιχείο αφαιρέθηκε
- What to show
+ Τι να εμφανίζεται
- To lock your phone when performing a gesture, Lawnchair requires accessibility access.\n\nLawnchair doesn\'t watch any user action, though the privilege to do so is required for all accessibility services. Lawnchair discards any event sent by the system.\n\nIn order to lock your phone, Lawnchair uses the performGlobalAction Accessibility service.
- %1$d x %2$d
+ Για να κλειδώσετε το τηλέφωνό σας όταν εκτελείτε μια χειρονομία, το εκκινητής Lawnchair απαιτεί πρόσβαση στην προσβασιμότητα.\n\nΟ Lawnchair δεν παρακολουθεί καμία ενέργεια χρήστη, αν και το προνόμιο να το κάνει αυτό απαιτείται για όλες τις υπηρεσίες προσβασιμότητας. Ο Lawnchair απορρίπτει οποιοδήποτε συμβάν αποστέλλεται από το σύστημα.\n\nΓια να κλειδώσετε το τηλέφωνό σας, ο εκκινητής Lawnchair χρησιμοποιεί την υπηρεσία προσβασιμότητας performGlobalAction.
+ %1$d × %2$d
%s & %s
Ρυθμίσεις
Γενικά
- Colors, icon packs, notification dots
- Home screen
- Feed, grid, icons
+ Χρώματα, πακέτα εικονιδίων, κουκκίδες ειδοποίησης
+ Αρχική οθόνη
+ Ροή, πλέγμα, εικονίδια
Ράφι
- Search bar, icon count
- App drawer
- Hidden apps, column count, icons
- Drawer search
- Web suggestions, global search
+ Μπάρα αναζήτησης, αριθμός εικονιδίων
+ Συρτάρι εφαρμογών
+ Κρυμμένες εφαρμογές, αριθμός στηλών, εικονίδια
+ Αναζήτηση συρταριού εφαρμογών
+ Προτάσεις ιστού, γενική αναζήτηση
Φάκελοι
- Row and column count
+ Αριθμός γραμμών και στηλών
Χειρονομίες
- Taps and swipes
+ Πατήματα και σαρώσεις
Πρόσφατα
- Clear All button, corner radius
+ Κουμπί καθαρισμού όλων, ακτίνα γωνίας
Πληροφορίες
- App info
+ Πληροφορίες εφαρμογής
Επανεκκίνηση του Lawnchair
- Experimental features
+ Πειραματικές λειτουργίες
- Font customization
+ Προσαρμογή γραμματοσειράς
Μερικά κείμενα παραμένουν αμετάβλητα
- At a Glance calendar customization
+ Προσαρμογή ημερολογίου Με μια Ματιά
Να επιτρέπεται η εμφάνιση ημερομηνίας σε μη Γρηγοριανά συστήματα ημερολογίου
- Increase maximum grid size limit
- Increase maximum allowed home screen grid size from 10 x 10 to 20 x 20
- Always reload icons
+ Αύξηση μέγιστου ορίου μεγέθους πλέγματος
+ Αύξηση του μέγιστου επιτρεπόμενου μεγέθους πλέγματος αρχικής οθόνης από 10×10 έως 20×20
+ Επαναφόρτωση εικονιδίων πάντοτε
Αποφυγή χρήσης αποθηκευμένων εικονιδίων από πακέτα εικονιδίων
- Lock/unlock
- Prevent selected app from closing when pressing \"Clear all\"
+ Κλείδωμα/ξεκλείδωμα
+ Αποτροπή κλεισίματος επιλεγμένης εφαρμογής κατά το πάτημα του \"Καθαρισμός όλων\"
- To access shortcuts and additional features, set Lawnchair as your default launcher
- Notification dots
- Show notification counter
- Notification dot color
- Notification counter color
- Warning: Notification dot and counter colors don\'t have enough contrast with each other
- Warning: Notification dot and counter colors might not always have enough contrast with each other
+ Για να αποκτήσετε πρόσβαση σε συντομεύσεις και πρόσθετες δυνατότητες, ορίστε τον εκκινητή Lawnchair ως προεπιλεγμένο πρόγραμμα εκκίνησης
+ Κουκκίδες ειδοποιήσεων
+ Εμφάνιση μετρητή ειδοποιήσεων
+ Χρώμα κουκκίδας ειδοποιήσεων
+ Χρώμα μετρητή ειδοποιήσεων
+ Προσοχή: Τα χρώματα των κουκκίδων ειδοποιήσεων και του μετρητή ειδοποιήσεων δεν έχουν αρκετή αντίθεση μεταξύ τους
+ Προσοχή: Τα χρώματα των κουκκίδων ειδοποιήσεων και του μετρητή ειδοποιήσεων ίσως δεν έχουν πάντα αρκετή αντίθεση μεταξύ τους
Απαιτείται πρόσβαση ειδοποιήσεων
- To show Notification Dots, turn on app notifications for %1$s
+ Για να εμφανίσετε τις κουκκίδες ειδοποίησης, ενεργοποιήστε τις ειδοποιήσεις εφαρμογών για %1$s
- Icon style
- Icon shape
- Icon size
- Show labels
- Label size
- Use multiple lines
+ Στυλ εικονιδίων
+ Σχήμα εικονιδίων
+ Μέγεθος εικονιδίων
+ Εμφάνιση ετικετών εικονιδίων
+ Μέγεθος ετικέτας εικονιδίων
+ Χρήση δύο γραμμών ετικέτας
- Transparent themed icons
+ Διαφανή θεματοποιημένα εικονίδια
Χρήση διαφανούς φόντου στα θεματοποιημένα εικονίδια
- Auto-adaptive icons
- For all non-adaptive icons
- Background lightness
- Use 100% background lightness for white
- Reset custom icons
+ Αυτόματα προσαρμοζόμενα εικονίδια
+ Για όλα τα μη προσαρμοζόμενα εικονίδια
+ Φωτεινότητα φόντου
+ Χρήση 100% φωτεινότητας για λευκό φόντο
+ Επαναφορά προσαρμοζόμενων εικονιδίων
Θα γίνει επαναφορά όλων των προσαρμοσμένων εικονιδίων. Θέλετε να συνεχίσετε;
Εικονίδια
- Reset to default
- Open external picker
- Pick icon from
- Couldn\'t load more icons
+ Επαναφορά στο προεπιλεγμένο εικονίδιο
+ Άνοιγμα εξωτερικού επιλογέα εικονιδίων
+ Επιλογή εικονιδίου από
+ Δεν ήταν δυνατή η φόρτωση περισσότερων εικονιδίων
Σύστημα
Κύκλος
@@ -161,54 +161,54 @@
iOS
Οκτάγωνο
One UI
- Rounded square
- Sharp square
+ Στρογγυλεμένο τετράγωνο
+ Αιχμηρό τετράγωνο
Τετράγωνο
Οβάλ Τετράγωνο
Δάκρυ
- Custom icon shape
- Create custom icon shape
- Edit custom icon shape
- Corner shape
+ Προσαρμοσμένο σχήμα εικονιδίων
+ Δημιουργία προσαρμοσμένου σχήματος εικονιδίων
+ Επεξεργασία προσαρμοσμένου σχήματος εικονιδίων
+ Σχήμα γωνίας
Στρογγυλό
Λείο
Κοφτό
- Top left
- Top right
- Bottom left
- Bottom right
- Export to clipboard
- Import from clipboard
- Clipboard doesn\'t contain a valid icon shape
+ Πάνω αριστερά
+ Πάνω δεξιά
+ Κάτω αριστερά
+ Κάτω δεξιά
+ Εξαγωγή στο πρόχειρο
+ Εισαγωγή από το πρόχειρο
+ Το πρόχειρο δεν περιέχει ένα έγκυρο σχήμα εικονιδίων
- Icon pack
- Themed icon source
- System icons
- Themed icons
+ Πακέτο εικονιδίων
+ Πηγή θεματοποιημένων εικονιδίων
+ Εικονίδια συστήματος
+ Θεματοποιημένα εικονίδια
Ανενεργό
- Home screen
- Home screen & app drawer
+ Αρχική οθόνη
+ Αρχική οθόνη & συρτάρι εφαρμογών
Χωρίς υποστηριζόμενα πακέτα εικονιδίων
- Add fonts
- OTF and TTF fonts are supported
+ Προσθήκη γραμματοσειρών
+ Υποστήριξη γραμματοσειρών OTF και TTF
Η γραμματοσειρά δεν βρέθηκε
- Font (experimental)
+ Γραμματοσειρά (πειραματικό χαρακτηριστικό)
Γενικά
Κεφαλίδες
- Headings (medium)
+ Κεφαλίδες (μεσαίου πάχους)
Σώμα
- Body (medium)
+ Σώμα (μεσαίου πάχους)
Πλάγια γραμματοσειρά
Λεπτή γραμματοσειρά
- Extra light
- Ελαφριά γραμματοσειρά
+ Εξαιρετικά φωτεινό
+ Φωτεινό
Κανονική γραμματοσειρά
Μεσαία γραμματοσειρά
Ημιέντονη γραμματοσειρά
Έντονη γραμματοσειρά
- Extra bold
+ Εξαιρετικά παχιά γραμματοσειρά
Παχιά γραμματοσειρά
+ Στυλ χρώματος
+ Ψεκασμός
+ Σημείο τονισμού
+ Ζωντανό
+ Εκφραστικό
+ Ουράνιο Τόξο
+ Φρουτοσαλάτα
+ Περιεχόμενο
+ Μονοχρωματικό
Χρώματα
- Accent color
+ Χρώμα έμφασης
+ Χρώμα περιγράμματος
Δείγματα
RGB
Κόκκινο
@@ -235,7 +246,7 @@
Φωτεινότητα
Hex
Μπάρες ρύθμισης
- Invalid color
+ Μη έγκυρο χρώμα
Φόρτιση
Φορτισμένο
- Battery low
+ Χαμηλή μπαταρία
"%1$d%% • Πλήρης φόρτιση σε %2$s"
Με μια Ματιά
- What to show
+ Τι να εμφανίζεται
Ημερολόγιο
- Date & time
+ Ημερομηνία & ώρα
Ημερομηνία
Ώρα
- Time format
- Follow system
- 12-hour format
- 24-hour format
+ Μορφή ώρας
+ Ακολουθεί την ώρα συστήματος
+ 12ωρη μορφή
+ 24ωρη μορφή
Καιρός
- Battery status
+ Κατάσταση μπαταρίας
Παίζει Τώρα
- Tap to set up
+ Πατήστε για ρύθμιση
Για να χρησιμοποιήσετε %1$s, ενεργοποιήστε τις Κουκκίδες Ειδοποιήσεων.
- Show on home screen
- At a Glance can be manually added to the home screen by placing the Lawnchair widget
+ Εμφάνιση στην αρχική οθόνη
+ Το γραφικό στοιχείο “Με μια Ματιά” μπορεί να προστεθεί χειροκίνητα τοποθετώντας το γραφικό με ονομασία “Lawnchair”
- At a Glance provider
+ Πάροχος γραφικού Με μια Ματιά
Google
Αναζήτηση Google
@@ -287,9 +298,9 @@
Νέα
Υποστήριξη
Προϊόν
- Design & development
+ Σχεδιασμός & ανάπτυξη
Ανάπτυξη
- QuickSwitch maintenance
+ Συντήρηση λειτουργίας QuickSwitch
Προγραμματιστές
Υποστήριξη & PR
Ευχαριστίες
@@ -299,112 +310,117 @@
Backup and restore
-->
- Create backup
- What to back up
- Layout and settings
+ Δημιουργία αντιγράφου ασφαλείας
+ Σε τι να δημιουργήσετε αντίγραφο ασφαλείας
+ Διάταξη και ρυθμίσεις
Ταπετσαρία
- Backup created
- Failed to create backup
- Restore backup
- What to restore
- Backup restored
- Failed to restore backup
- Invalid backup file
+ Δημιουργήθηκε αντίγραφο ασφαλείας
+ Αποτυχία δημιουργίας αντιγράφου ασφαλείας
+ Επαναφορά αντιγράφου ασφαλείας
+ Τι να επαναφέρετε
+ Έγινε επαναφορά αντιγράφου ασφαλείας
+ Αποτυχία επαναφοράς αντιγράφου ασφαλείας
+ Μη έγκυρο αρχείο αντιγράφου ασφαλείας
- Double tap
- Swipe up
- Swipe down
- Home button
- Back button
- Do nothing
+ Διπλό πάτημα
+ Σύρσιμο επάνω
+ Σύρετε κάτω
+ Κουμπί αρχικής οθόνης
+ Κουμπί επιστροφής
+ Καμία ενέργεια
Αναστολή
- Open notification panel
- Open app
+ Άνοιγμα πίνακα ειδοποιήσεων
+ Άνοιγμα εφαρμογής
Άνοιγμα %1$s
- Open app drawer
- Open app search
- Open search
- Pick app
- Admin permissions required
- To use Double-Tap to Sleep, set Lawnchair as a device admin app. Tap \"Open settings\", then tap \"Activate this device admin app.\"
+ Άνοιγμα συρταριού εφαρμογών
+ Άνοιγμα αναζήτησης εφαρμογών
+ Άνοιγμα αναζήτησης
+ Επιλογή εφαρμογής
+ Απαιτούνται δικαιώματα διαχειριστή
+ Για να χρησιμοποιήσετε το διπλό πάτημα για ύπνο, ορίστε τον εκκινητή Lawnchair ως εφαρμογή διαχείρισης συσκευής. Πατήστε στο “Άνοιγμα ρυθμίσεων” και μετά πατήστε “Ενεργοποίηση αυτής της εφαρμογής ως διαχειριστή της συσκευής.”
Double Tap to Sleep will be disabled.
- Turn on accessibility service
- To use Double-Tap to Sleep, turn on the Lawnchair accessibility service. Tap \"Open settings\", select \"Lawnchair\" and turn on \"Use Lawnchair.\"
- Open settings
+ Ενεργοποίηση υπηρεσίας προσβασιμότητας
+ Για να χρησιμοποιήσετε το διπλό πάτημα για ύπνο, ενεργοποιήστε την υπηρεσία προσβασιμότητας του εκκινητή Lawnchair. Πατήστε στο “Άνοιγμα ρυθμίσεων” και μετά επιλέξτε τον Lawnchair και ενεργοποιήστε την “Χρήση του Lawnchair.”
+ Άνοιγμα ρυθμίσεων
- Lawnchair bug report
- %1$s crashed
- Upload crash log
+ Αναφορά σφάλματος του Lawnchair
+ %1$s κράσαρε
+ Μεταφόρτωση αρχείου καταγραφής σφαλμάτων
Αποτυχία μεταφόρτωσης
Μεταφόρτωση…
- Bug reports
- Upload status
- %d new reports
- Multiple new reports
+ Αναφορές σφαλμάτων
+ Κατάσταση μεταφόρτωσης
+ %d νέες αναφορές
+ Πολλαπλές νέες αναφορές
- Home screen rotation
- Allow home screen rotation when device is rotated
- Add new apps to home screen
- Show feed
+ Περιστροφή αρχικής οθόνης
+ Να επιτρέπεται η περιστροφή της αρχικής οθόνης κατά την περιστροφή της συσκευής
+ Ενεργοποίηση θολώματος ταπετσαρίας
+ Ένταση θολώματος
+ Όριο παράγοντα
+ Προσθήκη νέων εφαρμογών στην αρχική οθόνη
+ Εμφάνιση ροής
Δεν υπάρχουν εγκατεστημένες εφαρμογές ροής
Ροή
- Feed provider
- Scroll wallpaper
- Wallpaper depth effect
- Zoom in and out of the wallpaper when transitioning between areas of the launcher
- Top shadow
- Home screen grid
- Lock home screen
- Unlock home screen
- Home screen is locked
+ Πάροχος ροής
+ Κύλιση ταπετσαρίας
+ Εφέ βάθους ταπετσαρίας
+ Μεγέθυνση και σμίκρυνση της ταπετσαρίας κατά τη μετάβαση μεταξύ περιοχών του εκκινητή
+ Σκιά κορυφής
+ Πλέγμα αρχικής οθόνης
+ Κλείδωμα αρχικής οθόνης
+ Ξεκλείδωμα αρχικής οθόνης
+ Η αρχική οθόνη είναι κλειδωμένη
Αποτροπή αλλαγών στη διάταξη της αρχικής οθόνης
Εμφάνιση διαχωριστικών κουκκίδων επιφανειών εργασίας
Χρήση κουκκίδων αντί γραμμών για εμφάνιση αριθμού σελίδας
- Use new pop-up style
- Use Material You\'s bouncy and slightly consolidated pop-up style
- Pop-up menu
- Show lock button
- Show system settings entry
- Show Edit button
- Status bar
- Show status bar
- Dark status bar
- Text color
+ Χρήση νέου αναδυόμενου στυλ
+ Χρήση του ελαφρώς ενοποιημένου αναδυόμενου στυλ, βασισμένο στον σχεδιασμό Material U
+ Αναδυόμενο μενού
+ Εμφάνιση κουμπιού κλειδώματος
+ Εμφάνιση καταχώρησης ρυθμίσεων συστήματος
+ Εμφάνιση κουμπιού επεξεργασίας
+ Γραμμή κατάστασης
+ Εμφάνιση γραμμής κατάστασης
+ Σκοτεινή γραμμή κατάστασης
+ Χρώμα κειμένου
Ελαφριά γραμματοσειρά
Σκοτεινό
- Rounded corners
- Allow overlap
- Enforce widget resizing
+ Στρογγυλεμένες γωνίες
+ Να επιτρέπεται η επικάλυψη
+ Επιβολή αλλαγής μεγέθους γραφικών στοιχείων
Να επιτρέπεται η αλλαγή μεγέθους των γραφικών στοιχείων που περιορίζονται σε ένα συγκεκριμένο μέγεθος
- Remove size constraints
+ Αφαίρεση περιορισμών μεγέθους γραφικών στοιχείων
Αφαίρεση των περιορισμών ελάχιστου και μέγιστου μεγέθους των γραφικών στοιχείων
- Show dock
- Search bar
- Search bar widget
+ Εμφάνιση μπάρας εφαρμογών
+ Μπάρα αναζήτησης
+ Γραφικό στοιχείο μπάρας αναζήτησης
Απενεργοποιημένο
- Google Search bar
- Corner radius
- Apply accent color
- Search provider
- Dock icons
- Bottom padding
+ Μπάρα αναζήτησης Google
+ Αδιαφάνεια
+ Πρόγραμμα
+ Ακτίνα γωνίας
+ Εφαρμογή χρώματος έμφασης
+ Πάροχος αναζήτησης
+ Εικονίδια μπάρας εφαρμογών
+ Κάτω περιθώριο
- App search
- %1$s and Lawnchair have a revenue share agreement.\n\nSearching with %1$s helps support Lawnchair.
+ Αναζήτηση εφαρμογών
+ %1$s και ο εκκινητής Lawnchair έχουν συμφωνία μεριδίου εσόδων.\n\nΗ αναζήτηση μέσω του %1$s βοηθά στην υποστήριξη του Lawnchair.
Εφαρμογή
Ιστοσελίδα
Απαιτείται η εφαρμογή
@@ -413,43 +429,43 @@
Google Lens
Φωνητική Αναζήτηση
- Hidden apps
- Load apps in bulk
- Load and display icons in bulk instead of individually
- Remember position
+ Κρυφές εφαρμογές
+ Μαζική φόρτωση εφαρμογών
+ Μαζική φόρτωση και εμφάνιση εικονιδίων αντί για μεμονωμένα
+ Απομνημόνευση θέσης
Απομνημόνευση θέσης συρταριού εφαρμογών μετά την έξοδο από το συρτάρι εφαρμογών
- Show scrollbar
- App drawer columns
- Row height
- Horizontal padding
+ Εμφάνιση πλαϊνής μπάρας κύλισης
+ Στήλες συρταριού εφαρμογών
+ Ύψος γραμμής
+ Οριζόντιο περιθώριο
- Hide from app drawer
- Hidden apps (%1$d)
+ Απόκρυψη από το συρτάρι εφαρμογών
+ Κρυφές εφαρμογές (%1$d)
- - %1$d app
- - %1$d apps
+ - %1$d εφαρμογή
+ - %1$d εφαρμογές
- Icon background opacity
- Icon background color
- Maximum folder columns
- Maximum folder rows
+ Αδιαφάνεια φόντου εικονιδίων
+ Χρώμα φόντου Εικονιδίων
+ Μέγιστος αριθμός στηλών φακέλου
+ Μέγιστος αριθμός σειρών φακέλου
- These settings will be ignored as Lawnchair isn\'t set as the Recents provider
- Incompatible system integration
- Your device is configured to have system gestures (known as Quickstep) provided by %1$s, but this version of %1$s isn\'t compatible with your Android version. To continue using your device, please uninstall %1$s updates or disable %1$s as a system gesture provider.
- Translucent background
- Background opacity
- Quick actions
+ Αυτές οι ρυθμίσεις θα αγνοηθούν καθώς ο εκκινητής Lawnchair δεν έχει οριστεί ως η υπηρεσία παροχής πρόσφατων εφαρμογών
+ Μη συμβατή ενσωμάτωση συστήματος
+ Η συσκευή σας έχει ρυθμιστεί ώστε να διαθέτει χειρονομίες συστήματος (υπηρεσία γνωστή ως Quickstep) που παρέχονται από το %1$s, αλλά αυτή η έκδοση του %1$s δεν είναι συμβατή με την έκδοση Android που διαθέτετε. Για να συνεχίσετε να χρησιμοποιείτε τη συσκευή σας, απεγκαταστήστε τις ενημερώσεις %1$s ή απενεργοποιήστε το %1$s ως πάροχο χειρονομιών συστήματος.
+ Ημιδιάφανο φόντο
+ Αδιαφάνεια φόντου
+ Γρήγορες ενέργειες
Κοινοποίηση
Φακός
- Clear all
+ Εκκαθάριση όλων
Αναγκαστικό κλείσιμο
- Screen corner radius
- Custom screen corner radius
- When you swipe up to open Recents, the current app follows your finger, shrinking into a card. Use this slider to adjust the corner radius of the card when it\'s nearly full screen so it matches the corners of your screen.
+ Ακτίνα γωνίας οθόνης
+ Προσαρμοσμένη ακτίνα γωνίας οθόνης
+ Όταν σύρετε προς τα πάνω για να ανοίξετε τα Πρόσφατα, η τρέχουσα εφαρμογή ακολουθεί το δάχτυλο σας και συρρικνώνεται σε μια κάρτα. Χρησιμοποιήστε αυτή τη γραμμή ρύθμισης για να ορίσετε την ακτίνα γωνίας της κάρτας όταν είναι σχεδόν σε πλήρη οθόνη έτσι ώστε να ταιριάζει με τις γωνίες της οθόνης σας.
Γραμμή Εργασιών
- Show taskbar (experimental)
+ Εμφάνιση γραμμής εργασιών (πειραματικό χαρακτηριστικό)
Αναζήτηση
- Αναζήτηση Εφαρμογών
- No apps found matching \"%1$s\"
+ Αναζήτηση εφαρμογών
+ Δεν βρέθηκαν εφαρμογές που να ταιριάζουν “%1$s”
Από το διαδίκτυο
- Contacts from device
- Files from device
- Settings from device
- Search for more apps
- Αναζήτηση σε Startpage
- No app store or browser installed
- Clear search history
- Clear search box
+ Επαφές από τη συσκευή
+ Αρχεία από τη συσκευή
+ Ρυθμίσεις από τη συσκευή
+ Αναζήτηση για περισσότερες εφαρμογές
+ Αναζήτηση στο %1$s
+ Δεν υπάρχει εγκατεστημένο κατάστημα εφαρμογών ή πρόγραμμα περιήγησης
+ Εκκαθάριση ιστορικού αναζήτησης
+ Εκκαθάριση πλαισίου αναζήτησης
Αναζήτηση
- Show search bar
- Automatically show keyboard
- Fuzzy search
- Approximate matching for app searches
+ Εμφάνιση μπάρας αναζήτησης
+ Αυτόματη εμφάνιση πληκτρολογίου
+ Ασαφής αναζήτηση
+ Αντιστοίχιση κατά προσέγγιση για αναζητήσεις εφαρμογών
Προτάσεις
- Show suggested apps at the top of the drawer
- Device search
- Search your phone contacts, files, and settings
- Show hidden apps in search results
- If full name is typed
- Search algorithm
+ Εμφάνιση προτεινόμενων εφαρμογών στο επάνω μέρος του συρταριού εφαρμογών
+ Αναζήτηση συσκευής
+ Αναζήτηση επαφών, αρχείων και ρυθμίσεων του τηλεφώνου σας
+ Εμφάνιση κρυφών εφαρμογών στα αποτελέσματα αναζήτησης
+ Εάν πληκτρολογηθεί το πλήρες όνομα
+ Αλγόριθμος αναζήτησης
Αναζήτηση Εφαρμογής
- Global search (on-device)
- Global search (via ASI)
+ Γενική αναζήτηση (στην συσκευή)
+ Γενική αναζήτηση (μέσω ASI)
- Show in search results
+ Εμφάνιση στα αποτελέσματα αναζήτησης
Εφαρμογές & Συντομεύσεις
- App shortcuts
+ Συντομεύσεις εφαρμογών
Άτομα
- Pixel tips
- Android settings
+ Συμβουλές Pixel
+ Ρυθμίσεις Android
Αρχεία
Προτάσεις ιστού
- Search history
+ Ιστορικό αναζήτησης
Αριθμομηχανή
Πολυμέσα, αρχεία, & άλλα
Επαφές και άλλα
- Μέσω Startpage
+ Μέσω %1$s
- Maximum number of apps in search results
- Maximum number of people in search results
- Maximum number of files in search results
- Maximum number of settings entries in search results
- Maximum number of history entries in search results
- Maximum number of suggestions in search results
- Maximum web suggestion delay
+ Μέγιστος αριθμός εφαρμογών στα αποτελέσματα αναζήτησης
+ Μέγιστος αριθμός ατόμων στα αποτελέσματα αναζήτησης
+ Μέγιστος αριθμός εφαρμογών στα αποτελέσματα αναζήτησης
+ Μέγιστος αριθμός καταχωρήσεων ρυθμίσεων στα αποτελέσματα αναζήτησης
+ Μέγιστος αριθμός καταχωρήσεων ιστορικού στα αποτελέσματα αναζήτησης
+ Μέγιστος αριθμός προτάσεων στα αποτελέσματα αναζήτησης
+ Μέγιστη καθυστέρηση προτάσεων ιστού
- To search for contacts, grant contacts and phone permissions to Lawnchair
- To search your files, grant storage permissions to Lawnchair
- Grant permissions
+ Για αναζήτηση επαφών, εκχωρήστε δικαιώματα ανάγνωσης επαφών και τηλεφώνου στον εκκινητή Lawnchair
+ Για αναζήτηση στα αρχεία σας, εκχωρήστε δικαιώματα ανάγνωσης αποθηκευτικού χώρου στον εκκινητή Lawnchair
+ Εκχώρηση δικαιωμάτων
+ Εκκινητής Lawnchair (σύνθεση)
+ Πάροχος προτάσεων ιστού
+ Χρήση εικονιδίου παρόχου προτάσεων ιστού στη μπάρα αναζήτησης
+ Ταίριασμα μορφής της μπάρας αναζήτησης με το στυλ της μπάρας εφαρμογών
diff --git a/lawnchair/res/values-en-rCA/strings.xml b/lawnchair/res/values-en-rCA/strings.xml
index 7b9f5713d65..54a560dce70 100644
--- a/lawnchair/res/values-en-rCA/strings.xml
+++ b/lawnchair/res/values-en-rCA/strings.xml
@@ -221,9 +221,20 @@
Dark
System
Match wallpaper
+
+ Color style
+ Spritz
+ Tonal Spot
+ Vibrant
+ Expressive
+ Rainbow
+ Fruit Salad
+ Content
+ Monochromatic
Colors
Accent color
+ Stroke color
Swatches
RGB
Red
@@ -357,6 +368,9 @@
Home screen rotation
Allow home screen rotation when device is rotated
+ Enable wallpaper blur
+ Blur intensity
+ Factor threshold
Add new apps to home screen
Show feed
No feed apps installed
@@ -397,6 +411,8 @@
Search bar widget
Disabled
Google Search bar
+ Opacity
+ Stroke
Corner radius
Apply accent color
Search provider
@@ -464,7 +480,7 @@
Files from device
Settings from device
Search for more apps
- Search on Startpage
+ Search on %1$s
No app store or browser installed
Clear search history
Clear search box
@@ -498,7 +514,7 @@
Media, files, and more
Contacts and more
- Via Startpage
+ Via %1$s
Maximum number of apps in search results
Maximum number of people in search results
@@ -511,4 +527,8 @@
To search for contacts, grant contacts and phone permissions to Lawnchair
To search your files, grant storage permissions to Lawnchair
Grant permissions
+ Lawnchair (compose)
+ Web suggestion provider
+ Show web suggestion provider icon in search bar
+ Match dock search bar style
diff --git a/lawnchair/res/values-es-rES/strings.xml b/lawnchair/res/values-es-rES/strings.xml
index 173bdd324d0..3f084deb8c3 100644
--- a/lawnchair/res/values-es-rES/strings.xml
+++ b/lawnchair/res/values-es-rES/strings.xml
@@ -23,7 +23,7 @@
-->
Vista previa
Crear
- Backup
+ Respaldo
Restaurar
Eliminar
Restablecer
@@ -34,16 +34,16 @@
Siempre
Nunca
Portapapeles
- Copy link
+ Copiar vínculo
Copiar
Pegar
Cargando…
Gestionado por Lawnchair
Preferencias
- Home settings
- System settings
- Change settings
+ Configuración inicial
+ Configuración del sistema
+ Cambiar ajustes
Fondo de Pantalla
- Background opacity
+ Opacidad del fondo
- Copied to clipboard
- Item eliminado
+ Copiado al portapapeles
+ Elemento eliminado
- What to show
+ Qué mostrar
- To lock your phone when performing a gesture, Lawnchair requires accessibility access.\n\nLawnchair doesn\'t watch any user action, though the privilege to do so is required for all accessibility services. Lawnchair discards any event sent by the system.\n\nIn order to lock your phone, Lawnchair uses the performGlobalAction Accessibility service.
- %1$d x %2$d
+ Para bloquear su teléfono al realizar un gesto, Lawnchair requiere acceso de accesibilidad.\n\nLawnchair no observará ninguna acción del usuario, aunque se requiere el privilegio de hacerlo para todos los servicios de accesibilidad. Lawnchair descarta cualquier evento enviado por el sistema.\n\nPara bloquear su teléfono, Lawnchair utiliza el servicio de accesibilidad performGlobalAction.
+
%s & %s
Ajustes
General
- Colors, icon packs, notification dots
- Home screen
- Feed, grid, icons
+ Colores, paquetes de iconos, punto de notificaciones
+ Pantalla principal
+ Feed, cuadrículas, iconos
Dock
- Search bar, icon count
- App drawer
- Hidden apps, column count, icons
- Drawer search
- Web suggestions, global search
+ Barra de búsqueda, número de iconos
+ Cajón de aplicaciones
+ Apps Ocultas, número de columnas, iconos
+ Búsqueda en el Cajón
+ Sugerencias de la web, búsqueda global
Carpetas
- Row and column count
+ Número de filas y de columnas
Gestos
- Taps and swipes
+ Toques y deslizamientos
Recientes
- Clear All button, corner radius
+ Botón \"borrar todo\", radio de la esquina
Acerca de
- App info
+ Información de la aplicación
Reiniciar Lawnchair
- Experimental features
+ Funciones experimentales
- Font customization
+ Tipografía personalizada
Algunos textos permanecen sin cambios
- At a Glance calendar customization
+ Personalizar el calendario del \"un vistazo\"
Permitir mostrar fechas en sistemas de calendario no gregorianos
- Increase maximum grid size limit
- Increase maximum allowed home screen grid size from 10 x 10 to 20 x 20
- Always reload icons
+ Incrementar el tamaño máximo de la cuadrícula
+ Aumenta el tamaño máximo de la cuadrícula de pantalla de inicio de 10 x 10 a 20 x 20
+ Recargar siempre los iconos
Evitar el uso de iconos en caché de paquetes de iconos
- Lock/unlock
- Prevent selected app from closing when pressing \"Clear all\"
+ Bloqueo/desbloqueo
+ Evitar que la aplicación seleccionada cierre al presionar \"Borrar todo\"
- To access shortcuts and additional features, set Lawnchair as your default launcher
- Notification dots
- Show notification counter
- Notification dot color
- Notification counter color
- Warning: Notification dot and counter colors don\'t have enough contrast with each other
- Warning: Notification dot and counter colors might not always have enough contrast with each other
+ Para acceder a atajos y características adicionales, establezca Lawnchair como su lanzador predeterminado
+ Puntos de Notificación
+ Mostrar el contador de notificaciones
+ Color del contador de notificaciones
+ Color del punto de notificación
+ Advertencia: Los puntos de notificación y los contadores de colores no tienen el suficiente contraste requerido
+ Advertencia: Los puntos de notificación y los contadores de colores no tienen el suficiente contraste entre sí
Se necesita acceso a las notificaciones
- To show Notification Dots, turn on app notifications for %1$s
+ Para ver los puntos de notificación, conceda los permisos para enviar notificaciones
+%1$s
- Icon style
- Icon shape
- Icon size
- Show labels
- Label size
- Use multiple lines
+ Estilo de icono
+ Forma del icono
+ Tamaño de iconos
+ Mostrar etiquetas
+ Tamaño de la etiqueta
+ Usar varias líneas
- Transparent themed icons
+ Iconos transparentes del tema
Usar fondo transparente en iconos temáticos
- Auto-adaptive icons
- For all non-adaptive icons
- Background lightness
- Use 100% background lightness for white
- Reset custom icons
+ Iconos adaptativos
+ Para todos los iconos que no se adapten
+ Luminosidad del fondo
+ Usar 100% de luz de fondo para blancos
+ Restablecer los iconos personalizados
Todos los iconos personalizados se restablecerán. ¿Desea continuar?
Iconos
Restablecer a lo predeterminado
Abrir selector externo
- Pick icon from
- Couldn\'t load more icons
+ Elegir icono desde
+ No se pudieron cargar más iconos
Sistema
Circular
@@ -161,54 +162,54 @@
iOS
Octágono
One UI
- Rounded square
- Sharp square
+ Cuadrado redondo
+ Cuadrado afilado
Cuadrado
Círculo Cuadrado
Lágrima
- Custom icon shape
- Create custom icon shape
- Edit custom icon shape
- Corner shape
+ Forma de icono personalizada
+ Crear forma de ícono personalizada
+ Editar forma de icono personalizada
+ Forma de esquina
Redondo
Suavizado
Cortado
- Top left
- Top right
- Bottom left
- Bottom right
- Export to clipboard
- Import from clipboard
- Clipboard doesn\'t contain a valid icon shape
+ Arriba izquierda
+ Arriba derecha
+ Abajo a la izquierda
+ Abajo a la derecha
+ Exportar al portapapeles
+ Importar desde el portapapeles
+ El portapapeles no contiene una forma de icono válida
- Icon pack
- Themed icon source
- System icons
- Themed icons
+ Paquete de iconos
+ Fuente de iconos temáticos
+ Iconos del sistema
+ Iconos Temáticos
Apagado
- Home screen
- Home screen & app drawer
+ Pantalla principal
+ Pantalla de Inicio & Cajón de aplicaciones
No hay packs de iconos compatibles
- Add fonts
- OTF and TTF fonts are supported
+ Añadir fuentes
+ Las fuentes OTF y TTF son compatibles
Fuente no encontrada
- Font (experimental)
+ Fuente (Experimental)
General
Encabezados
- Headings (medium)
+ Encabezados (mediano)
Cuerpo
- Body (medium)
+ Cuerpo (mediano)
Cursiva
Delgada
- Extra light
+ Luz adicional
Claro
Regular
Media
Seminegrita
Negrita
- Extra bold
+ Negrita
Negra
+ Estilo de color
+ Anaranjado
+ Mezcla de tonalidades
+ Vibrante
+ Expresivo
+ Arcoiris
+ Ensalada de frutas
+ Contenido
+ Monocromático
Colores
- Accent color
+ Color de acento
+ Stroke color
Muestras
RGB
Rojo
@@ -235,7 +247,7 @@
Brillo
HEX
Controles deslizantes
- Invalid color
+ Color no válido
Cargando
Cargado
- Battery low
+ Batería baja
"%1$d%% — Cargado en %2$s"
De un Vistazo
- What to show
+ Qué mostrar
Calendario
- Date & time
+ Fecha y hora
Fecha
Hora
- Time format
- Follow system
- 12-hour format
- 24-hour format
+ Formato de hora
+ Predeterminado del Sistema
+ Formato de 12 horas
+ Formato de 24 horas
Clima
- Battery status
+ Estado de la batería
Reproduciendo
- Tap to set up
+ Toca para configurar
Para usar %1$s, activa los puntos de notificación.
- Show on home screen
- At a Glance can be manually added to the home screen by placing the Lawnchair widget
+ Mostrar en la pantalla de inicio
+ De un Vistazo puede ser agregado a la pantalla de inicio colocando el widget \"Lawnchair\"
- At a Glance provider
+ Mostrar el Widget \"De Un Vistazo\"
Google
Búsqueda de Google
@@ -287,9 +299,9 @@
Noticias
Soporte
Producto
- Design & development
+ Diseño y desarrollo
Desarrollo
- QuickSwitch maintenance
+ Rapidez de Mantenimiento
Opciones de desarrollador
Soporte & Relaciones Públicas
Reconocimientos
@@ -299,14 +311,14 @@
Backup and restore
-->
- Create backup
- What to back up
- Layout and settings
+ Crear copia de seguridad
+ Que quieres respaldar
+ Diseño y configuración
Fondo de pantalla
Copia de seguridad creada
No se pudo crear la copia de seguridad
- Restore backup
- What to restore
+ Restaurar respaldo
+ Que quieres restaurar
Copia de seguridad restaurada
No se pudo restaurar la copia de seguridad
Archivo de copia de seguridad inválido
@@ -315,96 +327,101 @@
Gesture settings
-->
- Double tap
- Swipe up
- Swipe down
- Home button
- Back button
- Do nothing
+ Doble pulsación
+ Deslizar hacia arriba
+ Deslizar hacia abajo
+ Botón de inicio
+ Botón de atrás
+ No hacer nada
Modo reposo
- Open notification panel
- Open app
+ Abrir panel de notificaciones
+ Abrir app
Abrir %1$s
- Open app drawer
- Open app search
- Open search
- Pick app
- Admin permissions required
- To use Double-Tap to Sleep, set Lawnchair as a device admin app. Tap \"Open settings\", then tap \"Activate this device admin app.\"
+ Abrir cajón de aplicaciones
+ Abrir buscador de aplicaciones
+ Abrir búsqueda
+ Elegir app
+ Permisos de administrador requeridos
+ Para usar el doble toque para apagar la pantalla, establece Lawnchair como una app de administrador de dispositivos. Pulsa en \"Abrir Configuración\", luego en \"Activar esta aplicación de administrador de dispositivos.\"
Se desactivará el doble toque para dormir.
- Turn on accessibility service
- To use Double-Tap to Sleep, turn on the Lawnchair accessibility service. Tap \"Open settings\", select \"Lawnchair\" and turn on \"Use Lawnchair.\"
- Open settings
+ Activar el servicio de accesibilidad
+ Para usar el doble toque para apagar la pantalla, activa el servicio de accesibilidad de Lawnchair. Toca en \"Abrir Configuración\", luego selecciona \"Lawnchair\" y activa \"Usar Lawnchair\".
+ Abrir configuración
- Lawnchair bug report
- %1$s crashed
- Upload crash log
+ Reportar error de Lawnchair
+ %1$s ha dejado de funcionar
+ Cargar registro de error
Error al subir
Subiendo…
- Bug reports
- Upload status
- %d new reports
- Multiple new reports
+ Reportes de errores
+ Estado de subida
+ %d nuevos informes
+ Varios informes nuevos
- Home screen rotation
- Allow home screen rotation when device is rotated
- Add new apps to home screen
- Show feed
+ Rotación de Pantalla de Inicio
+ Permitir rotación de la pantalla de inicio cuando se gira el dispositivo
+ Habilitar desenfoque de fondo de pantalla
+ Intensidad del desenfoque
+ Umbral de factor
+ Añadir nuevas aplicaciones a la pantalla de inicio
+ Mostrar Feed
No hay apps de feed instaladas
Feed
- Feed provider
- Scroll wallpaper
- Wallpaper depth effect
- Zoom in and out of the wallpaper when transitioning between areas of the launcher
- Top shadow
- Home screen grid
- Lock home screen
- Unlock home screen
- Home screen is locked
+ Proveedor del feed
+ Desplazar fondo
+ Efecto de profundidad del fondo de pantalla
+ Acerca y aleja el fondo de pantalla al cambiar entre áreas del launcher
+ Mostrar sombra superior
+ Cuadrícula de Pantalla de Inicio
+ Bloquear pantalla de inicio
+ Desbloquear pantalla de inicio
+ La pantalla de inicio está bloqueada
Evita cambios en la disposición de la pantalla de inicio
Mostrar paginación de puntos
Usar puntos en vez de líneas para mostrar el número de página
- Use new pop-up style
- Use Material You\'s bouncy and slightly consolidated pop-up style
- Pop-up menu
- Show lock button
- Show system settings entry
- Show Edit button
- Status bar
- Show status bar
- Dark status bar
- Text color
+ Usar nuevo estilo de ventana emergente
+ Usa el estilo del material rebotado y ligeramente consolidado estilo
+ Menú emergente
+ Mostrar botón de bloqueo
+ Mostrar entrada de configuración del sistema
+ Mostrar botón de edición botón
+ Barra de estado
+ Mostrar Barra de estado
+ Barra de Estado Oscura
+ Color del texto
Claro
Oscuro
- Rounded corners
- Allow overlap
- Enforce widget resizing
+ Esquinas Redondeadas
+ Permitir superposición
+ Forzar redimensionamiento del Widget
Permite redimensionar los widgets que están limitados a un tamaño específico
- Remove size constraints
+ Quitar restricciones de tamaño
Remueve las restricciones de tamaño mínimo y máximo de los widgets
- Show dock
- Search bar
- Search bar widget
+ Mostrar Dock
+ Barra de Búsqueda
+ Widget de barra de búsqueda
Deshabilitado
- Google Search bar
+ Barra de búsqueda de Google
+ Opacidad
+ Stroke
Radio de esquina
- Apply accent color
- Search provider
- Dock icons
- Bottom padding
+ Aplicar acento de color
+ Proveedor de Búsqueda
+ Dock iconos
+ Relleno inferior
- App search
- %1$s and Lawnchair have a revenue share agreement.\n\nSearching with %1$s helps support Lawnchair.
+ Búsqueda de Aplicaciones
+ %1$s y Lawnchair tienen un acuerdo de reparto de ingresos.\n\nBuscar con %1$s ayuda a apoyar a Lawnchair.
Aplicación
Página web
App requerida
@@ -413,43 +430,43 @@
Google Lens
Búsqueda por Voz
- Hidden apps
- Load apps in bulk
- Load and display icons in bulk instead of individually
- Remember position
+ Apps ocultas
+ Cargar apps en masa
+ Cargar y mostrar iconos en masa en lugar de individualmente
+ Recordar posición
Recordar la posición del cajón de aplicaciones después de salir del cajón
- Show scrollbar
- App drawer columns
- Row height
- Horizontal padding
+ Mostrar la barra de desplazamiento
+ Columnas del cajón de aplicaciones
+ Altura de fila
+ Relleno horizontal
- Hide from app drawer
- Hidden apps (%1$d)
+ Ocultar del cajón de aplicaciones
+ Apps ocultas (%1$d)
- - %1$d app
- - %1$d apps
+ - %1$d aplicacion
+ - %1$d aplicaciones
- Icon background opacity
- Icon background color
- Maximum folder columns
- Maximum folder rows
+ Opacidad del fondo del icono
+ Color de fondo del icono
+ Columnas máximas de carpetas
+ Máximas filas de carpetas
- These settings will be ignored as Lawnchair isn\'t set as the Recents provider
- Incompatible system integration
- Your device is configured to have system gestures (known as Quickstep) provided by %1$s, but this version of %1$s isn\'t compatible with your Android version. To continue using your device, please uninstall %1$s updates or disable %1$s as a system gesture provider.
- Translucent background
- Background opacity
- Quick actions
+ Estos ajustes se ignorarán, ya que Lawnchair no está configurado como el proveedor de recientes
+ Integración del sistema incompatible
+ Su dispositivo está configurado para tener gestos del sistema (conocidos como Quickstep) proporcionados por %1$s, pero esta versión de %1$s no es compatible con tu versión de Android. Para continuar utilizando tu dispositivo, por favor desinstala las actualizaciones de %1$s o deshabilita %1$s como proveedor de gestos del sistema.
+ Fondo translúcido
+ Opacidad del fondo
+ Acciones rápidas
Compartir
Lens
- Clear all
+ Borrar todo
Forzar la detención
- Screen corner radius
- Custom screen corner radius
- When you swipe up to open Recents, the current app follows your finger, shrinking into a card. Use this slider to adjust the corner radius of the card when it\'s nearly full screen so it matches the corners of your screen.
+ Radio de esquina de la pantalla
+ Radio de esquina de la pantalla personalizado
+ Cuando deslizas hacia abajo para abrir Recientes, la aplicación actual sigue tu dedo, encogiéndose en una tarjeta. Utiliza este control deslizante para ajustar el radio de esquina de la tarjeta cuando es casi de pantalla completa de tal forma que coincida con las esquinas de tu pantalla.
Barra de tareas
- Show taskbar (experimental)
+ Mostrar barra de tareas (Experimental)
Buscar
Buscar aplicaciones
- No apps found matching \"%1$s\"
+ No se han encontrado aplicaciones que coincidan con \"%1$s\"
De internet
- Contacts from device
- Files from device
- Settings from device
- Search for more apps
- Buscar en Startpage
- No app store or browser installed
- Clear search history
- Clear search box
+ Contactos del dispositivo
+ Archivos del dispositivo
+ Ajustes del dispositivo
+ Buscar más aplicaciones
+ Buscar en %1$s
+ No hay tienda de aplicaciones ni navegador instalado
+ Limpiar historial de búsqueda
+ Limpiar cuadro de búsqueda
Buscar
- Show search bar
- Automatically show keyboard
- Fuzzy search
- Approximate matching for app searches
+ Mostrar Barra de Búsqueda
+ Mostrar teclado automáticamente
+ Búsqueda Aproximada
+ Coincidencia aproximada de búsquedas de aplicaciones
Sugerencias
- Show suggested apps at the top of the drawer
- Device search
- Search your phone contacts, files, and settings
- Show hidden apps in search results
- If full name is typed
- Search algorithm
+ Mostrar las aplicaciones sugeridas en la parte superior del cajón de aplicaciones
+ Buscar en el Dispositivo
+ Busca en tus contactos, archivos y ajustes
+ Mostrar aplicaciones ocultas en los resultados de la búsqueda
+ Si el nombre completo está escrito
+ Algoritmo de búsqueda
Búsqueda de Aplicaciones
- Global search (on-device)
- Global search (via ASI)
+ Búsqueda global (en el dispositivo)
+ Búsqueda global (a través de ASI)
- Show in search results
+ Mostrar en los resultados de búsqueda
Apps y Atajos
- App shortcuts
+ Accesos directos
Contactos
- Pixel tips
- Android settings
+ Consejos de Pixel
+ Ajustes de Android
Archivos
Sugerencias web
- Search history
+ Historial de búsqueda
Calculadora
Multimedia, archivos y más
Contactos y más
- Desde Startpage
+ Via %1$s
- Maximum number of apps in search results
- Maximum number of people in search results
- Maximum number of files in search results
- Maximum number of settings entries in search results
- Maximum number of history entries in search results
- Maximum number of suggestions in search results
- Maximum web suggestion delay
+ Número máximo de aplicaciones en los resultados de la búsqueda
+ Número máximo de personas en los resultados de la búsqueda
+ Número máximo de archivos en los resultados de búsqueda
+ Número máximo de entradas de ajustes en los resultados de búsqueda
+ Número máximo de entradas del historial en los resultados de búsqueda
+ Número máximo de sugerencias en los resultados de búsqueda
+ Retraso máximo de sugerencias web
- To search for contacts, grant contacts and phone permissions to Lawnchair
- To search your files, grant storage permissions to Lawnchair
- Grant permissions
+ Para buscar contactos, permítele a Lawnchair los permisos de Contactos y Teléfono
+ Para buscar en tus archivos, permítele a Lawnchair los permisos de Almacenamiento
+ Permitir los permisos
+ Lawnchair (compuesto)
+ Proveedor de sugerencias web
+ Mostrar icono del proveedor de sugerencias en la barra de búsqueda
+ Coincidir con el estilo de barra de búsqueda
diff --git a/lawnchair/res/values-et-rEE/strings.xml b/lawnchair/res/values-et-rEE/strings.xml
index 7b9f5713d65..54a560dce70 100644
--- a/lawnchair/res/values-et-rEE/strings.xml
+++ b/lawnchair/res/values-et-rEE/strings.xml
@@ -221,9 +221,20 @@
Dark
System
Match wallpaper
+
+ Color style
+ Spritz
+ Tonal Spot
+ Vibrant
+ Expressive
+ Rainbow
+ Fruit Salad
+ Content
+ Monochromatic
Colors
Accent color
+ Stroke color
Swatches
RGB
Red
@@ -357,6 +368,9 @@
Home screen rotation
Allow home screen rotation when device is rotated
+ Enable wallpaper blur
+ Blur intensity
+ Factor threshold
Add new apps to home screen
Show feed
No feed apps installed
@@ -397,6 +411,8 @@
Search bar widget
Disabled
Google Search bar
+ Opacity
+ Stroke
Corner radius
Apply accent color
Search provider
@@ -464,7 +480,7 @@
Files from device
Settings from device
Search for more apps
- Search on Startpage
+ Search on %1$s
No app store or browser installed
Clear search history
Clear search box
@@ -498,7 +514,7 @@
Media, files, and more
Contacts and more
- Via Startpage
+ Via %1$s
Maximum number of apps in search results
Maximum number of people in search results
@@ -511,4 +527,8 @@
To search for contacts, grant contacts and phone permissions to Lawnchair
To search your files, grant storage permissions to Lawnchair
Grant permissions
+ Lawnchair (compose)
+ Web suggestion provider
+ Show web suggestion provider icon in search bar
+ Match dock search bar style
diff --git a/lawnchair/res/values-fa-rIR/strings.xml b/lawnchair/res/values-fa-rIR/strings.xml
index 280d675802f..4dadbd42f5b 100644
--- a/lawnchair/res/values-fa-rIR/strings.xml
+++ b/lawnchair/res/values-fa-rIR/strings.xml
@@ -221,9 +221,20 @@
تاریک
سیستم
Match wallpaper
+
+ Color style
+ Spritz
+ Tonal Spot
+ Vibrant
+ Expressive
+ Rainbow
+ Fruit Salad
+ Content
+ Monochromatic
رنگها
Accent color
+ Stroke color
سواچها
آرجیبی
قرمز
@@ -357,6 +368,9 @@
Home screen rotation
Allow home screen rotation when device is rotated
+ Enable wallpaper blur
+ Blur intensity
+ Factor threshold
Add new apps to home screen
Show feed
No feed apps installed
@@ -397,6 +411,8 @@
Search bar widget
غیر فعال
Google Search bar
+ Opacity
+ Stroke
Corner radius
Apply accent color
Search provider
@@ -464,7 +480,7 @@
Files from device
Settings from device
Search for more apps
- Search on Startpage
+ Search on %1$s
No app store or browser installed
Clear search history
Clear search box
@@ -498,7 +514,7 @@
Media, files, and more
Contacts and more
- Via Startpage
+ Via %1$s
Maximum number of apps in search results
Maximum number of people in search results
@@ -511,4 +527,8 @@
To search for contacts, grant contacts and phone permissions to Lawnchair
To search your files, grant storage permissions to Lawnchair
Grant permissions
+ Lawnchair (compose)
+ Web suggestion provider
+ Show web suggestion provider icon in search bar
+ Match dock search bar style
diff --git a/lawnchair/res/values-fi-rFI/strings.xml b/lawnchair/res/values-fi-rFI/strings.xml
index fddfc7ab9a1..478689f2c2e 100644
--- a/lawnchair/res/values-fi-rFI/strings.xml
+++ b/lawnchair/res/values-fi-rFI/strings.xml
@@ -221,9 +221,20 @@
Tumma
Järjestelmä
Match wallpaper
+
+ Color style
+ Spritz
+ Tonal Spot
+ Vibrant
+ Expressive
+ Rainbow
+ Fruit Salad
+ Content
+ Monochromatic
Värit
Accent color
+ Stroke color
Väripaletit
RGB
Punainen
@@ -357,6 +368,9 @@
Home screen rotation
Allow home screen rotation when device is rotated
+ Enable wallpaper blur
+ Blur intensity
+ Factor threshold
Add new apps to home screen
Show feed
No feed apps installed
@@ -397,6 +411,8 @@
Search bar widget
Pois käytöstä
Google Search bar
+ Opacity
+ Stroke
Corner radius
Apply accent color
Search provider
@@ -464,7 +480,7 @@
Files from device
Settings from device
Search for more apps
- Search on Startpage
+ Search on %1$s
No app store or browser installed
Clear search history
Clear search box
@@ -498,7 +514,7 @@
Media, files, and more
Contacts and more
- Via Startpage
+ Via %1$s
Maximum number of apps in search results
Maximum number of people in search results
@@ -511,4 +527,8 @@
To search for contacts, grant contacts and phone permissions to Lawnchair
To search your files, grant storage permissions to Lawnchair
Grant permissions
+ Lawnchair (compose)
+ Web suggestion provider
+ Show web suggestion provider icon in search bar
+ Match dock search bar style
diff --git a/lawnchair/res/values-fil-rPH/strings.xml b/lawnchair/res/values-fil-rPH/strings.xml
index bfcdcadd907..879955f5edf 100644
--- a/lawnchair/res/values-fil-rPH/strings.xml
+++ b/lawnchair/res/values-fil-rPH/strings.xml
@@ -221,9 +221,20 @@
Dark
System
Match wallpaper
+
+ Color style
+ Spritz
+ Tonal Spot
+ Vibrant
+ Expressive
+ Rainbow
+ Fruit Salad
+ Content
+ Monochromatic
Mga kulay
Accent color
+ Stroke color
Swatches
RGB
Pula
@@ -357,6 +368,9 @@
Home screen rotation
Allow home screen rotation when device is rotated
+ Enable wallpaper blur
+ Blur intensity
+ Factor threshold
Add new apps to home screen
Show feed
No feed apps installed
@@ -397,6 +411,8 @@
Search bar widget
Disabled
Google Search bar
+ Opacity
+ Stroke
Corner radius
Apply accent color
Search provider
@@ -464,7 +480,7 @@
Files from device
Settings from device
Search for more apps
- Search on Startpage
+ Search on %1$s
No app store or browser installed
Clear search history
Clear search box
@@ -498,7 +514,7 @@
Media, files, and more
Contacts and more
- Via Startpage
+ Via %1$s
Maximum number of apps in search results
Maximum number of people in search results
@@ -511,4 +527,8 @@
To search for contacts, grant contacts and phone permissions to Lawnchair
To search your files, grant storage permissions to Lawnchair
Grant permissions
+ Lawnchair (compose)
+ Web suggestion provider
+ Show web suggestion provider icon in search bar
+ Match dock search bar style
diff --git a/lawnchair/res/values-fr-rFR/strings.xml b/lawnchair/res/values-fr-rFR/strings.xml
index fe1d2951ab8..54a79458876 100644
--- a/lawnchair/res/values-fr-rFR/strings.xml
+++ b/lawnchair/res/values-fr-rFR/strings.xml
@@ -23,7 +23,7 @@
-->
Aperçu
Créer
- Backup
+ Sauvegarder
Restaurer
Supprimer
Réinitialiser
@@ -34,16 +34,16 @@
Toujours
Jamais
Presse-papier
- Copy link
+ Copier le lien
Copier
Coller
Chargement…
Géré par Lawnchair
Préférences
- Home settings
- System settings
- Change settings
+ Paramètres de l\'accueil
+ Paramètres du système
+ Modifier les paramètres
Fond d\'écran
- Background opacity
+ Opacité de l\'arrière-plan
- Copied to clipboard
+ Copié dans le presse-papiers
Élément supprimé
- What to show
+ Informations à afficher
Pour pouvoir verrouiller votre téléphone en un seul geste, Lawnchair a besoin des droits d\'accessibilité.\n\nLawnchair n\'observe aucune action utilisateur, mais ce privilège est accordé à tous les services d\'accessibilité. Lawnchair rejette tout événement envoyé par le système.\n\nAfin de verrouiller votre téléphone, Lawnchair utilise le service d\'accessibilité performGlobalAction.
%1$d x %2$d
@@ -81,77 +81,77 @@
-->
Paramètres
Général
- Colors, icon packs, notification dots
- Home screen
- Feed, grid, icons
+ Couleurs, packs d\'icônes, pastilles de notification
+ Écran d\'accueil
+ Flux, grille, icônes
Dock
- Search bar, icon count
- App drawer
- Hidden apps, column count, icons
- Drawer search
- Web suggestions, global search
+ Barre de recherche, nombre d\'icônes
+ Tiroir d\'applications
+ Applications masquées, nombre de colonnes, icônes
+ Recherche dans le tiroir
+ Suggestions Web, recherche globale
Dossiers
- Row and column count
+ Nombre de lignes et de colonnes
Gestes
- Taps and swipes
+ Appuis et balayages
Récents
- Clear All button, corner radius
+ Bouton Tout effacer, rayon d\'angle
À propos
- App info
+ Infos sur l\'appli
Redémarrer Lawnchair
- Experimental features
+ Fonctionnalités expérimentales
- Font customization
+ Personnalisation de la police
Certains textes restent inchangés
- At a Glance calendar customization
+ Personnalisation du calendrier dans Aperçu
Autoriser l\'affichage de la date dans les systèmes de calendrier non grégoriens
- Increase maximum grid size limit
- Increase maximum allowed home screen grid size from 10 x 10 to 20 x 20
- Always reload icons
+ Augmenter la taille maximale de la grille de l\'écran d\'accueil
+ Augmenter la taille maximale autorisée de la grille de 10 x 10 à 20 x 20
+ Toujours recharger les icônes
Éviter d\'utiliser les icônes en cache provenant des packs d\'icônes
- Lock/unlock
- Prevent selected app from closing when pressing \"Clear all\"
+ Verrouiller/déverrouiller
+ Empêcher l\'application sélectionnée d\'être fermée lors d\'un appui sur « Tout effacer »
- To access shortcuts and additional features, set Lawnchair as your default launcher
- Notification dots
- Show notification counter
- Notification dot color
- Notification counter color
- Warning: Notification dot and counter colors don\'t have enough contrast with each other
- Warning: Notification dot and counter colors might not always have enough contrast with each other
+ Pour pouvoir accéder aux raccourcis et à des fonctionnalités supplémentaires, définissez Lawnchair en tant que lanceur d\'applications par défaut.
+ Pastilles de notification
+ Afficher le compteur de notifications
+ Couleur des pastilles de notification
+ Couleur du compteur de notifications
+ Attention : il n\'y a pas assez de contraste entre la couleur de la pastille et celle du compteur
+ Attention : il se peut qu\'il n\'y ait pas toujours assez de contraste entre la couleur de la pastille et celle du compteur
Accès aux notifications requis
- To show Notification Dots, turn on app notifications for %1$s
+ Pour afficher les pastilles de notification, activez les notifications pour l\'application %1$s.
- Icon style
- Icon shape
- Icon size
- Show labels
- Label size
- Use multiple lines
+ Style d\'icône
+ Forme d\'icône
+ Taille des icônes
+ Afficher le nom des éléments
+ Taille du nom des éléments
+ Utiliser plusieurs lignes
- Transparent themed icons
+ Icônes à thème transparentes
Appliquer un arrière-plan transparent aux icônes à thème
- Auto-adaptive icons
- For all non-adaptive icons
- Background lightness
- Use 100% background lightness for white
- Reset custom icons
+ Icônes adaptatives automatiques
+ Pour toutes les icônes non-adaptatives
+ Luminosité de l\'arrière-plan
+ Définissez la luminosité à 100 % pour un arrière-plan blanc
+ Réinitialiser les icônes personnalisées
Toutes les icônes personnalisées seront réinitialisées. Voulez-vous continuer ?
Icônes
Réinitialiser
Ouvrir le sélecteur externe
- Pick icon from
- Couldn\'t load more icons
+ Choisir une icône parmi
+ Impossible de charger plus d\'icônes
Système
Cercle
@@ -161,45 +161,45 @@
iOS
Octogone
One UI
- Rounded square
- Sharp square
+ Carré arrondi
+ Carré net
Carré
Carré rond
Goutte
- Custom icon shape
- Create custom icon shape
- Edit custom icon shape
- Corner shape
+ Forme d\'icône personnalisée
+ Créer une forme d\'icône personnalisée
+ Modifier la forme d\'icône personnalisée
+ Type d\'angle
Arrondi
Lisse
Coupé
- Top left
- Top right
- Bottom left
- Bottom right
- Export to clipboard
- Import from clipboard
- Clipboard doesn\'t contain a valid icon shape
+ En haut à gauche
+ En haut à droite
+ En bas à gauche
+ En bas à droite
+ Exporter vers le presse-papier
+ Importer depuis le presse-papier
+ Le presse-papier ne contient pas de forme d\'icône valide
- Icon pack
- Themed icon source
- System icons
- Themed icons
+ Pack d\'icônes
+ Source des icônes à thème
+ Icônes du système
+ Icônes à thème
Désactivé
- Home screen
- Home screen & app drawer
+ Écran d\'accueil
+ Écran d\'accueil et tiroir d\'applications
Aucun pack d\'icônes pris en charge
- Add fonts
- OTF and TTF fonts are supported
+ Ajouter des polices
+ Les polices sont prises en charge aux formats OTF et TTF
Police introuvable
- Font (experimental)
+ Police (expérimental)
Général
Titres
- Headings (medium)
+ Titres (medium)
Corps
- Body (medium)
+ Corps (medium)
Italic
Thin
Extra light
@@ -220,10 +220,21 @@
Clair
Sombre
Système
- Match wallpaper
+ En fonction du fond d\'écran
+
+ Style des couleurs
+ Spritz
+ Point tonal
+ Vif
+ Expressif
+ Arc-en-ciel
+ Salade de fruits
+ Contenu
+ Monochromatique
Couleurs
- Accent color
+ Couleur d\'accentuation
+ Couleur du contour
Échantillons
RVB
Rouge
@@ -235,7 +246,7 @@
Luminosité
Hexadécimal
Curseurs
- Invalid color
+ Couleur invalide
Recharge en cours
Chargé
- Battery low
+ Batterie faible
"%1$d% % — Chargé dans %2$s"
Aperçu
- What to show
+ Informations à afficher
Calendrier
- Date & time
+ Date et heure
Date
Heure
- Time format
- Follow system
- 12-hour format
- 24-hour format
+ Format de l\'heure
+ Utiliser le paramètre du système
+ Format 12 heures
+ Format 24 heures
Météo
- Battery status
+ État de la batterie
En écoute
- Tap to set up
+ Appuyez pour configurer
Pour utiliser %1$s, activez les pastilles de notifications.
- Show on home screen
- At a Glance can be manually added to the home screen by placing the Lawnchair widget
+ Afficher sur l\'écran d\'accueil
+ Aperçu peut être ajouté manuellement à l\'écran d\'accueil en plaçant le widget Lawnchair
- At a Glance provider
+ Fournisseur d\'Aperçu
Google
Recherche Google
@@ -287,9 +298,9 @@
Actualités
Assistance
Produit
- Design & development
+ Conception et développement
Développement
- QuickSwitch maintenance
+ Maintenance de QuickSwitch
DevOps
Assistance et relations publiques
Remerciements
@@ -299,112 +310,117 @@
Backup and restore
-->
- Create backup
- What to back up
- Layout and settings
+ Créer une sauvegarde
+ Éléments à sauvegarder
+ Mise en page et paramètres
Fond d\'écran
- Backup created
- Failed to create backup
- Restore backup
- What to restore
- Backup restored
- Failed to restore backup
- Invalid backup file
+ Sauvegarde créée
+ Échec de la création de la sauvegarde
+ Restaurer une sauvegarde
+ Éléments à restaurer
+ Sauvegarde restaurée
+ Échec de la restauration de la sauvegarde
+ Fichier de sauvegarde invalide
- Double tap
- Swipe up
- Swipe down
- Home button
- Back button
- Do nothing
+ Double appui
+ Balayage vers le haut
+ Balayage vers le bas
+ Bouton Accueil
+ Bouton Retour
+ Ne rien faire
Mettre en veille
- Open notification panel
- Open app
+ Ouvrir le panneau des notifications
+ Ouvrir une application
Ouvrir %1$s
- Open app drawer
- Open app search
- Open search
- Pick app
- Admin permissions required
- To use Double-Tap to Sleep, set Lawnchair as a device admin app. Tap \"Open settings\", then tap \"Activate this device admin app.\"
+ Ouvrir le tiroir d\'applications
+ Ouvrir la recherche d\'applications
+ Ouvrir la recherche
+ Sélectionnez une application
+ Autorisations d\'administration requises
+ Pour mettre en veille votre appareil à l\'aide d\'un double appui, définissez Lawnchair comme application d\'administration de l\'appareil. Appuyez sur « Ouvrir les paramètres » puis appuyez sur « Activer l\'appli d\'administration de cet appareil. »
Vous ne pourrez plus mettre en veille votre appareil à l\'aide d\'un double appui.
- Turn on accessibility service
- To use Double-Tap to Sleep, turn on the Lawnchair accessibility service. Tap \"Open settings\", select \"Lawnchair\" and turn on \"Use Lawnchair.\"
- Open settings
+ Activez le service d\'accessibilité
+ Pour mettre en veille votre appareil à l\'aide d\'un double appui, activez le service d\'accessibilité Lawnchair. Appuyez sur « Ouvrir les paramètres », sélectionnez « Lawnchair » puis activez « Utiliser Lawnchair. »
+ Ouvrir les paramètres
- Lawnchair bug report
- %1$s crashed
- Upload crash log
+ Signalement de bug Lawnchair
+ %1$s a planté
+ Envoyer le journal de plantage
Échec de l\'envoi
Envoi en cours…
- Bug reports
- Upload status
- %d new reports
- Multiple new reports
+ Signalements de bug
+ État de l\'envoi
+ %d nouveaux signalements
+ Plusieurs nouveaux signalements
- Home screen rotation
- Allow home screen rotation when device is rotated
- Add new apps to home screen
- Show feed
+ Rotation de l\'écran d\'accueil
+ Autoriser la rotation de l\'écran d\'accueil lorsque l\'appareil est tourné
+ Activer le floutage du fond d\'écran
+ Intensité du flou
+ Seuil factoriel
+ Ajouter les nouvelles applications à l\'écran d\'accueil
+ Afficher le flux
Aucune application de flux installée
Flux
- Feed provider
- Scroll wallpaper
- Wallpaper depth effect
- Zoom in and out of the wallpaper when transitioning between areas of the launcher
- Top shadow
- Home screen grid
- Lock home screen
- Unlock home screen
- Home screen is locked
+ Fournisseur du flux
+ Faire défiler le fond d\'écran
+ Effet de profondeur du fond d\'écran
+ Zoom avant et arrière du fond d\'écran lors des transitions entre différentes zones du lanceur d\'applications
+ Ombre du haut
+ Grille de l\'écran d\'accueil
+ Verrouiller l\'écran d\'accueil
+ Déverrouiller l\'écran d\'accueil
+ L\'écran d\'accueil est verrouillé
Empêcher les changements d\'agencement de l\'écran d\'accueil
Afficher des points représentant les pages
Utiliser des points plutôt que des lignes pour afficher le numéro de page
- Use new pop-up style
- Use Material You\'s bouncy and slightly consolidated pop-up style
- Pop-up menu
- Show lock button
- Show system settings entry
- Show Edit button
- Status bar
- Show status bar
- Dark status bar
- Text color
+ Utiliser le nouveau style de pop-up
+ Utiliser le style de pop-up Material You
+ Menu pop-up
+ Afficher le bouton Verrouiller
+ Afficher le bouton Paramètres du système
+ Afficher le bouton Modifier
+ Barre d\'état
+ Afficher la barre d\'état
+ Barre d\'état sombre
+ Couleur du texte
Clair
Sombre
- Rounded corners
- Allow overlap
- Enforce widget resizing
+ Coins arrondis
+ Autoriser la superposition
+ Forcer les widgets à pouvoir être redimensionnés
Autoriser le redimensionnement des widgets qui sont limités à une taille spécifique
- Remove size constraints
+ Supprimer les contraintes de taille
Supprimer les restrictions de taille minimale et maximale des widgets
- Show dock
- Search bar
- Search bar widget
+ Afficher le dock
+ Barre de recherche
+ Widget Barre de recherche
Désactivé
- Google Search bar
+ Barre de recherche Google
+ Opacité
+ Contour
Rayon d\'angle
- Apply accent color
- Search provider
- Dock icons
- Bottom padding
+ Appliquer la couleur d\'accentuation
+ Fournisseur des résultats de recherche
+ Icônes dans le dock
+ Décalage vers le haut
- App search
- %1$s and Lawnchair have a revenue share agreement.\n\nSearching with %1$s helps support Lawnchair.
+ Recherche d\'applications
+ Lawnchair a un accord de partage des revenus avec %1$s.\n\nEn effectuant vos recherches avec %1$s, vous soutenez Lawnchair.
Application
Site Web
Application requise
@@ -413,43 +429,43 @@
Google Lens
Recherche vocale
- Hidden apps
- Load apps in bulk
- Load and display icons in bulk instead of individually
- Remember position
+ Applications masquées
+ Charger plusieurs applications à la fois
+ Charger et afficher les icônes de plusieurs applications à la fois plutôt qu\'une par une
+ Mémoriser la position
Mémoriser la position du tiroir d\'applications après l\'avoir quitté
- Show scrollbar
- App drawer columns
- Row height
- Horizontal padding
+ Afficher la barre de défilement
+ Colonnes du tiroir d\'applications
+ Hauteur de ligne
+ Décalage vers le centre
- Hide from app drawer
- Hidden apps (%1$d)
+ Masquer dans le tiroir d\'applications
+ Applications masquées (%1$d)
- - %1$d app
- - %1$d apps
+ - %1$d application
+ - %1$d applications
- Icon background opacity
- Icon background color
- Maximum folder columns
- Maximum folder rows
+ Opacité de l\'arrière-plan des icônes
+ Couleur de l\'arrière-plan des icônes
+ Nombre maximal de colonnes dans les dossiers
+ Nombre maximal de lignes dans les dossiers
- These settings will be ignored as Lawnchair isn\'t set as the Recents provider
- Incompatible system integration
- Your device is configured to have system gestures (known as Quickstep) provided by %1$s, but this version of %1$s isn\'t compatible with your Android version. To continue using your device, please uninstall %1$s updates or disable %1$s as a system gesture provider.
- Translucent background
- Background opacity
- Quick actions
+ Ces paramètres seront ignorés car Lawnchair n\'est pas défini comme fournisseur de Récents
+ Intégration système incompatible
+ Votre appareil est configuré pour que la navigation par gestes (appelée Quickstep) soit fournie par %1$s, mais la version installée n\'est pas compatible avec votre version d\'Android. Pour continuer à utiliser votre appareil, désinstallez les mises à jour de %1$s ou désactivez-le en tant que fournisseur système de navigation par gestes.
+ Arrière-plan translucide
+ Opacité de l\'arrière-plan
+ Actions rapides
Partager
Lens
- Clear all
+ Tout effacer
Forcer l\'arrêt
- Screen corner radius
- Custom screen corner radius
- When you swipe up to open Recents, the current app follows your finger, shrinking into a card. Use this slider to adjust the corner radius of the card when it\'s nearly full screen so it matches the corners of your screen.
+ Rayon d\'angle de l\'écran
+ Rayon d\'angle de l\'écran personnalisé
+ Lorsque vous balayez l\'écran vers le haut pour ouvrir Récents, l\'application ouverte suit votre doigt et devient une carte dont la taille diminue progressivement. Utilisez ce curseur pour ajuster le rayon des angles de la carte afin qu\'ils correspondent aux coins de votre écran.
Barre des tâches
- Show taskbar (experimental)
+ Afficher la barre des tâches (expérimental)
Rechercher
Rechercher des applications
- No apps found matching \"%1$s\"
+ Aucune application correspondant à « %1$s » n\'a pu être trouvée
Depuis le Web
- Contacts from device
- Files from device
- Settings from device
- Search for more apps
- Rechercher sur Startpage
- No app store or browser installed
- Clear search history
- Clear search box
+ Contacts de l\'appareil
+ Fichiers de l\'appareil
+ Paramètres de l\'appareil
+ Rechercher plus d\'applications
+ Rechercher avec %1$s
+ Aucun magasin d\'applications ni navigateur installé
+ Effacer l\'historique des recherches
+ Effacer la barre de recherche
Recherche
- Show search bar
+ Afficher la barre de recherche
Afficher le clavier automatiquement
- Fuzzy search
- Approximate matching for app searches
+ Recherche approximative
+ Correspondance approximative pour les recherches d\'applications
Suggestions
- Show suggested apps at the top of the drawer
- Device search
- Search your phone contacts, files, and settings
- Show hidden apps in search results
- If full name is typed
- Search algorithm
+ Afficher des applications suggérées en haut du tiroir
+ Recherche sur l\'appareil
+ Recherchez parmi les contacts, fichiers et paramètres de votre téléphone
+ Afficher les applications masquées dans les résultats de recherche
+ Si le nom complet est saisi
+ Algorithme de recherche
Recherche d\'applications
- Global search (on-device)
- Global search (via ASI)
+ Recherche globale (sur l\'appareil)
+ Recherche globale (via ASI)
- Show in search results
+ Afficher dans les résultats de recherche
Applications et raccourcis
- App shortcuts
+ Raccourcis d\'applications
Personnes
- Pixel tips
- Android settings
+ Astuces Pixel
+ Paramètres Android
Fichiers
Suggestions Web
- Search history
+ Historique de recherche
Calculatrice
Médias, fichiers et autres
Contacts et autres
- Via Startpage
+ Via %1$s
- Maximum number of apps in search results
- Maximum number of people in search results
- Maximum number of files in search results
- Maximum number of settings entries in search results
- Maximum number of history entries in search results
- Maximum number of suggestions in search results
- Maximum web suggestion delay
+ Nombre maximal d\'applications dans les résultats de recherche
+ Nombre maximal de personnes dans les résultats de recherche
+ Nombre maximal de fichiers dans les résultats de recherche
+ Nombre maximal de paramètres dans les résultats de recherche
+ Nombre maximal d\'éléments de l\'historique dans les résultats de recherche
+ Nombre maximal de suggestions dans les résultats de recherche
+ Délai maximal des suggestions Web
- To search for contacts, grant contacts and phone permissions to Lawnchair
- To search your files, grant storage permissions to Lawnchair
- Grant permissions
+ Pour rechercher des contacts, accordez à Lawnchair les autorisations Contacts et Téléphone.
+ Pour rechercher des fichiers, autorisez Lawnchair à accéder au stockage.
+ Accorder les autorisations
+ Lawnchair (composition)
+ Fournisseur de suggestions Web
+ Afficher l\'icône du fournisseur de suggestions Web dans la barre de recherche
+ Utiliser le style de la barre de recherche du dock
diff --git a/lawnchair/res/values-gl-rES/strings.xml b/lawnchair/res/values-gl-rES/strings.xml
index 25c9d75b1c1..69be8239cbe 100644
--- a/lawnchair/res/values-gl-rES/strings.xml
+++ b/lawnchair/res/values-gl-rES/strings.xml
@@ -221,9 +221,20 @@
Dark
System
Match wallpaper
+
+ Color style
+ Spritz
+ Tonal Spot
+ Vibrant
+ Expressive
+ Rainbow
+ Fruit Salad
+ Content
+ Monochromatic
Colors
Accent color
+ Stroke color
Swatches
RGB
Red
@@ -357,6 +368,9 @@
Home screen rotation
Allow home screen rotation when device is rotated
+ Enable wallpaper blur
+ Blur intensity
+ Factor threshold
Add new apps to home screen
Show feed
No feed apps installed
@@ -397,6 +411,8 @@
Search bar widget
Disabled
Google Search bar
+ Opacity
+ Stroke
Corner radius
Apply accent color
Search provider
@@ -464,7 +480,7 @@
Files from device
Settings from device
Search for more apps
- Search on Startpage
+ Search on %1$s
No app store or browser installed
Clear search history
Clear search box
@@ -498,7 +514,7 @@
Media, files, and more
Contacts and more
- Via Startpage
+ Via %1$s
Maximum number of apps in search results
Maximum number of people in search results
@@ -511,4 +527,8 @@
To search for contacts, grant contacts and phone permissions to Lawnchair
To search your files, grant storage permissions to Lawnchair
Grant permissions
+ Lawnchair (compose)
+ Web suggestion provider
+ Show web suggestion provider icon in search bar
+ Match dock search bar style
diff --git a/lawnchair/res/values-hi-rIN/strings.xml b/lawnchair/res/values-hi-rIN/strings.xml
index febd332ca59..ea3a5e44e3d 100644
--- a/lawnchair/res/values-hi-rIN/strings.xml
+++ b/lawnchair/res/values-hi-rIN/strings.xml
@@ -221,9 +221,20 @@
अंधेरा
तंत्र
Match wallpaper
+
+ Color style
+ Spritz
+ Tonal Spot
+ Vibrant
+ Expressive
+ Rainbow
+ Fruit Salad
+ Content
+ Monochromatic
रंग
Accent color
+ Stroke color
नमूनें
RGB
लाल
@@ -357,6 +368,9 @@
Home screen rotation
Allow home screen rotation when device is rotated
+ Enable wallpaper blur
+ Blur intensity
+ Factor threshold
Add new apps to home screen
Show feed
No feed apps installed
@@ -397,6 +411,8 @@
Search bar widget
अक्षम करें
Google Search bar
+ Opacity
+ Stroke
कोने का अर्द्ध व्यास
Apply accent color
Search provider
@@ -464,7 +480,7 @@
Files from device
Settings from device
Search for more apps
- Search on Startpage
+ Search on %1$s
No app store or browser installed
Clear search history
Clear search box
@@ -498,7 +514,7 @@
Media, files, and more
Contacts and more
- Via Startpage
+ Via %1$s
Maximum number of apps in search results
Maximum number of people in search results
@@ -511,4 +527,8 @@
To search for contacts, grant contacts and phone permissions to Lawnchair
To search your files, grant storage permissions to Lawnchair
Grant permissions
+ Lawnchair (compose)
+ Web suggestion provider
+ Show web suggestion provider icon in search bar
+ Match dock search bar style
diff --git a/lawnchair/res/values-hr-rHR/strings.xml b/lawnchair/res/values-hr-rHR/strings.xml
index 7ee3cae0265..738a404835b 100644
--- a/lawnchair/res/values-hr-rHR/strings.xml
+++ b/lawnchair/res/values-hr-rHR/strings.xml
@@ -221,9 +221,20 @@
Dark
System
Match wallpaper
+
+ Color style
+ Spritz
+ Tonal Spot
+ Vibrant
+ Expressive
+ Rainbow
+ Fruit Salad
+ Content
+ Monochromatic
Colors
Accent color
+ Stroke color
Swatches
RGB
Red
@@ -357,6 +368,9 @@
Home screen rotation
Allow home screen rotation when device is rotated
+ Enable wallpaper blur
+ Blur intensity
+ Factor threshold
Add new apps to home screen
Show feed
No feed apps installed
@@ -397,6 +411,8 @@
Search bar widget
Disabled
Google Search bar
+ Opacity
+ Stroke
Corner radius
Apply accent color
Search provider
@@ -465,7 +481,7 @@
Files from device
Settings from device
Search for more apps
- Search on Startpage
+ Search on %1$s
No app store or browser installed
Clear search history
Clear search box
@@ -499,7 +515,7 @@
Media, files, and more
Contacts and more
- Via Startpage
+ Via %1$s
Maximum number of apps in search results
Maximum number of people in search results
@@ -512,4 +528,8 @@
To search for contacts, grant contacts and phone permissions to Lawnchair
To search your files, grant storage permissions to Lawnchair
Grant permissions
+ Lawnchair (compose)
+ Web suggestion provider
+ Show web suggestion provider icon in search bar
+ Match dock search bar style
diff --git a/lawnchair/res/values-hu-rHU/strings.xml b/lawnchair/res/values-hu-rHU/strings.xml
index c0d6e20109b..ad6eeef87a1 100644
--- a/lawnchair/res/values-hu-rHU/strings.xml
+++ b/lawnchair/res/values-hu-rHU/strings.xml
@@ -221,9 +221,20 @@
Sötét
Rendszer
Match wallpaper
+
+ Color style
+ Spritz
+ Tonal Spot
+ Vibrant
+ Expressive
+ Rainbow
+ Fruit Salad
+ Content
+ Monochromatic
Színek
Accent color
+ Stroke color
Színminták
RGB
Piros
@@ -357,6 +368,9 @@
Home screen rotation
Allow home screen rotation when device is rotated
+ Enable wallpaper blur
+ Blur intensity
+ Factor threshold
Add new apps to home screen
Show feed
No feed apps installed
@@ -397,6 +411,8 @@
Search bar widget
Letiltva
Google Search bar
+ Opacity
+ Stroke
Sarok sugár
Apply accent color
Search provider
@@ -464,7 +480,7 @@
Files from device
Settings from device
Search for more apps
- Search on Startpage
+ Search on %1$s
No app store or browser installed
Clear search history
Clear search box
@@ -498,7 +514,7 @@
Media, files, and more
Contacts and more
- Via Startpage
+ Via %1$s
Maximum number of apps in search results
Maximum number of people in search results
@@ -511,4 +527,8 @@
To search for contacts, grant contacts and phone permissions to Lawnchair
To search your files, grant storage permissions to Lawnchair
Grant permissions
+ Lawnchair (compose)
+ Web suggestion provider
+ Show web suggestion provider icon in search bar
+ Match dock search bar style
diff --git a/lawnchair/res/values-in-rID/strings.xml b/lawnchair/res/values-in-rID/strings.xml
index 8f95281f5d9..9f7328ee24e 100644
--- a/lawnchair/res/values-in-rID/strings.xml
+++ b/lawnchair/res/values-in-rID/strings.xml
@@ -23,7 +23,7 @@
-->
Pratinjau
Buat
- Backup
+ Cadangkan
Pulihkan
Hapus
Atur ulang
@@ -31,19 +31,19 @@
Kunci
Terapkan
Kustomisasi
- Always
- Never
+ Selalu
+ Tidak pernah
Papan Klip
- Copy link
+ Salin Tautan
Salin
Tempel
Memuat…
Dikelola oleh Lawnchair
Preferensi
- Home settings
- System settings
- Change settings
+ Pengaturan beranda
+ Pengaturan sistem
+ Ubah pengaturan
Wallpaper
- Background opacity
+ Transparansi latar belakang
- Copied to clipboard
+ Disalin ke papan klip
Item dihapus
- What to show
+ Yang ditampilkan
- Untuk mengunci ponsel Anda saat melakukan gerakan, Lawnchair memerlukan akses aksesibilitas.\n\nLawnchair tidak menonton tindakan pengguna apa pun, meskipun hak istimewa untuk melakukannya diperlukan untuk semua layanan aksesibilitas. Lawnchair membuang acara apa pun yang dikirim oleh sistem.\n\nUntuk mengunci ponsel Anda, Lawnchair menggunakan layanan performGlobalAction Accessibility.
- %1$d x %2$d
+ Untuk mengunci ponsel Anda saat melakukan gerakan, Lawnchair memerlukan akses aksesibilitas.\n\nLawnchair tidak mengawasi tindakan pengguna apa pun, meskipun hak istimewa untuk melakukannya diperlukan untuk semua layanan aksesibilitas. Lawnchair membuang acara apa pun yang dikirim oleh sistem.\n\nUntuk mengunci ponsel Anda, Lawnchair menggunakan layanan aksesibilitas performGlobalAction.
+ %1$d × %2$d
%s & %s
Pengaturan
Umum
- Colors, icon packs, notification dots
- Home screen
- Feed, grid, icons
+ Warna, paket ikon, titik notifikasi
+ Layar beranda
+ Umpan, kisi, ikon
Bilah
- Search bar, icon count
- App drawer
- Hidden apps, column count, icons
- Drawer search
- Web suggestions, global search
+ Bilah pencarian, jumlah ikon
+ Laci apli
+ Apli tersembunyi, jumlah kolom, ikon
+ Pencarian laci
+ Saran web, pencarian global
Folder
- Row and column count
+ Jumlah baris dan kolom
Isyarat
- Taps and swipes
+ Ketukan dan usapan
Terbaru
- Clear All button, corner radius
+ Tombol Hapus Semua, radius sudut
Tentang
- App info
+ Info apli
Muat ulang Lawnchair
- Experimental features
+ Fitur eksperimental
- Font customization
+ Kustomisasi font
Beberapa teks tetap tidak berubah
- At a Glance calendar customization
+ Kostumisasi kalender Sekilas
Memungkinkan menampilkan tanggal dalam sistem kalender non-Gregorian
- Increase maximum grid size limit
- Increase maximum allowed home screen grid size from 10 x 10 to 20 x 20
- Always reload icons
+ Tingkatkan batas ukuran kisi
+ Tingkatkan batas ukuran kisi yang diperbolehkan dari 10 x 10 ke 20 x 20
+ Selalu muat ulang ikon
Hindari menggunakan ikon yang telah di cache dari paket ikon
- Lock/unlock
- Prevent selected app from closing when pressing \"Clear all\"
+ Kunci/buka kunci
+ Cegah apli terpilih untuk ditutup saat menekan \"Bersihkan semua\"
- To access shortcuts and additional features, set Lawnchair as your default launcher
- Notification dots
- Show notification counter
- Notification dot color
- Notification counter color
- Warning: Notification dot and counter colors don\'t have enough contrast with each other
- Warning: Notification dot and counter colors might not always have enough contrast with each other
+ Untuk mengakses pintasan dan fitur tambahan, atur Lawnchair sebagai peluncur default Anda
+ Titik notifikasi
+ Tampilkan jumlah notifikasi
+ Warna titik notifikasi
+ Warna hitungan notifikasi
+ Peringatan: Warna titik dan hitungan notifikasi tidak memiliki cukup kontras antara satu sama lain
+ Peringatan: Warna titik dan hitungan notifikasi mungkin tidak selalu memiliki kontras yang cukup antara satu sama lain
Akses notifikasi diperlukan
- To show Notification Dots, turn on app notifications for %1$s
+ Untuk menggunakan Titik Notifikasi, aktifkan notifikasi aplikasi untuk %1$s
- Icon style
- Icon shape
- Icon size
- Show labels
- Label size
- Use multiple lines
+ Gaya ikon
+ Bentuk ikon
+ Ukuran ikon
+ Tampilkan label
+ Ukuran label
+ Gunakan beberapa baris
- Transparent themed icons
+ Ikon bertema transparan
Gunakan latar belakang transparan pada ikon bertema
- Auto-adaptive icons
- For all non-adaptive icons
- Background lightness
- Use 100% background lightness for white
- Reset custom icons
+ Ikon adaptif otomatis
+ Untuk semua aplikasi non-adaptif
+ Kecerahan latar belakang
+ Gunakan 100% kecerahan latar belakang untuk warna putih
+ Atur ulang ikon kustom
Semua ikon kustom akan diatur ulang. Apakah Anda ingin melanjutkan?
Ikon
Atur ulang ke default
Buka pemilih eksternal
- Pick icon from
- Couldn\'t load more icons
+ Pilih ikon dari
+ Tidak dapat memuat lebih banyak ikon
Sistem
Lingkaran
@@ -161,54 +161,54 @@
iOS
Segi delapan
One UI
- Rounded square
- Sharp square
+ Kotak bundar
+ Kotak tajam
Persegi
Squircle
Tetesan air
- Custom icon shape
- Create custom icon shape
- Edit custom icon shape
- Corner shape
+ Bentuk ikon kustom
+ Buat bentuk ikon kustom
+ Edit bentuk ikon kustom
+ Bentuk sudut
Bulat
Halus
Potong
- Top left
- Top right
- Bottom left
- Bottom right
- Export to clipboard
- Import from clipboard
- Clipboard doesn\'t contain a valid icon shape
+ Kiri atas
+ Kanan atas
+ Kiri bawah
+ Kanan bawah
+ Ekspor ke papan klip
+ Impor dari papan klip
+ Papan klip tidak mengandung bentuk ikon yang valid
- Icon pack
- Themed icon source
- System icons
- Themed icons
+ Paket ikon
+ Sumber ikon bertema
+ Ikon sistem
+ Ikon bertema
Mati
- Home screen
- Home screen & app drawer
+ Layar beranda
+ Layar beranda & laci aplikasi
Tidak ada paket ikon yang didukung
- Add fonts
- OTF and TTF fonts are supported
+ Tambahkan font
+ Font OTF dan TTF didukung
Font tidak ditemukan
- Font (experimental)
+ Font (eksperimental)
Umum
Judul
- Headings (medium)
+ Judul (medium)
Badan
- Body (medium)
+ Badan (sedang)
Miring
Tipis
- Extra light
+ Ekstra tipis
Tipis
Reguler
Medium
Semi Tebal
Tebal
- Extra bold
+ Ekstra tebal
Hitam
+ Style warna
+ Spritz
+ Spot berwarna
+ Bersemangat
+ Ekspresif
+ Pelangi
+ Salad Buah
+ Konten
+ Monokrom
Warna
- Accent color
+ Warna aksen
+ Stroke color
Swatch
RGB
Merah
@@ -235,7 +246,7 @@
Kecerahan
Hex
Sliders
- Invalid color
+ Warna tidak valid
Mengisi daya
Daya terisi penuh
- Battery low
+ Baterai lemah
"%1$d%% — Penuh dalam %2$s"
At a Glance
- What to show
+ Untuk ditampilkan
Kalender
- Date & time
+ Tanggal & waktu
Tanggal
Waktu
- Time format
- Follow system
- 12-hour format
- 24-hour format
+ Format waktu
+ Gunakan pengaturan sistem
+ Format 12-jam
+ Format 24-jam
Cuaca
- Battery status
+ Status baterai
Sedang Memutar
- Tap to set up
+ Ketuk untuk menyiapkan
Untuk menggunakan %1$s, aktifkan Titik Notifikasi.
- Show on home screen
- At a Glance can be manually added to the home screen by placing the Lawnchair widget
+ Tampilkan di layar beranda
+ Sekilas dapat ditambahkan secara manual ke layar beranda dengan menaruh widget Lawnchair
- At a Glance provider
+ Penyedia Sekilas
Google
Pencarian Google
@@ -287,9 +298,9 @@
Berita
Dukungan
Produk
- Design & development
+ Desain & pengembangan
Pengembangan
- QuickSwitch maintenance
+ Pemeliharaan QuickSwitch
DevOps
Bantuan & Relasi Publik
Ucapan Terima Kasih
@@ -299,14 +310,14 @@
Backup and restore
-->
- Create backup
- What to back up
- Layout and settings
+ Buat cadangan
+ Untuk dicadangkan
+ Tata letak dan pengaturan
Wallpaper
Cadangan dibuat
Gagal membuat cadangan
- Restore backup
- What to restore
+ Pulihkan cadangan
+ Untuk dipulihkan
Cadangan dipulihkan
Gagal memulihkan cadangan
Berkas cadangan tidak valid
@@ -315,96 +326,101 @@
Gesture settings
-->
- Double tap
- Swipe up
- Swipe down
- Home button
- Back button
- Do nothing
+ Ketuk dua kali
+ Geser ke atas
+ Geser ke bawah
+ Tombol beranda
+ Tombol kembali
+ Tidak melakukan apa-apa
Tidur
- Open notification panel
- Open app
+ Buka panel notifikasi
+ Buka apli
Buka %1$s
- Open app drawer
- Open app search
- Open search
- Pick app
- Admin permissions required
- To use Double-Tap to Sleep, set Lawnchair as a device admin app. Tap \"Open settings\", then tap \"Activate this device admin app.\"
+ Buka laci apli
+ Buka pencarian apli
+ Buka pencarian
+ Pilih apli
+ Izin admin diperlukan
+ Untuk menggunakan Ketuk Dua Kali untuk Tidur, atur Lawnchair sebagai apli admin perangkat. Ketuk \"Buka pengaturan\", lalu ketuk \"Aktifkan apli admin perangkat ini.\"
Tap Dua Kali untuk Tidur akan dimatikan.
- Turn on accessibility service
- To use Double-Tap to Sleep, turn on the Lawnchair accessibility service. Tap \"Open settings\", select \"Lawnchair\" and turn on \"Use Lawnchair.\"
- Open settings
+ Aktifkan layanan aksesibilitas
+ Untuk menggunakan Ketuk Dua Kali untuk Tidur, aktifkan Lawnchair sebagai layanan aksesibilitas. Ketuk \"Buka pengaturan\", pilih \"Lawnchair\" lalu aktifkan \"Gunakan Lawnchair.\"
+ Buka pengaturan
- Lawnchair bug report
- %1$s crashed
- Upload crash log
+ Laporan bug Lawnchair
+ %1$s mogok
+ Unggah laporan mogok
Gagal mengunggah
Mengunggah…
- Bug reports
- Upload status
- %d new reports
- Multiple new reports
+ Laporan bug
+ Status unggahan
+ %d laporan baru
+ Beberapa laporan baru
- Home screen rotation
- Allow home screen rotation when device is rotated
- Add new apps to home screen
- Show feed
+ Rotasi layar beranda
+ Izinkan rotasi layar beranda ketika perangkat diputar
+ Enable wallpaper blur
+ Blur intensity
+ Factor threshold
+ Tambahkan apli baru ke layar beranda
+ Tampilkan umpan
Tidak ada aplikasi feed yang terpasang
Umpan
- Feed provider
- Scroll wallpaper
- Wallpaper depth effect
- Zoom in and out of the wallpaper when transitioning between areas of the launcher
- Top shadow
- Home screen grid
- Lock home screen
- Unlock home screen
- Home screen is locked
+ Penyedia umpan
+ Geser wallpaper
+ Efek kedalaman wallpaper
+ Perbesar dan perkecil wallpaper ketika beralih area dalam peluncur
+ Bayangan atas
+ Kisi layar utama
+ Kunci layar beranda
+ Buka kunci layar beranda
+ Layar beranda dikunci
Mencegah perubahan pada tata letak layar utama
- Show dot pagination
+ Tampilkan penomoran titik
Gunakan titik, bukan garis, untuk menunjukkan nomor halaman
- Use new pop-up style
- Use Material You\'s bouncy and slightly consolidated pop-up style
- Pop-up menu
- Show lock button
- Show system settings entry
- Show Edit button
- Status bar
- Show status bar
- Dark status bar
- Text color
+ Gunakan gaya pop-up baru
+ Gunakan gaya pop-up Material You yang bulat dan sedikit terkonsolidasi
+ Gaya pop-up
+ Tampilkan tombol kunci
+ Tampilkan entri pengaturan sistem
+ Tampilkan tombol Edit
+ Bar status
+ Tampilkan bar status
+ Bar status gelap
+ Warna teks
Terang
Gelap
- Rounded corners
- Allow overlap
- Enforce widget resizing
+ Sudut lengkung
+ Izinkan tumpang tindih
+ Paksa ubah ukuran widget
Memungkinkan pengubahan ukuran widget yang dibatasi pada ukuran tertentu
- Remove size constraints
+ Hapus batasan ukuran
Menghapus batasan ukuran minimum dan maksimum widget
- Show dock
- Search bar
- Search bar widget
+ Tampilkan dok
+ Bilah pencarian
+ Widget bilah pencarian
Dimatikan
- Google Search bar
+ Bilah Penelusuran Google
+ Opacity
+ Stroke
Radius sudut
- Apply accent color
- Search provider
- Dock icons
- Bottom padding
+ Terapkan warna aksen
+ Penyedia pencarian
+ Ikon dok
+ Padding bawah
- App search
- %1$s and Lawnchair have a revenue share agreement.\n\nSearching with %1$s helps support Lawnchair.
+ Pencarian apli
+ %1$s dan Lawnchair memiliki persetujuan pembagian hasil.\n\nMencari dengan %1$s membantu mendukung Lawnchair.
Aplikasi
Website
Aplikasi diperlukan
@@ -413,42 +429,42 @@
Google Lens
Penelusuran Suara
- Hidden apps
- Load apps in bulk
- Load and display icons in bulk instead of individually
- Remember position
+ Apli tersembunyi
+ Muat apli dalam jumlah besar
+ Muat dan tampilkan ikon dalam jumlah besar daripada secara individual
+ Ingat posisi
Mengingat posisi laci aplikasi setelah keluar dari laci
- Show scrollbar
- App drawer columns
- Row height
- Horizontal padding
+ Tampilkan bilah gulir
+ Kolom laci apli
+ Tinggi baris
+ Padding horizontal
- Hide from app drawer
- Hidden apps (%1$d)
+ Sembunyikan dari laci apli
+ Apli tersembunyi (%1$d)
- - %1$d apps
+ - %1$d apli
- Icon background opacity
- Icon background color
- Maximum folder columns
- Maximum folder rows
+ Transparansi latar belakang ikon
+ Warna latar belakang ikon
+ Kolom folder maksimum
+ Baris folder maksimum
- These settings will be ignored as Lawnchair isn\'t set as the Recents provider
- Incompatible system integration
- Your device is configured to have system gestures (known as Quickstep) provided by %1$s, but this version of %1$s isn\'t compatible with your Android version. To continue using your device, please uninstall %1$s updates or disable %1$s as a system gesture provider.
- Translucent background
- Background opacity
- Quick actions
+ Pengaturan ini akan diabaikan karena Lawnchair tidak diatur sebagai penyedia Terbaru
+ Integrasi sistem tidak kompatibel
+ Perangkat Anda dikonfigurasi untuk menggunakan gestur sistem (dikenal sebagai Quickstep) disediakan oleh %1$s, tetapi versi %1$s tidak kompatibel dengan versi Android Anda. Untuk melanjutkan menggunakan perangkat Anda, harap lepas pembarian %1$s atau nonaktifkan %1$s sebagai penyedia gestur sistem.
+ Latar belakang transparan
+ Transparansi latar belakang
+ Tindakan cepat
Bagikan
Lens
- Clear all
+ Bersihkan semua
Tutup paksa
- Screen corner radius
- Custom screen corner radius
- When you swipe up to open Recents, the current app follows your finger, shrinking into a card. Use this slider to adjust the corner radius of the card when it\'s nearly full screen so it matches the corners of your screen.
+ Radius sudut layar
+ Radius sudut layar kustom
+ Saat Anda menggeser ke atas untuk membuka Terbaru, aplikasi saat ini mengikuti jari Anda, mengecil menjadi kartu. Gunakan slider ini untuk menyesuaikan radius sudut kartu saat hampir memenuhi layar sehingga cocok dengan sudut layar Anda.
Bilah Tugas
- Show taskbar (experimental)
+ Tampilkan taskbar (eksperimental)
Pencarian
Cari Aplikasi
- No apps found matching \"%1$s\"
+ Tidak ada apli yang cocok dengan \"%1$s\"
Dari web
- Contacts from device
- Files from device
- Settings from device
- Search for more apps
- Cari di Startpage
- No app store or browser installed
- Clear search history
- Clear search box
+ Kontak dari perangkat
+ Berkas dari perangkat
+ Pengaturan dari perangkat
+ Cari lebih banyak aplikasi
+ Search on %1$s
+ Tidak ada toko aplikasi atau browser yang terinstal
+ Bersihkan riwayat pencarian
+ Bersihkan bilah pencarian
Cari
- Show search bar
+ Tampilkan bilah pencarian
Tampilkan keyboard otomatis
- Fuzzy search
- Approximate matching for app searches
+ Pencarian kabur
+ Perkirakan kecocokan untuk pencarian aplikasi
Saran
- Show suggested apps at the top of the drawer
- Device search
- Search your phone contacts, files, and settings
- Show hidden apps in search results
- If full name is typed
- Search algorithm
+ Tampilkan saran aplikasi di bagian atas laci
+ Pencarian perangkat
+ Cari kontak, berkas, dan pengaturan Anda
+ Tampilkan aplikasi tersembunyi dalam hasil pencarian
+ Jika nama lengkap diketik
+ Algoritma pencarian
Pencarian Aplikasi
- Global search (on-device)
- Global search (via ASI)
+ Pencarian global (dalam perangkat)
+ Pencarian global (melalui ASI)
- Show in search results
+ Tampilkan dalam hasil pencarian
Aplikasi & Pintasan
- App shortcuts
+ Pintasan apli
Orang
- Pixel tips
- Android settings
+ Tips Pixel
+ Pengaturan Android
File
Saran web
- Search history
+ Riwayat pencarian
Kalkulator
Media, file, dan lainnya
Kontak dan lainnya
- Melalui Startpage
+ Via %1$s
- Maximum number of apps in search results
- Maximum number of people in search results
- Maximum number of files in search results
- Maximum number of settings entries in search results
- Maximum number of history entries in search results
- Maximum number of suggestions in search results
- Maximum web suggestion delay
+ Jumlah apli maksimum dalam hasil pencarian
+ Jumlah orang maksimum dalam hasil pencarian
+ Jumlah berkas maksimum dalam hasil pencarian
+ Jumlah entri pengaturan maksimum dalam hasil pencarian
+ Jumlah entri riwayat maksimum dalam hasil pencarian
+ Jumlah saran maksimum dalam hasil pencarian
+ Penundaan saran web maksimum
- To search for contacts, grant contacts and phone permissions to Lawnchair
- To search your files, grant storage permissions to Lawnchair
- Grant permissions
+ Untuk mencari kontak, berikan izin kontak dan telepon ke Lawnchair
+ Untuk mencari berkas Anda, berikan izin penyimpanan ke Lawnchair
+ Berikan izin
+ Lawnchair (compose)
+ Web suggestion provider
+ Show web suggestion provider icon in search bar
+ Match dock search bar style
diff --git a/lawnchair/res/values-it-rIT/strings.xml b/lawnchair/res/values-it-rIT/strings.xml
index 72496683eb2..226e157f6a1 100644
--- a/lawnchair/res/values-it-rIT/strings.xml
+++ b/lawnchair/res/values-it-rIT/strings.xml
@@ -34,16 +34,16 @@
Sempre
Mai
Appunti
- Copy link
+ Copia link
Copia
Incolla
Caricamento…
Gestito da Lawnchair
Preferenze
- Home settings
- System settings
- Change settings
+ Impostazioni Schermata Home
+ Impostazioni di Sistema
+ Modifica impostazioni
Sfondo
- Background opacity
+ Opacità sfondo
- Copied to clipboard
+ Copiato negli appunti
Elemento rimosso
- What to show
+ Cosa mostrare
- To lock your phone when performing a gesture, Lawnchair requires accessibility access.\n\nLawnchair doesn\'t watch any user action, though the privilege to do so is required for all accessibility services. Lawnchair discards any event sent by the system.\n\nIn order to lock your phone, Lawnchair uses the performGlobalAction Accessibility service.
+ Per bloccare il telefono quando si esegue un gesto, Lawnchair richiede l\'accesso all\'accessibilità.\n\nLawnchair non osserva alcuna azione dell\'utente, anche se il privilegio di farlo è richiesto per tutti i servizi di accessibilità. Lawnchair scarta qualsiasi evento inviato dal sistema.\n\nPer bloccare il telefono, Lawnchair utilizza il servizio di accessibilità performGlobalAction.
%1$d x %2$d
%s & %s
Impostazioni
Generale
- Colors, icon packs, notification dots
- Home screen
- Feed, grid, icons
+ Colori, pacchetti di icone, punti di notifica
+ Schermata Home
+ Feed, griglia, icone
Dock
- Search bar, icon count
- App drawer
- Hidden apps, column count, icons
- Drawer search
+ Barra di ricerca, numero d\'icone
+ Menù delle app
+ Applicazioni nascoste, numero di colonne, icone
+ Ricerca nel menù app
Web suggestions, global search
Cartelle
Row and column count
@@ -221,9 +221,20 @@
Scuro
Sistema
Match wallpaper
+
+ Color style
+ Spritz
+ Tonal Spot
+ Vibrant
+ Expressive
+ Rainbow
+ Fruit Salad
+ Content
+ Monochromatic
Colori
Accent color
+ Colore tratto
Campioni Colore
RGB
Rosso
@@ -357,6 +368,9 @@
Home screen rotation
Allow home screen rotation when device is rotated
+ Abilita sfocatura sfondo
+ Intensità sfocatura
+ Soglia fattore
Add new apps to home screen
Show feed
Nessuna app feed installata
@@ -397,6 +411,8 @@
Search bar widget
Disabilitato
Google Search bar
+ Opacità
+ Tratto
Raggio dell\'angolo
Apply accent color
Search provider
@@ -464,7 +480,7 @@
Files from device
Settings from device
Search for more apps
- Cerca su Startpage
+ Cerca su %1$s
No app store or browser installed
Clear search history
Clear search box
@@ -498,7 +514,7 @@
Media, file e altro
Contatti e altro
- Tramite Startpage
+ Via %1$s
Maximum number of apps in search results
Maximum number of people in search results
@@ -511,4 +527,8 @@
To search for contacts, grant contacts and phone permissions to Lawnchair
To search your files, grant storage permissions to Lawnchair
Grant permissions
+ Lawnchair (compose)
+ Fornitore di suggerimenti web
+ Show web suggestion provider icon in search bar
+ Match dock search bar style
diff --git a/lawnchair/res/values-iw-rIL/strings.xml b/lawnchair/res/values-iw-rIL/strings.xml
index 228879ed9bf..9c7231f95ec 100644
--- a/lawnchair/res/values-iw-rIL/strings.xml
+++ b/lawnchair/res/values-iw-rIL/strings.xml
@@ -221,9 +221,20 @@
כהה
מערכת
Match wallpaper
+
+ Color style
+ Spritz
+ Tonal Spot
+ Vibrant
+ Expressive
+ Rainbow
+ Fruit Salad
+ Content
+ Monochromatic
צבעים
Accent color
+ Stroke color
דוגמיות צבע
RGB
אדום
@@ -357,6 +368,9 @@
Home screen rotation
Allow home screen rotation when device is rotated
+ Enable wallpaper blur
+ Blur intensity
+ Factor threshold
Add new apps to home screen
Show feed
No feed apps installed
@@ -397,6 +411,8 @@
Search bar widget
השבת
Google Search bar
+ Opacity
+ Stroke
רדיוס פינות
Apply accent color
Search provider
@@ -466,7 +482,7 @@
Files from device
Settings from device
Search for more apps
- Search on Startpage
+ Search on %1$s
No app store or browser installed
Clear search history
Clear search box
@@ -500,7 +516,7 @@
Media, files, and more
אנשי קשר ועוד
- Via Startpage
+ Via %1$s
Maximum number of apps in search results
Maximum number of people in search results
@@ -513,4 +529,8 @@
To search for contacts, grant contacts and phone permissions to Lawnchair
To search your files, grant storage permissions to Lawnchair
Grant permissions
+ Lawnchair (compose)
+ Web suggestion provider
+ Show web suggestion provider icon in search bar
+ Match dock search bar style
diff --git a/lawnchair/res/values-ja-rJP/strings.xml b/lawnchair/res/values-ja-rJP/strings.xml
index ab954e0663a..ed8dd1b17cc 100644
--- a/lawnchair/res/values-ja-rJP/strings.xml
+++ b/lawnchair/res/values-ja-rJP/strings.xml
@@ -34,16 +34,16 @@
Always
Never
クリップボード
- Copy link
+ リンクをコピー
コピー
貼り付け
読み込み中…
Lawnchair に管理されています
設定
- Home settings
- System settings
- Change settings
+ ホーム設定
+ システム設定
+ 設定を変更
壁紙
- Background opacity
+ 背景の透明度
- Copied to clipboard
- Item removed
+ クリップボードにコピーしました
+ アイテムを削除しました
- What to show
+ 表示する項目
To lock your phone when performing a gesture, Lawnchair requires accessibility access.\n\nLawnchair doesn\'t watch any user action, though the privilege to do so is required for all accessibility services. Lawnchair discards any event sent by the system.\n\nIn order to lock your phone, Lawnchair uses the performGlobalAction Accessibility service.
- %1$d x %2$d
+ %1$d × %2$d
%s & %s
設定
一般設定
- Colors, icon packs, notification dots
- Home screen
- Feed, grid, icons
+ 色、アイコンパック、通知ドット
+ ホーム画面
+ フィード、グリッド、アイコン
ドック
- Search bar, icon count
- App drawer
- Hidden apps, column count, icons
- Drawer search
- Web suggestions, global search
+ 検索バー、アイコン数
+ アプリドロワー
+ 隠しアプリ、カラム数、アイコン
+ ドロワー検索
+ ウェブ候補、グローバル検索
フォルダ
- Row and column count
+ 行と列の数
ジェスチャー
- Taps and swipes
+ タップとスワイプ
最近
- Clear All button, corner radius
+ 「すべてクリア」ボタン、角の丸み
このアプリについて
- App info
+ アプリ情報
Lawnchairを再起動
- Experimental features
+ 実験的機能
- Font customization
- Some text remains unchanged
+ フォントのカスタマイズ
+ 一部のテキストは変更されません
At a Glance calendar customization
- Allow showing date in non-Gregorian calendar systems
- Increase maximum grid size limit
- Increase maximum allowed home screen grid size from 10 x 10 to 20 x 20
- Always reload icons
+ グレゴリオ暦以外の暦で日付を表示できるようにします
+ グリッドサイズ制限の上限を上げる
+ ホーム画面のグリッド数を 10 × 10 から 20 × 20 まで増やします
+ 常にアイコンを再読み込みします
アイコンパックからキャッシュされたアイコンを使用しないようにします
- Lock/unlock
- Prevent selected app from closing when pressing \"Clear all\"
+ ロック/ロック解除
+ 「すべてクリア」を押したときに選択したアプリを閉じないようにします
- To access shortcuts and additional features, set Lawnchair as your default launcher
- Notification dots
- Show notification counter
- Notification dot color
- Notification counter color
- Warning: Notification dot and counter colors don\'t have enough contrast with each other
- Warning: Notification dot and counter colors might not always have enough contrast with each other
- Notification access needed
- To show Notification Dots, turn on app notifications for %1$s
+ ショートカットと追加機能にアクセスするには、Lawnchair をデフォルトのランチャーとして設定してください。
+ 通知ドット
+ 通知の数を表示
+ 通知ドットの色
+ 通知の数の色
+ 警告: 通知ドットと通知の数の色のコントラストが互いに十分ではありません
+ 警告: 通知ドットと通知の数の色のコントラストが互いに十分ではない場合があります
+ 通知へのアクセス権が必要です
+ 通知ドットを表示するには、 %1$s のアプリ通知をオンにします。
- Icon style
- Icon shape
- Icon size
- Show labels
- Label size
- Use multiple lines
+ アイコンのスタイル
+ アイコンの形状
+ アイコンのサイズ
+ ラベルの表示
+ ラベルのサイズ
+ 複数行を使用する
- Transparent themed icons
+ 透明なテーマアイコン
テーマアイコンの背景を透明にします
- Auto-adaptive icons
- For all non-adaptive icons
- Background lightness
+ 自動アダプティブアイコン
+ すべての非アダプティブアイコンが対象
+ 背景の明るさ
Use 100% background lightness for white
- Reset custom icons
+ カスタムアイコンをリセット
すべてのカスタムアイコンがリセットされます。続行しますか?
アイコン
- Reset to default
+ デフォルトにリセット
Open external picker
- Pick icon from
- Couldn\'t load more icons
+ アイコンを選択
+ アイコンを読み込めませんでした
システム
円
@@ -161,54 +161,54 @@
iOS
オクタゴン
One UI
- Rounded square
- Sharp square
+ 角丸四角形
+ 正方形
四角形
丸みがかった正方形
水滴型
- Custom icon shape
- Create custom icon shape
- Edit custom icon shape
- Corner shape
+ カスタムアイコン形状
+ カスタムアイコン形状を作成します
+ カスタムアイコンの形状を編集します
+ 角の形状
丸める
滑らか
切り取る
- Top left
- Top right
- Bottom left
- Bottom right
- Export to clipboard
- Import from clipboard
- Clipboard doesn\'t contain a valid icon shape
+ 左上
+ 右上
+ 左下
+ 右下
+ クリップボードにエクスポート
+ クリップボードからインポート
+ クリップボードに有効なアイコン形状がありません
- Icon pack
- Themed icon source
- System icons
- Themed icons
+ アイコンパック
+ テーマアイコンのソース
+ システムアイコン
+ テーマアイコン
オフ
- Home screen
- Home screen & app drawer
- No supported icon packs
+ ホーム画面
+ ホーム画面 & アプリドロワー
+ サポートされているアイコンパックがありません
- Add fonts
- OTF and TTF fonts are supported
- Font not found
- Font (experimental)
+ フォントを追加
+ OTF および TTF フォントがサポートされています
+ フォントが見つかりません
+ フォント (実験的)
一般設定
- Headings
- Headings (medium)
- Body
- Body (medium)
+ 見出し
+ 見出し (中)
+ 本文
+ 本文 (中)
斜体
Thin
- Extra light
- ライト
+ Extra Light
+ Light
Regular
Medium
Semibold
Bold
- Extra bold
+ Extra Bold
Black
+ Color style
+ Spritz
+ Tonal Spot
+ Vibrant
+ Expressive
+ Rainbow
+ Fruit Salad
+ Content
+ Monochromatic
色
- Accent color
+ アクセントカラー
+ Stroke color
色見本
RGBカラー
赤
@@ -235,7 +246,7 @@
明度
16進数カラーコード
スライダー
- Invalid color
+ 無効な色
充電中
充電完了
- Battery low
+ バッテリー残量の低下
"%1$d%% — 充電完了まで %2$s"
At a Glance
- What to show
+ 表示する項目
カレンダー
- Date & time
+ 日付と時刻
日付
時刻
- Time format
- Follow system
- 12-hour format
- 24-hour format
+ 時刻の形式
+ システムに従う
+ 12時間表記
+ 24時間表記
天気
- Battery status
+ バッテリーの状態
再生中
Tap to set up
%1$s を使用するには、通知ドットを有効にします
- Show on home screen
+ ホーム画面に表示します
At a Glance can be manually added to the home screen by placing the Lawnchair widget
At a Glance provider
@@ -287,9 +298,9 @@
お知らせ
サポート
プロダクト
- Design & development
+ デザイン & 開発
開発
- QuickSwitch maintenance
+ QuickSwitchのメンテナンス
開発・運用
サポート & PR
謝辞
@@ -299,8 +310,8 @@
Backup and restore
-->
- Create backup
- What to back up
+ バックアップを作成
+ バックアップする項目
Layout and settings
壁紙
バックアップの作成
@@ -315,20 +326,20 @@
Gesture settings
-->
- Double tap
+ ダブルタップをしたとき
Swipe up
- Swipe down
- Home button
- Back button
- Do nothing
+ 下にスワイプしたとき
+ ホームボタンを押したとき
+ 戻るボタンを押したとき
+ 何もしない
スリープ状態にします
- Open notification panel
- Open app
+ 通知パネルを開く
+ アプリを開く
%1$s を開く
- Open app drawer
- Open app search
- Open search
- Pick app
+ アプリドロワーを開く
+ アプリ検索を開く
+ 検索を開く
+ アプリを選択
Admin permissions required
To use Double-Tap to Sleep, set Lawnchair as a device admin app. Tap \"Open settings\", then tap \"Activate this device admin app.\"
ダブルタップでスリープを解除します
@@ -341,7 +352,7 @@
-->
Lawnchair bug report
- %1$s crashed
+ %1$s がクラッシュしました
Upload crash log
アップロードに失敗しました
アップロード中…
@@ -357,6 +368,9 @@
Home screen rotation
Allow home screen rotation when device is rotated
+ Enable wallpaper blur
+ Blur intensity
+ Factor threshold
Add new apps to home screen
Show feed
No feed apps installed
@@ -397,6 +411,8 @@
Search bar widget
無効
Google Search bar
+ Opacity
+ Stroke
角の丸み
Apply accent color
Search provider
@@ -442,7 +458,7 @@
Quick actions
共有する
レンズ
- Clear all
+ すべてクリア
Force close
Screen corner radius
Custom screen corner radius
@@ -463,7 +479,7 @@
Files from device
Settings from device
Search for more apps
- Startpage で検索
+ Search on %1$s
No app store or browser installed
Clear search history
Clear search box
@@ -497,7 +513,7 @@
メディア、ファイル、その他
連絡先やその他
- スタートページより
+ Via %1$s
Maximum number of apps in search results
Maximum number of people in search results
@@ -507,7 +523,11 @@
Maximum number of suggestions in search results
Maximum web suggestion delay
- To search for contacts, grant contacts and phone permissions to Lawnchair
+ 連絡先を検索するには、Lawnchair に連絡先と電話の権限を付与してください
To search your files, grant storage permissions to Lawnchair
Grant permissions
+ Lawnchair (compose)
+ Web suggestion provider
+ Show web suggestion provider icon in search bar
+ Match dock search bar style
diff --git a/lawnchair/res/values-ka-rGE/strings.xml b/lawnchair/res/values-ka-rGE/strings.xml
new file mode 100644
index 00000000000..e44e5ed5c37
--- /dev/null
+++ b/lawnchair/res/values-ka-rGE/strings.xml
@@ -0,0 +1,534 @@
+
+
+
+
+
+ გადახედვა
+ შექმნა
+ რეზერვი
+ აღდგენა
+ წაშლა
+ Reset
+ განბლოკვა
+ დაბლოკვა
+ დადასტურება
+ მორგება
+ ყოველთვის
+ არასდროს
+ ბუფერი
+ ლინკის კოპირება
+ კოპირება
+ ჩასმა
+ იტვირთება…
+ Lawnchair მართავს
+
+ პრეფერენციები
+ მთავარის პარამეტრები
+ სისტემის პარამეტრები
+ პარამეტრების ცვლილება
+
+
+ დინამიური
+ საწყისი
+ მორგებული
+ ნაგულისხმევი
+ სისტემა
+
+ სვეტები
+ რიგები
+ იარლიყი
+ ხატულები
+ ბადე
+ განლაგება
+
+ ფონი
+ ფონის გამჭვირვალობა
+
+ კოპირებულია
+ ხატულა მოშლილია
+
+ რა ვავენო
+
+ თქვენი ტელეფონის დაბლოკვის ჟესტისთვის, Lawnchair საჭიროებს Accessibility წვდომას.\n\nLawnchair არ უთვალთვალებს მომხმარებლის ნებისმიერ მოქმედებას, თუმცა ამის პრივილეგია საჭიროა ყველა ხელმისაწვდომი სერვისისთვის. Lawnchair უგულებელყოფს სისტემის მიერ გაგზავნილ ნებისმიერ მოვლენას.\n\nთქვენი ტელეფონის დაბლოკვის მიზნით, Lawnchair იყენებს performGlobalAction Accessibility სერვისს.
+ %1$d x %2$d
+ %s & %s
+
+ პარამეტრები
+ ზოგადი
+ ფერები, ხატულის პაკები, შეტყობინებების წერტილები
+ მთავარი ეკრანი
+ არხი, ბადე, ხატულები
+ დოკი
+ Search bar, icon count
+ აპების უჯრა
+ Hidden apps, column count, icons
+ უჯრის ძებნა
+ Web suggestions, global search
+ Folders
+ Row and column count
+ Gestures
+ Taps and swipes
+ Recents
+ Clear All button, corner radius
+ About
+ App info
+ Restart Lawnchair
+ Experimental features
+
+ Font customization
+ Some text remains unchanged
+ At a Glance calendar customization
+ Allow showing date in non-Gregorian calendar systems
+ Increase maximum grid size limit
+ Increase maximum allowed home screen grid size from 10 x 10 to 20 x 20
+ Always reload icons
+ Avoid using cached icons from icon packs
+ Lock/unlock
+ Prevent selected app from closing when pressing \"Clear all\"
+
+ To access shortcuts and additional features, set Lawnchair as your default launcher
+ Notification dots
+ Show notification counter
+ Notification dot color
+ Notification counter color
+ Warning: Notification dot and counter colors don\'t have enough contrast with each other
+ Warning: Notification dot and counter colors might not always have enough contrast with each other
+ Notification access needed
+ To show Notification Dots, turn on app notifications for %1$s
+
+
+ Icon style
+ Icon shape
+ Icon size
+ Show labels
+ Label size
+ Use multiple lines
+
+ Transparent themed icons
+ Use transparent background on themed icons
+ Auto-adaptive icons
+ For all non-adaptive icons
+ Background lightness
+ Use 100% background lightness for white
+ Reset custom icons
+ All custom icons will be reset. Do you want to continue?
+
+ Icons
+ Reset to default
+ Open external picker
+ Pick icon from
+ Couldn\'t load more icons
+
+ System
+ Circle
+ Cylinder
+ Diamond
+ Egg
+ iOS
+ Octagon
+ One UI
+ Rounded square
+ Sharp square
+ Square
+ Squircle
+ Teardrop
+
+ Custom icon shape
+ Create custom icon shape
+ Edit custom icon shape
+ Corner shape
+ Round
+ Smooth
+ Cut
+ Top left
+ Top right
+ Bottom left
+ Bottom right
+ Export to clipboard
+ Import from clipboard
+ Clipboard doesn\'t contain a valid icon shape
+
+ Icon pack
+ Themed icon source
+ System icons
+ Themed icons
+ Off
+ Home screen
+ Home screen & app drawer
+ No supported icon packs
+
+ Add fonts
+ OTF and TTF fonts are supported
+ Font not found
+ Font (experimental)
+ General
+ Headings
+ Headings (medium)
+ Body
+ Body (medium)
+ Italic
+ Thin
+ Extra light
+ Light
+ Regular
+ Medium
+ Semibold
+ Bold
+ Extra bold
+ Black
+
+
+ Theme
+ Light
+ Dark
+ System
+ Match wallpaper
+
+ Color style
+ Spritz
+ Tonal Spot
+ Vibrant
+ Expressive
+ Rainbow
+ Fruit Salad
+ Content
+ Monochromatic
+
+ Colors
+ Accent color
+ Stroke color
+ Swatches
+ RGB
+ Red
+ Green
+ Blue
+ HSB
+ Hue
+ Saturation
+ Brightness
+ Hex
+ Sliders
+ Invalid color
+
+
+ Gregorian
+ Persian
+ %1$s, %2$s
+
+ Charging
+ Charged
+ Battery low
+ "%1$d%% — Full in %2$s"
+ At a Glance
+ What to show
+
+ Calendar
+ Date & time
+ Date
+ Time
+ Time format
+ Follow system
+ 12-hour format
+ 24-hour format
+
+ Weather
+ Battery status
+ Now Playing
+
+ Tap to set up
+ To use %1$s, enable Notification Dots.
+
+ Show on home screen
+ At a Glance can be manually added to the home screen by placing the Lawnchair widget
+
+ At a Glance provider
+ Google
+ Google Search
+
+ " — "
+ Page %1$d of %2$d
+ Fri, Mar 3
+
+ News
+ Support
+ Product
+ Design & development
+ Development
+ QuickSwitch maintenance
+ DevOps
+ Support & PR
+ Acknowledgements
+ Translate
+
+ Create backup
+ What to back up
+ Layout and settings
+ Wallpaper
+ Backup created
+ Failed to create backup
+ Restore backup
+ What to restore
+ Backup restored
+ Failed to restore backup
+ Invalid backup file
+
+ Double tap
+ Swipe up
+ Swipe down
+ Home button
+ Back button
+ Do nothing
+ Sleep
+ Open notification panel
+ Open app
+ Open %1$s
+ Open app drawer
+ Open app search
+ Open search
+ Pick app
+ Admin permissions required
+ To use Double-Tap to Sleep, set Lawnchair as a device admin app. Tap \"Open settings\", then tap \"Activate this device admin app.\"
+ Double-Tap to Sleep will be turned off.
+ Turn on accessibility service
+ To use Double-Tap to Sleep, turn on the Lawnchair accessibility service. Tap \"Open settings\", select \"Lawnchair\" and turn on \"Use Lawnchair.\"
+ Open settings
+
+ Lawnchair bug report
+ %1$s crashed
+ Upload crash log
+ Upload failed
+ Uploading…
+ Bug reports
+ Upload status
+ %d new reports
+ Multiple new reports
+
+
+ Home screen rotation
+ Allow home screen rotation when device is rotated
+ Enable wallpaper blur
+ Blur intensity
+ Factor threshold
+ Add new apps to home screen
+ Show feed
+ No feed apps installed
+ Feed
+ Feed provider
+ Scroll wallpaper
+ Wallpaper depth effect
+ Zoom in and out of the wallpaper when transitioning between areas of the launcher
+ Top shadow
+ Home screen grid
+ Lock home screen
+ Unlock home screen
+ Home screen is locked
+ Prevent changes to the home screen layout
+ Show dot pagination
+ Use dots instead of lines to show page number
+ Use new pop-up style
+ Use Material You\'s bouncy and slightly consolidated pop-up style
+ Pop-up menu
+ Show lock button
+ Show system settings entry
+ Show Edit button
+ Status bar
+ Show status bar
+ Dark status bar
+ Text color
+ Light
+ Dark
+ Rounded corners
+ Allow overlap
+ Enforce widget resizing
+ Allow resizing of widgets that are constrained to a specific size
+ Remove size constraints
+ Remove the minimum and maximum size restrictions of widgets
+
+ Show dock
+ Search bar
+ Search bar widget
+ Disabled
+ Google Search bar
+ Opacity
+ Stroke
+ Corner radius
+ Apply accent color
+ Search provider
+ Dock icons
+ Bottom padding
+
+ App search
+ %1$s and Lawnchair have a revenue share agreement.\n\nSearching with %1$s helps support Lawnchair.
+ App
+ Website
+ App required
+
+ Search
+ Google Lens
+ Voice Search
+
+ Hidden apps
+ Load apps in bulk
+ Load and display icons in bulk instead of individually
+ Remember position
+ Remember app drawer position after leaving drawer
+ Show scrollbar
+ App drawer columns
+ Row height
+ Horizontal padding
+
+ Hide from app drawer
+ Hidden apps (%1$d)
+
+ - %1$d app
+ - %1$d apps
+
+
+ Icon background opacity
+ Icon background color
+ Maximum folder columns
+ Maximum folder rows
+
+ These settings will be ignored as Lawnchair isn\'t set as the Recents provider
+ Incompatible system integration
+ Your device is configured to have system gestures (known as Quickstep) provided by %1$s, but this version of %1$s isn\'t compatible with your Android version. To continue using your device, please uninstall %1$s updates or disable %1$s as a system gesture provider.
+ Translucent background
+ Background opacity
+ Quick actions
+ Share
+ Lens
+ Clear all
+ Force close
+ Screen corner radius
+ Custom screen corner radius
+ When you swipe up to open Recents, the current app follows your finger, shrinking into a card. Use this slider to adjust the corner radius of the card when it\'s nearly full screen so it matches the corners of your screen.
+ Taskbar
+ Show taskbar (experimental)
+
+
+ Search
+ Search apps
+ No apps found matching \"%1$s\"
+ From the web
+ Contacts from device
+ Files from device
+ Settings from device
+ Search for more apps
+ Search on %1$s
+ No app store or browser installed
+ Clear search history
+ Clear search box
+
+ Search
+ Show search bar
+ Automatically show keyboard
+ Fuzzy search
+ Approximate matching for app searches
+ Suggestions
+ Show suggested apps at the top of the drawer
+ Device search
+ Search your phone contacts, files, and settings
+ Show hidden apps in search results
+ If full name is typed
+ Search algorithm
+ App Search
+ Global search (on-device)
+ Global search (via ASI)
+
+ Show in search results
+ Apps & Shortcuts
+ App shortcuts
+ People
+ Pixel tips
+ Android settings
+ Files
+ Web suggestions
+ Search history
+ Calculator
+
+ Media, files, and more
+ Contacts and more
+ Via %1$s
+
+ Maximum number of apps in search results
+ Maximum number of people in search results
+ Maximum number of files in search results
+ Maximum number of settings entries in search results
+ Maximum number of history entries in search results
+ Maximum number of suggestions in search results
+ Maximum web suggestion delay
+
+ To search for contacts, grant contacts and phone permissions to Lawnchair
+ To search your files, grant storage permissions to Lawnchair
+ Grant permissions
+ Lawnchair (compose)
+ Web suggestion provider
+ Show web suggestion provider icon in search bar
+ Match dock search bar style
+
diff --git a/lawnchair/res/values-kmr-rTR/strings.xml b/lawnchair/res/values-kmr-rTR/strings.xml
index e8075b70b50..452d10acc66 100644
--- a/lawnchair/res/values-kmr-rTR/strings.xml
+++ b/lawnchair/res/values-kmr-rTR/strings.xml
@@ -221,9 +221,20 @@
Dark
System
Match wallpaper
+
+ Color style
+ Spritz
+ Tonal Spot
+ Vibrant
+ Expressive
+ Rainbow
+ Fruit Salad
+ Content
+ Monochromatic
Colors
Accent color
+ Stroke color
Swatches
RGB
Red
@@ -357,6 +368,9 @@
Home screen rotation
Allow home screen rotation when device is rotated
+ Enable wallpaper blur
+ Blur intensity
+ Factor threshold
Add new apps to home screen
Show feed
No feed apps installed
@@ -397,6 +411,8 @@
Search bar widget
Disabled
Google Search bar
+ Opacity
+ Stroke
Corner radius
Apply accent color
Search provider
@@ -464,7 +480,7 @@
Files from device
Settings from device
Search for more apps
- Search on Startpage
+ Search on %1$s
No app store or browser installed
Clear search history
Clear search box
@@ -498,7 +514,7 @@
Media, files, and more
Contacts and more
- Via Startpage
+ Via %1$s
Maximum number of apps in search results
Maximum number of people in search results
@@ -511,4 +527,8 @@
To search for contacts, grant contacts and phone permissions to Lawnchair
To search your files, grant storage permissions to Lawnchair
Grant permissions
+ Lawnchair (compose)
+ Web suggestion provider
+ Show web suggestion provider icon in search bar
+ Match dock search bar style
diff --git a/lawnchair/res/values-ko-rKR/strings.xml b/lawnchair/res/values-ko-rKR/strings.xml
index 8141ee023a4..06991dde2bb 100644
--- a/lawnchair/res/values-ko-rKR/strings.xml
+++ b/lawnchair/res/values-ko-rKR/strings.xml
@@ -23,7 +23,7 @@
-->
미리보기
생성
- Backup
+ 백업
복원
삭제
초기화
@@ -32,18 +32,18 @@
적용
개인화
항상
- Never
+ 절대
클립보드
- Copy link
+ 링크 복사
복사
붙여넣기
불러오는 중...
Lawnchair에서 관리
설정
- Home settings
- System settings
- Change settings
+ 홈 화면 설정
+ 시스템 설정
+ 설정 변경
배경화면
- Background opacity
+ 백그라운드 투명도
- Copied to clipboard
- 항목이 삭제되었습니다.
+ 클립보드에 복사했습니다.
+ 항목을 삭제했습니다.
- What to show
+ 표시할 항목
- To lock your phone when performing a gesture, Lawnchair requires accessibility access.\n\nLawnchair doesn\'t watch any user action, though the privilege to do so is required for all accessibility services. Lawnchair discards any event sent by the system.\n\nIn order to lock your phone, Lawnchair uses the performGlobalAction Accessibility service.
+ 제스처를 수행할 때 휴대폰을 잠그려면 접근성 액세스 권한이 필요합니다.\n\nLawnchair는 모든 접근성 서비스를 위해 필요한 권한이지만 사용자 동작을 감시하지 않습니다. Lawnchair는 시스템에서 보낸 모든 이벤트를 삭제합니다.\n\nLawnchair는 휴대전화를 잠그기 위해 performGlobalAction 접근성 서비스를 사용합니다.
%1$d x %2$d
%s & %s
설정
일반
- Colors, icon packs, notification dots
- Home screen
- Feed, grid, icons
+ 색상, 아이콘 팩, 알림 배지
+ 홈 화면
+ 피드, 그리드, 아이콘
독
- Search bar, icon count
- App drawer
- Hidden apps, column count, icons
- Drawer search
- Web suggestions, global search
+ 검색 표시줄, 아이콘 개수
+ 앱 서랍
+ 숨겨진 앱, 아이콘 가로 배치 수, 아이콘
+ 서랍 검색
+ 웹 제안, 글로벌 검색
폴더
- Row and column count
+ 아이콘 세로 및 가로 배치 수
제스처
- Taps and swipes
+ 탭 및 스와이프
최근 앱
- Clear All button, corner radius
+ 모두 닫기 버튼, 가장자리 둥글기
더 보기
- App info
+ 앱 정보
Lawnchair 재시작
- Experimental features
+ 실험적 기능
- Font customization
+ 글꼴 사용자 정의
일부 텍스트는 변경되지 않습니다.
- At a Glance calendar customization
+ 한눈에 보기 달력 사용자 정의
그레고리력이 아닌 달력 시스템에 날짜 표시 허용
- Increase maximum grid size limit
- Increase maximum allowed home screen grid size from 10 x 10 to 20 x 20
- Always reload icons
+ 최대 그리드 크기 제한 늘리기
+ 허용되는 최대 홈 화면 그리드 크기를 10 x 10에서 20 x 20으로 늘립니다.
+ 항상 아이콘 새로고침
아이콘 팩에서 캐시된 아이콘 사용 안 함
- Lock/unlock
- Prevent selected app from closing when pressing \"Clear all\"
+ 잠금/잠금 해제
+ \"모두 지우기\" 사용 시 선택한 앱이 지워지지 않도록 방지
- To access shortcuts and additional features, set Lawnchair as your default launcher
- Notification dots
- Show notification counter
- Notification dot color
- Notification counter color
- Warning: Notification dot and counter colors don\'t have enough contrast with each other
- Warning: Notification dot and counter colors might not always have enough contrast with each other
+ 바로 가기 및 추가 기능에 액세스하려면 Lawnchair를 기본 홈 앱으로 설정하세요.
+ 알림 배지
+ 알림 개수 표시
+ 알림 배지 색상
+ 알림 개수 색상
+ 경고: 알림 배지 및 알림 개수 색상의 대비가 충분하지 않습니다.
+ 경고: 알림 배지와 알림 개수의 색상 대비가 충분하지 않습니다.
알림 액세스가 필요합니다.
- To show Notification Dots, turn on app notifications for %1$s
+ 알림 점을 표시하려면 %1$s에 대한 앱 알림을 켜세요.
- Icon style
- Icon shape
- Icon size
- Show labels
- Label size
- Use multiple lines
+ 아이콘 스타일
+ 아이콘 모양
+ 아이콘 크기
+ 라벨 표시
+ 라벨 크기
+ 여러 줄 사용
- Transparent themed icons
+ 투명 테마 아이콘
테마 아이콘에 투명한 배경 사용하기
- Auto-adaptive icons
- For all non-adaptive icons
- Background lightness
- Use 100% background lightness for white
- Reset custom icons
+ 자동 적응형 아이콘
+ 모든 비적응형 아이콘들을 위한 기능입니다
+ 백그라운드 밝기
+ 백그라운드 밝기를 100%로 할 경우 하얀색이 됩니다
+ 커스텀아이콘 리셋
모든 사용자 정의 아이콘이 재설정됩니다. 계속하시겠습니까?
아이콘
기본값으로 초기화하기
외부에서 불러오기
- Pick icon from
- Couldn\'t load more icons
+ 가져올 아이콘 고르기
+ 아이콘을 더 불러올 수 없습니다
시스템
동그라미
@@ -161,54 +161,54 @@
iOS
팔각형
One UI
- Rounded square
- Sharp square
+ 둥근 모서리 사각형
+ 각진 사각형
사각형
둥근 사각형
물방울
- Custom icon shape
- Create custom icon shape
- Edit custom icon shape
- Corner shape
+ 커스텀아이콘 모양
+ 커스텀 아이콘 모양 만들기
+ 사용자 정의 아이콘 모양 편집
+ 모서리 모양
원호
곡선
잘림
- Top left
- Top right
- Bottom left
- Bottom right
- Export to clipboard
- Import from clipboard
- Clipboard doesn\'t contain a valid icon shape
+ 왼쪽 상단
+ 오른쪽 상단
+ 왼쪽 하단
+ 오른쪽 하단
+ 클립보드로 내보내기
+ 클립보드에서 가져오기
+ 클립보드에 올바른 아이콘 모양이 없습니다.
- Icon pack
- Themed icon source
- System icons
- Themed icons
+ 아이콘 팩
+ 테마 아이콘 소스
+ 시스템 아이콘
+ 테마가 적용된 아이콘
사용 안함
- Home screen
- Home screen & app drawer
+ 홈 화면
+ 홈 화면 & 앱 서랍
지원되는 아이콘 팩이 없습니다.
- Add fonts
- OTF and TTF fonts are supported
+ 글꼴 추가
+ OTF 및 TTF 글꼴이 지원됩니다
글꼴을 찾을 수 없습니다
- Font (experimental)
+ 폰트(베타)
일반
제목
- Headings (medium)
+ 제목(중간)
바디
- Body (medium)
+ 바디(미디엄)
Italic
Thin
- Extra light
+ 매우 얇음
라이트
Regular
Medium
Semibold
Bold
- Extra bold
+ 매우 굵음
Black
+ 색상 스타일
+ Spritz
+ 톤 스팟
+ 활기찬
+ 표현
+ 무지개
+ 과일 샐러드
+ 컨텐츠
+ 단색
색상
- Accent color
+ 강조 색상
+ Stroke color
견본
RGB
빨강
@@ -235,7 +246,7 @@
밝기
Hex
슬라이드
- Invalid color
+ 잘못된 색상
충전 중
충전 됨
- Battery low
+ 배터리 낮음
"%1$d%% — %2$s 후 충전완료"
한눈에 보기
- What to show
+ 표시할 항목
달력
- Date & time
+ 날짜 & 시간
날짜
시간
- Time format
- Follow system
- 12-hour format
- 24-hour format
+ 시간 형식
+ 시스템 설정 따르기
+ 12시간 형식
+ 24시간 형식
날씨
- Battery status
+ 배터리 상태
현재 재생 중
- Tap to set up
+ 탭하여 설정하기
%1$s을(를) 사용하려면, 알림 배지를 활성화해야합니다.
- Show on home screen
- At a Glance can be manually added to the home screen by placing the Lawnchair widget
+ 홈 화면에 표시
+ 한눈에 보기는 Lawnchair 위젯을 배치하여 수동으로 홈 화면에 추가할 수 있습니다
- At a Glance provider
- 구글
- 구글 검색
+ 한 눈에 보기 제공자
+ Google
+ Google 검색
" — "
페이지 %1$d / %2$d
@@ -287,9 +298,9 @@
뉴스
지원
제품
- Design & development
+ 디자인 & 개발
개발
- QuickSwitch maintenance
+ 퀵 스위치 점검
DevOps
지원 & 문의
감사의 말
@@ -299,156 +310,161 @@
Backup and restore
-->
- Create backup
- What to back up
- Layout and settings
+ 백업 생성
+ 백업 대상
+ 레이아웃 및 설정
배경화면
- Backup created
- Failed to create backup
- Restore backup
- What to restore
- Backup restored
- Failed to restore backup
- Invalid backup file
+ 백업이 생성되었습니다
+ 백업을 생성하지 못했습니다
+ 백업 복원
+ 복원 대상
+ 백업 복원되었습니다
+ 백업을 복원하지 못했습니다
+ 잘못된 백업 파일입니다
- Double tap
- Swipe up
- Swipe down
- Home button
- Back button
- Do nothing
+ 더블 탭
+ 쓸어 올리기
+ 쓸어 내리기
+ 홈 버튼
+ 뒤로가기 버튼
+ 아무것도 안하기
절전
- Open notification panel
- Open app
+ 알림 패널 열기
+ 앱 열기
%1$s 열기
- Open app drawer
- Open app search
- Open search
- Pick app
- Admin permissions required
- To use Double-Tap to Sleep, set Lawnchair as a device admin app. Tap \"Open settings\", then tap \"Activate this device admin app.\"
+ 앱 서랍 열기
+ 앱 검색 열기
+ 검색 열기
+ 앱 선택
+ 관리자 권한이 필요합니다
+ 두 번 눌러 화면 끄기 기능을 사용하려면, Lawnchair 앱을 기기 관리자 앱으로 할당 받아야 합니다. \"설정 열기\"를 누른 후, \"이 기기 관리자 앱 활성화\"를 누르세요.
두 번 눌러 화면 끄기 기능이 비활성화 되었습니다.
- Turn on accessibility service
- To use Double-Tap to Sleep, turn on the Lawnchair accessibility service. Tap \"Open settings\", select \"Lawnchair\" and turn on \"Use Lawnchair.\"
- Open settings
+ 접근성 서비스가 활성화되어야합니다
+ 두 번 눌러 화면 끄기를 사용하려면, 접근성 설정에서 Lawnchair를 활성화 해야 합니다. \"설정 열기\"를 눌러 \"Lawnchair\"를 활성화 해주세요.
+ 설정 열기
- Lawnchair bug report
- %1$s crashed
- Upload crash log
+ Lawnchair 버그 신고하기
+ %1$s가 종료되었습니다
+ 크래시 로그 업로드
업로드 실패
업로드 중...
- Bug reports
- Upload status
- %d new reports
- Multiple new reports
+ 신고된 버그들
+ 업로드 현황
+ %d개의 새 신고내역이 있습니다
+ 여러개의 새 신고내역들
- Home screen rotation
- Allow home screen rotation when device is rotated
- Add new apps to home screen
- Show feed
+ 홈 화면 회전
+ 기기 회전 때 홈 화면 회전 허용
+ Enable wallpaper blur
+ Blur intensity
+ Factor threshold
+ 홈 화면에 새로운 앱 바로가기 추가
+ 피드 활성화
설치된 피드 앱이 없습니다.
피드
- Feed provider
- Scroll wallpaper
- Wallpaper depth effect
- Zoom in and out of the wallpaper when transitioning between areas of the launcher
- Top shadow
- Home screen grid
- Lock home screen
- Unlock home screen
- Home screen is locked
+ 피드 제공자
+ 배경화면 움직이기
+ 배경 화면 깊이 효과
+ 런처 영역 간 전환 시 배경화면 확대/축소
+ 상태표시줄 그림자
+ 홈 화면 칸 수
+ 홈 화면 잠금
+ 홈 화면 잠금해제
+ 홈 화면이 잠겨 있습니다.
홈 화면 레이아웃 변경 방지
도트 페이지네이션 표시
선 대신 점을 사용하여 페이지 번호 표시
- Use new pop-up style
- Use Material You\'s bouncy and slightly consolidated pop-up style
- Pop-up menu
- Show lock button
- Show system settings entry
- Show Edit button
- Status bar
- Show status bar
- Dark status bar
- Text color
+ 새로운 팝업 스타일 사용
+ Material You의 탄력 있고 통합된 팝업 스타일 사용
+ 팝업 메뉴
+ 잠그기 버튼 표시
+ 시스템 설정 항목 표시
+ 편집 버튼 표시
+ 상태 표시줄
+ 상태 표시줄 표시
+ 어두운 상태 표시줄
+ 텍스트 색상
라이트
다크
- Rounded corners
- Allow overlap
- Enforce widget resizing
+ 둥근 모서리
+ 겹치기 허용
+ 웨젯 크기 강제로 조정
특정 크기로 제한된 위젯의 크기 조정 허용
- Remove size constraints
+ 크기 제약 조건 제거
위젯의 최소 및 최대 크기 제한 제거
- Show dock
- Search bar
- Search bar widget
+ 독 표시
+ 검색 표시줄
+ 검색 표시줄 위젯
비활성화됨
- Google Search bar
+ Google 검색 표시줄
+ Opacity
+ Stroke
가장자리 둥글기
- Apply accent color
- Search provider
- Dock icons
- Bottom padding
+ 강조 색상 적용하기
+ 검색 제공자
+ 독 아이콘
+ 하단 패딩
- App search
- %1$s and Lawnchair have a revenue share agreement.\n\nSearching with %1$s helps support Lawnchair.
+ 앱 검색
+ %1$s과 Lawnchair는 수익 공유 계약을 맺었습니다.\n\n%1$s로 검색하면 Lawnchair 지원에 도움이 됩니다.
앱
웹사이트
앱 필요
검색
- 구글 렌즈
+ Google 렌즈
음성 검색
- Hidden apps
- Load apps in bulk
- Load and display icons in bulk instead of individually
- Remember position
+ 숨겨진 앱
+ 앱 한꺼번에 불러오기
+ 아이콘을 각각 불러오지 않고 한꺼번에 불러와 표시
+ 위치 기억
앱 서랍 종료 시 앱 서랍 위치를 기억
- Show scrollbar
- App drawer columns
- Row height
- Horizontal padding
+ 스크롤바 표시
+ 앱 서랍 아이콘 가로 배치 수
+ 가로 행 높이
+ 가로 패딩
- Hide from app drawer
- Hidden apps (%1$d)
+ 앱 서랍에서 숨기기
+ 숨겨진 앱 (%1$d)
- - %1$d apps
+ - %1$d 앱
- Icon background opacity
- Icon background color
- Maximum folder columns
- Maximum folder rows
+ 아이콘 배경 투명도
+ 아이콘 배경색
+ 최대 폴더 열
+ 최대 폴더 행
- These settings will be ignored as Lawnchair isn\'t set as the Recents provider
- Incompatible system integration
- Your device is configured to have system gestures (known as Quickstep) provided by %1$s, but this version of %1$s isn\'t compatible with your Android version. To continue using your device, please uninstall %1$s updates or disable %1$s as a system gesture provider.
- Translucent background
- Background opacity
- Quick actions
+ Lawnchair가 최근 앱 제공자로 설정되지 않았으므로 아래 설정은 무시됩니다
+ 호환되지 않는 시스템 통합
+ 기기가 %1$s에서 제공하는 시스템 제스처(Quickstep으로 알려져 있음)가 설정되어 있지만 %1$s의 이 버전은 Android 버전과 호환되지 않습니다. 장치를 계속 사용하려면 %1$s 업데이트를 제거하거나 시스템 제스처 공급자로 %1$s을(를) 비활성화하십시오.
+ 반투명 배경
+ 백그라운드 투명도
+ 빠른 바로가기
공유
렌즈
- Clear all
+ 모두 지우기
강제 종료
- Screen corner radius
- Custom screen corner radius
- When you swipe up to open Recents, the current app follows your finger, shrinking into a card. Use this slider to adjust the corner radius of the card when it\'s nearly full screen so it matches the corners of your screen.
+ 가장자리 둥글기
+ 가장자리 둥글기 개인화
+ 위로 스와이프하여 최근 앱 화면을 열면, 현재 앱이 손가락을 따라가며 카드로 줄어듭니다. 이 슬라이더를 사용하여 카드가 거의 전체 화면일 때 화면 모서리와 일치하도록 카드의 모서리 반경을 조정할 수 있습니다.
작업 표시줄
- Show taskbar (experimental)
+ 작업 표시줄 표시(실험적)
검색
앱 검색
- No apps found matching \"%1$s\"
+ \"%1$s\"(와)과 일치는 앱 없습니다.
웹으로부터
- Contacts from device
- Files from device
- Settings from device
- Search for more apps
- Startpage에서 검색
- No app store or browser installed
- Clear search history
- Clear search box
+ 기기의 연락처
+ 기기의 파일
+ 기기의 설정
+ 더 많은 앱 검색하기
+ %1$s에서 검색
+ 앱 스토어나 브라우저가 설치되어 있지 않습니다
+ 검색기록 삭제
+ 검색 상자 비우기
검색
- Show search bar
- Automatically show keyboard
- Fuzzy search
- Approximate matching for app searches
+ 검색 표시줄 사용
+ 자동으로 키보드 표시
+ 유사 검색어 검색
+ 앱을 검색할 때 검색어와 유사한 앱을 찾아줍니다
제안
- Show suggested apps at the top of the drawer
- Device search
- Search your phone contacts, files, and settings
- Show hidden apps in search results
- If full name is typed
- Search algorithm
+ 앱 서랍 상단에 추천 앱 표시
+ 장치 검색
+ 휴대전화의 연락처, 파일, 설정 검색
+ 검색 결과에 숨겨진 앱 표시
+ 전체 이름을 입력한 경우
+ 검색 알고리즘
앱 검색
- Global search (on-device)
- Global search (via ASI)
+ 글로벌 검색(기기 내)
+ 글로벌 검색 (ASI를 통해)
- Show in search results
+ 검색 결과에 보여주기
앱 및 바로가기
- App shortcuts
+ 앱 바로가기
사람들
- Pixel tips
- Android settings
+ Pixel 도움말
+ Android 설정
파일
웹 제안
- Search history
+ 검색 기록
계산기
미디어, 파일 등
연락처 등
- Startpage를 통해
+ %1$s 제공
- Maximum number of apps in search results
- Maximum number of people in search results
- Maximum number of files in search results
- Maximum number of settings entries in search results
- Maximum number of history entries in search results
- Maximum number of suggestions in search results
- Maximum web suggestion delay
+ 검색 결과에 최대 앱 개수
+ 검색 결과에 최대 사람 개수
+ 검색 결과에 최대 파일 개수
+ 검색 결과에 최대 설정 항목 개수
+ 검색 결과에 최대 기록 항목 개수
+ 검색 결과에 최대 추천 개수
+ 최대 웹 제안
- To search for contacts, grant contacts and phone permissions to Lawnchair
- To search your files, grant storage permissions to Lawnchair
- Grant permissions
+ 연락처를 검색하려면 Lawnchair에 연락처 및 전화 권한을 부여하세요
+ 파일을 검색하려면 Lawnchair에 저장소 권한을 부여하세요
+ 권한 부여
+ Lawnchair (compose)
+ 웹 제안 제공자
+ 검색 표시줄에 웹 제안 제공자 아이콘 표시
+ 독 검색 표시줄 스타일에 따르기
diff --git a/lawnchair/res/values-lt-rLT/strings.xml b/lawnchair/res/values-lt-rLT/strings.xml
index 068d6b6156a..aec92bdb82a 100644
--- a/lawnchair/res/values-lt-rLT/strings.xml
+++ b/lawnchair/res/values-lt-rLT/strings.xml
@@ -23,27 +23,27 @@
-->
Peržiūra
Sukurti
- Backup
+ Sukurti atsarginę kopiją
Atkurti
Ištrinti
Atstatyti
- Unlock
- Lock
+ Atrakinti
+ Užrakinti
Taikyti
Tinkinti
- Always
- Never
+ Visada
+ Niekada
Iškarpinė
- Copy link
+ Kopijuoti nuorodą
Kopijuoti
Įklijuoti
Kraunasi…
Valdoma „Lawnchair“
Parinktys
- Home settings
- System settings
- Change settings
+ Pagr. ekrano nustatymai
+ Sistemos nustatymai
+ Pakeisti nustatymus
Ekrano Fonas
- Background opacity
+ Fono skaidrumas
- Copied to clipboard
- Item removed
+ Nukopijuota į iškarpinę
+ Elementas pašalintas
- What to show
+ Ką rodyti
- To lock your phone when performing a gesture, Lawnchair requires accessibility access.\n\nLawnchair doesn\'t watch any user action, though the privilege to do so is required for all accessibility services. Lawnchair discards any event sent by the system.\n\nIn order to lock your phone, Lawnchair uses the performGlobalAction Accessibility service.
+ Norint užrakinti telefoną gestu, \"Lawnchair\" reikia suteikti leidimą prieinamumo nustatymams.\n\n\"Lawnchair\" nestebi jūsų veiksmų, tačiau toks leidimas reikalingas visoms prieinamumo paslaugoms. \"Lawnchair\" atmeta bet kokį sistemos siunčiamą įvykį.\n\nTelefono užrakinimui \"Lawnchair\" naudoja prieinamumo paslaugą \"performGlobalAction\".
%1$d x %2$d
%s & %s
Nustatymai
Pagrindinis
- Colors, icon packs, notification dots
- Home screen
- Feed, grid, icons
+ Spalvos, piktogramų paketai, pranešimų taškeliai
+ Pagrindinis ekranas
+ Naujienos, tinklelis, piktrogramos
Pažemynis
- Search bar, icon count
- App drawer
- Hidden apps, column count, icons
- Drawer search
- Web suggestions, global search
+ Paieškos juosta, piktogramų skaičius
+ Programėlių lentyna
+ Paslėptos programėlės, stulpelių skaičius, piktogramos
+ Progr. lentynos paieška
+ Žiniatinklio pasiūlymai, globali paieška
Aplankai
- Row and column count
+ Eilučių ir stulpelių skaičius
Gestai
- Taps and swipes
+ Paspaudimai ir perbraukimai
Naujausi
- Clear All button, corner radius
+ \"Išvalyti visus\" mygtukas, kampų spindulys
Apie
- App info
+ Programėles informacija
Iš Naujo Paleiskite \"Lawnchair\"
- Experimental features
+ Eksperimentiniai nustatymai
- Font customization
+ Šriftų tinkinimas
Dalis teksto liko nepakeista
- At a Glance calendar customization
+ \"At a Glance\" kalendoriaus tinkinimas
Leisti rodyti datą ne Grigaliaus kalendoriaus sistemose
- Increase maximum grid size limit
- Increase maximum allowed home screen grid size from 10 x 10 to 20 x 20
- Always reload icons
+ Padidinti tinklelio dydžio ribą
+ Padidinti maksimalų leidžiamą pagrindinio ekrano dydį nuo 10 x 10 iki 20 x 20
+ Visada perkrauti piktogramas
Vengti talpyklose esančias piktogramas iš piktogramų paketų
- Lock/unlock
- Prevent selected app from closing when pressing \"Clear all\"
+ Užrakinti/Atrakinti
+ Neleisti pasirinktai programėlei užsidaryti paspaudžiant \"Išvalyti visus\"
- To access shortcuts and additional features, set Lawnchair as your default launcher
- Notification dots
- Show notification counter
- Notification dot color
- Notification counter color
- Warning: Notification dot and counter colors don\'t have enough contrast with each other
- Warning: Notification dot and counter colors might not always have enough contrast with each other
+ Norėdami naudotis nuorodomis ir papildomomis funkcijomis, nustatykite \"Lawnchair\" kaip numatytąją paleidimo programėlę
+ Pranešimų taškeliai
+ Rodyti pranešimų skaičių
+ Pranešimo taškelio spalva
+ Pranešimų skaičiaus spalva
+ Įspėjimas: Pranešimo taško ir skaičiaus spalvos nėra pakankamai skirtingos
+ Įspėjimas: Pranešimo taško ir skaičiaus spalvos kartais gali būti nepakankamai skirtingos
Reikalinga pranešimų prieiga
- To show Notification Dots, turn on app notifications for %1$s
+ Norėdami rodyti pranešimų taškelius, įjunkite programėlių pranešimus %1$s
- Icon style
- Icon shape
- Icon size
- Show labels
- Label size
- Use multiple lines
+ Piktogramų stilius
+ Piktogramų forma
+ Piktogramų dydis
+ Rodyti etiketes
+ Etiketės dydis
+ Naudoti kelias eilutes
- Transparent themed icons
+ Permatomos teminės piktogramos
Naudoti permatoma foną temintoms piktogramoms
- Auto-adaptive icons
+ Adaptyvios piktogramos
For all non-adaptive icons
Background lightness
Use 100% background lightness for white
@@ -221,9 +221,20 @@
Tamsi
Sistemos
Match wallpaper
+
+ Color style
+ Spritz
+ Tonal Spot
+ Vibrant
+ Expressive
+ Rainbow
+ Fruit Salad
+ Content
+ Monochromatic
Spalvos
Accent color
+ Stroke color
Pavyzdžiai
RGB
Raudona
@@ -258,21 +269,21 @@
Data
Laikas
Time format
- Follow system
- 12-hour format
- 24-hour format
+ Pagal sistemą
+ 12 valandų formatas
+ 24 valandų formatas
Orai
- Battery status
+ Baterijos būsena
Dabar Groja
- Tap to set up
+ Paspauskite, kad nustatyti
Įjunkite Pranešimų Taškus, norint naudoti %1$s.
- Show on home screen
- At a Glance can be manually added to the home screen by placing the Lawnchair widget
+ Rodyti pagr. ekrane
+ „At a Glance“ pranešimų valdiklį galima pridėti rankiniu būdu, pridėjus „Lawnchair“ valdiklį
- At a Glance provider
+ „At a Glance“ teikėjas
Google
Google Paieška
@@ -287,7 +298,7 @@
Naujienos
Paremti
Produktas
- Design & development
+ Dizainas & kūrimas
Plėtra
QuickSwitch maintenance
„DevOps“
@@ -357,6 +368,9 @@
Home screen rotation
Allow home screen rotation when device is rotated
+ Enable wallpaper blur
+ Blur intensity
+ Factor threshold
Add new apps to home screen
Show feed
Nėra suinstaliuotu šoninio menių programų
@@ -397,6 +411,8 @@
Search bar widget
Išjungta
Google Search bar
+ Opacity
+ Stroke
Corner radius
Apply accent color
Search provider
@@ -466,7 +482,7 @@
Files from device
Settings from device
Search for more apps
- Search on Startpage
+ Search on %1$s
No app store or browser installed
Clear search history
Clear search box
@@ -500,7 +516,7 @@
Media, files, and more
Contacts and more
- Via Startpage
+ Via %1$s
Maximum number of apps in search results
Maximum number of people in search results
@@ -513,4 +529,8 @@
To search for contacts, grant contacts and phone permissions to Lawnchair
To search your files, grant storage permissions to Lawnchair
Grant permissions
+ Lawnchair (compose)
+ Web suggestion provider
+ Show web suggestion provider icon in search bar
+ Match dock search bar style
diff --git a/lawnchair/res/values-ml-rIN/strings.xml b/lawnchair/res/values-ml-rIN/strings.xml
index 4b34bc14506..59808c1cd08 100644
--- a/lawnchair/res/values-ml-rIN/strings.xml
+++ b/lawnchair/res/values-ml-rIN/strings.xml
@@ -221,9 +221,20 @@
ഇരുണ്ട
സിസ്റ്റം
Match wallpaper
+
+ Color style
+ Spritz
+ Tonal Spot
+ Vibrant
+ Expressive
+ Rainbow
+ Fruit Salad
+ Content
+ Monochromatic
നിറങ്ങൾ
Accent color
+ Stroke color
Swatches
ചുവപ്പ് പച്ച നീല
ചുവപ്പ്
@@ -357,6 +368,9 @@
Home screen rotation
Allow home screen rotation when device is rotated
+ Enable wallpaper blur
+ Blur intensity
+ Factor threshold
Add new apps to home screen
Show feed
No feed apps installed
@@ -397,6 +411,8 @@
Search bar widget
Disabled
Google Search bar
+ Opacity
+ Stroke
Corner radius
Apply accent color
Search provider
@@ -464,7 +480,7 @@
Files from device
Settings from device
Search for more apps
- Search on Startpage
+ Search on %1$s
No app store or browser installed
Clear search history
Clear search box
@@ -498,7 +514,7 @@
Media, files, and more
Contacts and more
- Via Startpage
+ Via %1$s
Maximum number of apps in search results
Maximum number of people in search results
@@ -511,4 +527,8 @@
To search for contacts, grant contacts and phone permissions to Lawnchair
To search your files, grant storage permissions to Lawnchair
Grant permissions
+ Lawnchair (compose)
+ Web suggestion provider
+ Show web suggestion provider icon in search bar
+ Match dock search bar style
diff --git a/lawnchair/res/values-mr-rIN/strings.xml b/lawnchair/res/values-mr-rIN/strings.xml
index 7931962f800..eca1c6c5181 100644
--- a/lawnchair/res/values-mr-rIN/strings.xml
+++ b/lawnchair/res/values-mr-rIN/strings.xml
@@ -221,9 +221,20 @@
गडद
निरूती
Match wallpaper
+
+ Color style
+ Spritz
+ Tonal Spot
+ Vibrant
+ Expressive
+ Rainbow
+ Fruit Salad
+ Content
+ Monochromatic
रंग
Accent color
+ Stroke color
Swatches
RGB
Red
@@ -357,6 +368,9 @@
Home screen rotation
Allow home screen rotation when device is rotated
+ Enable wallpaper blur
+ Blur intensity
+ Factor threshold
Add new apps to home screen
Show feed
No feed apps installed
@@ -397,6 +411,8 @@
Search bar widget
Disabled
Google Search bar
+ Opacity
+ Stroke
Corner radius
Apply accent color
Search provider
@@ -464,7 +480,7 @@
Files from device
Settings from device
Search for more apps
- Search on Startpage
+ Search on %1$s
No app store or browser installed
Clear search history
Clear search box
@@ -498,7 +514,7 @@
Media, files, and more
Contacts and more
- Via Startpage
+ Via %1$s
Maximum number of apps in search results
Maximum number of people in search results
@@ -511,4 +527,8 @@
To search for contacts, grant contacts and phone permissions to Lawnchair
To search your files, grant storage permissions to Lawnchair
Grant permissions
+ Lawnchair (compose)
+ Web suggestion provider
+ Show web suggestion provider icon in search bar
+ Match dock search bar style
diff --git a/lawnchair/res/values-nl-rNL/strings.xml b/lawnchair/res/values-nl-rNL/strings.xml
index 5246d5bc351..1c0aea41f9d 100644
--- a/lawnchair/res/values-nl-rNL/strings.xml
+++ b/lawnchair/res/values-nl-rNL/strings.xml
@@ -23,7 +23,7 @@
-->
Voorbeeld
Aanmaken
- Backup
+ Back-up
Terugzetten
Verwijderen
Reset
@@ -34,16 +34,16 @@
Altijd
Nooit
Klembord
- Copy link
+ Koppeling kopiëren
Kopiëren
Plakken
Laden…
Beheerd door Lawnchair
Voorkeuren
- Home settings
- System settings
- Change settings
+ Instellingen voor startscherm
+ Systeeminstellingen
+ Instellingen wijzigen
Achtergrond
- Background opacity
+ Achtergronddekking
- Copied to clipboard
+ Gekopieerd naar klembord
Item verwijderd
- What to show
+ Weergeven
Om je telefoon te vergrendelen bij het uitvoeren van een gebaar, heeft Lawnchair toegang tot toegankelijkheid nodig.\n\nLawnchair kijkt niet naar gebruikersacties, hoewel het voorrecht om dit te doen vereist is voor alle toegankelijkheidsdiensten. Lawnchair negeert elke gebeurtenis die door het systeem wordt gemeld.\n\nOm je telefoon te vergrendelen, gebruikt Lawnchair de performGlobalAction Accessibility service.
%1$d x %2$d
@@ -81,77 +81,77 @@
-->
Instellingen
Algemeen
- Colors, icon packs, notification dots
- Home screen
- Feed, grid, icons
+ Kleuren, pictogrampakketten, meldingsstippen
+ Startscherm
+ Feed, raster, pictogrammen
Dock
- Search bar, icon count
- App drawer
- Hidden apps, column count, icons
- Drawer search
- Web suggestions, global search
+ Zoekbalk, aantal pictogrammen
+ App-lade
+ Verborgen apps, kolommen, pictogrammen
+ App-lade doorzoeken
+ Websuggesties, Algemeen zoeken
Mappen
- Row and column count
+ Aantal rijen en kolommen
Gebaren
- Taps and swipes
+ Tikken en vegen
Recente apps
- Clear All button, corner radius
+ Knop Alles wissen, hoekradius
Over
- App info
+ App-informatie
Lawnchair opnieuw starten
- Experimental features
+ Experimentele functies
- Font customization
+ Lettertype-aanpassingen
Sommige tekst blijft ongewijzigd
- At a Glance calendar customization
+ At a Glance Kalender-aanpassingen
Weergave van datum in niet-Gregoriaanse kalender toestaan
- Increase maximum grid size limit
- Increase maximum allowed home screen grid size from 10 x 10 to 20 x 20
- Always reload icons
+ Maximale rastergrootte verhogen
+ Het maximaal toegestane startscherm-raster vergroten van 10 × 10 tot 20 × 20
+ Altijd pictogrammen vernieuwen
Gecachte pictogrammen van pictogrampakketten vermijden
- Lock/unlock
- Prevent selected app from closing when pressing \"Clear all\"
+ Vergrendelen/ontgrendelen
+ Voorkom sluiten van geselecteerde app bij \"Alles Wissen\"
- To access shortcuts and additional features, set Lawnchair as your default launcher
- Notification dots
- Show notification counter
- Notification dot color
- Notification counter color
- Warning: Notification dot and counter colors don\'t have enough contrast with each other
- Warning: Notification dot and counter colors might not always have enough contrast with each other
+ Stel Lawnchair in als standaard launcher voor toegang tot snelkoppelingen en extra functies
+ Meldingsstippen
+ Aantal meldingen weergeven
+ Meldingsstip-kleur
+ Aantal meldingen kleur
+ Waarschuwing: Meldingsstip- en aantal-kleuren staan in onvoldoende onderling contrast
+ Waarschuwing: Meldingsstip- en aantal-kleuren staan mogelijk in onvoldoende onderling contrast
Toegang tot meldingen vereist
- To show Notification Dots, turn on app notifications for %1$s
+ Om meldingsstippen te tonen, schakel app-meldingen in voor %1$s
- Icon style
- Icon shape
- Icon size
- Show labels
- Label size
- Use multiple lines
+ Pictogramstijl
+ Pictogramvorm
+ Pictogramgrootte
+ Labels weergeven
+ Labelgrootte
+ Meerdere regels gebruiken
- Transparent themed icons
+ Transparante themapictogrammen
Transparante achtergrond gebruiken bij themapictogrammen
- Auto-adaptive icons
- For all non-adaptive icons
- Background lightness
- Use 100% background lightness for white
- Reset custom icons
+ Automatische adaptieve pictogrammen
+ Voor alle niet-adaptieve pictogrammen
+ Achtergrond helderheid
+ Gebruik 100% achtergrondhelderheid voor wit
+ Aangepaste pictogrammen herstellen
Alle aangepaste pictogrammen worden teruggezet. Wil je doorgaan?
Pictogrammen
Standaardinstellingen herstellen
Externe kiezer openen
- Pick icon from
- Couldn\'t load more icons
+ Pictogram kiezen uit
+ Kan niet meer pictogrammen laden
Systeem
Cirkel
@@ -161,54 +161,54 @@
iOS
Achthoek
One UI
- Rounded square
- Sharp square
+ Afgerond vierkant
+ Scherp vierkant
Vierkant
Vierkantcirkel
Teardrop
- Custom icon shape
- Create custom icon shape
- Edit custom icon shape
- Corner shape
+ Aangepaste pictogramvorm
+ Aangepaste pictogramvorm aanmaken
+ Aangepaste pictogramvorm bewerken
+ Hoekvorm
Rond
Glad
Knip
- Top left
- Top right
- Bottom left
- Bottom right
- Export to clipboard
- Import from clipboard
- Clipboard doesn\'t contain a valid icon shape
+ Linksboven
+ Rechtsboven
+ Linksonder
+ Rechtsonder
+ Exporteren naar klembord
+ Importeren van klembord
+ Klembord bevat geen geldige pictogramvorm
- Icon pack
- Themed icon source
- System icons
- Themed icons
+ Pictogrampakket
+ Bron van themapictogrammen
+ Systeempictogrammen
+ Themapictogrammen
Uitgeschakeld
- Home screen
- Home screen & app drawer
+ Startscherm
+ Startscherm & app-lade
Geen ondersteunde pictogrampakketten
- Add fonts
- OTF and TTF fonts are supported
+ Lettertypen toevoegen
+ OTF- en TTF-lettertypen zijn ondersteund
Lettertype niet gevonden
- Font (experimental)
+ Lettertype (experimenteel)
Algemeen
Koppen
- Headings (medium)
+ Koppen (middelgroot)
Berichttekst
- Body (medium)
+ Berichttekst (middelgroot)
Cursief
Dun
- Extra light
+ Extra licht
Licht
Normaal
Medium
Halfvet
Vet
- Extra bold
+ Extra vet
Zwart
+ Kleurstijl
+ Spritz
+ Tonale Spot
+ Levendig
+ Expressief
+ Regenboog
+ Fruitsalade
+ Inhoud
+ Monochromatisch
Kleuren
- Accent color
+ Accentkleur
+ Lijnkleur
Stalen
RGB
Rood
@@ -235,7 +246,7 @@
Helderheid
Hex
Schuifregelaars
- Invalid color
+ Ongeldige kleur
Opladen
Opgeladen
- Battery low
+ Laag batterijniveau
"%1$d%% — Vol in %2$s"
At a Glance
- What to show
+ Weergeven
Agenda
- Date & time
+ Datum & tijd
Datum
Tijd
- Time format
- Follow system
- 12-hour format
- 24-hour format
+ Tijdnotatie
+ Systeem volgen
+ 12-uurs indeling
+ 24-uurs indeling
Weer
- Battery status
- Nu aan het spelen
+ Batterijstatus
+ Wordt nu afgespeeld
- Tap to set up
- Schakel meldingenstippen in om %1$ste gebruiken.
+ Tik om in te stellen
+ Schakel meldingsstippen in om %1$s te gebruiken.
- Show on home screen
- At a Glance can be manually added to the home screen by placing the Lawnchair widget
+ Weergeven op startscherm
+ At a Glance kan handmatig aan het startscherm worden toegevoegd door de “Lawnchair ” widget te plaatsen
At a Glance provider
Google
@@ -287,9 +298,9 @@
Nieuws
Ondersteuning
Product
- Design & development
+ Ontwerp & ontwikkeling
Ontwikkelaar
- QuickSwitch maintenance
+ QuickSwitch onderhoud
DevOps
Ondersteuning & PR
Dankwoord
@@ -299,14 +310,14 @@
Backup and restore
-->
- Create backup
- What to back up
- Layout and settings
+ Back-up aanmaken
+ Back-uppen
+ Lay-out en instellingen
Achtergrond
Back-up gemaakt
Back-up maken mislukt
- Restore backup
- What to restore
+ Back-up terugzetten
+ Terugzetten
Back-up teruggezet
Back-up herstellen mislukt
Ongeldige back-up bestand
@@ -315,96 +326,101 @@
Gesture settings
-->
- Double tap
- Swipe up
- Swipe down
- Home button
- Back button
- Do nothing
- Slapen
- Open notification panel
- Open app
+ Dubbeltikken
+ Omhoog vegen
+ Omlaag vegen
+ Startknop
+ Terugknop
+ Niets doen
+ Slaapstand
+ Meldingspaneel openen
+ App openen
%1$s openen
- Open app drawer
- Open app search
- Open search
- Pick app
- Admin permissions required
- To use Double-Tap to Sleep, set Lawnchair as a device admin app. Tap \"Open settings\", then tap \"Activate this device admin app.\"
- Dubbeltik om te slapen wordt uitgeschakeld.
- Turn on accessibility service
- To use Double-Tap to Sleep, turn on the Lawnchair accessibility service. Tap \"Open settings\", select \"Lawnchair\" and turn on \"Use Lawnchair.\"
- Open settings
+ App-lade openen
+ App zoeken openen
+ Zoekopdracht openen
+ App kiezen
+ Beheerdersrechten vereist
+ Om Dubbeltikken voor Slaapstand te gebruiken, moet Lawnchair worden ingesteld als een apparaatbeheerder-app. Tik op \"Instellingen openen\" en tik vervolgens op \"Activeer deze apparaatbeheerder-app.\"
+ Dubbeltikken voor Slaapstand wordt uitgeschakeld.
+ Toegankelijkheidsservice inschakelen
+ Om Dubbeltikken voor Slaapstand te gebruiken, moet de Lawnchair toegankelijkheidsdienst worden ingeschakeld. Tik op \"Instellingen openen\", selecteer \"Lawnchair\" en schakel \"Lawnchair gebruiken\" in.
+ Instellingen openen
- Lawnchair bug report
- %1$s crashed
- Upload crash log
+ Lawnchair foutrapportage
+ %1$s is gecrasht
+ Crash-logboek uploaden
Uploaden mislukt
Uploaden…
- Bug reports
- Upload status
- %d new reports
- Multiple new reports
+ Foutrapportages
+ Upload-status
+ %d nieuwe rapportages
+ Meerdere nieuwe rapportages
- Home screen rotation
- Allow home screen rotation when device is rotated
- Add new apps to home screen
- Show feed
+ Startscherm-rotatie
+ Startscherm-rotatie toestaan wanneer het apparaat wordt gedraaid
+ Achtergrond-vervaging inschakelen
+ Intensiteit van vervaging
+ Factor-drempelwaarde
+ Nieuwe apps toevoegen aan startscherm
+ Feed weergeven
Geen feed apps geïnstalleerd
Feed
- Feed provider
- Scroll wallpaper
- Wallpaper depth effect
- Zoom in and out of the wallpaper when transitioning between areas of the launcher
- Top shadow
- Home screen grid
- Lock home screen
- Unlock home screen
- Home screen is locked
+ Feed-aaanbieder
+ Achtergrond schuiven
+ Achtergrond diepte-effect
+ Achtergrond in- en uitzoomen bij de overgang tussen de verschillende schermen
+ Schaduw bovenzijde
+ Startscherm-raster
+ Startscherm vergrendelen
+ Startscherm ontgrendelen
+ Startscherm is vergrendeld
Wijzigingen aan de lay-out van het startscherm voorkomen
Toon stip-paginering
- Gebruik punten in plaats van lijnen om het paginanummer te tonen
- Use new pop-up style
- Use Material You\'s bouncy and slightly consolidated pop-up style
- Pop-up menu
- Show lock button
- Show system settings entry
- Show Edit button
- Status bar
- Show status bar
- Dark status bar
- Text color
+ Gebruik stippen in plaats van lijnen om het paginanummer te tonen
+ Nieuwe pop-upstijl gebruiken
+ Material You\'s stuiterende en enigszins geconsolideerde pop-upstijl gebruiken
+ Pop-upmenu
+ Knop Vergrendelen weergeven
+ Knop Systeeminstellingen weergeven
+ Knop Bewerken weergeven
+ Statusbalk
+ Statusbalk weergeven
+ Donkere statusbalk
+ Tekstkleur
Licht
Donker
- Rounded corners
- Allow overlap
- Enforce widget resizing
+ Afgeronde hoeken
+ Overlapping toestaan
+ Widget-grootte afdwingen
Aanpassen van de grootte toestaan van widgets die beperkt zijn tot een specifieke grootte
- Remove size constraints
- Verwijder de minimale en maximale groottebeperkingen van widgets
+ Beperkingen van grootte verwijderen
+ Beperkingen van min/max grootte van widgets verwijderen
- Show dock
- Search bar
- Search bar widget
+ Dok weergeven
+ Zoekbalk
+ Zoekbalkwidget
Uitgeschakeld
- Google Search bar
+ Google Zoekbalk
+ Ondoorzichtigheid
+ Lijn
Hoek radius
- Apply accent color
- Search provider
- Dock icons
- Bottom padding
+ Accentkleur toepassen
+ Zoekmachine
+ Dokpictogrammen
+ Opvulling aan onderkant
- App search
- %1$s and Lawnchair have a revenue share agreement.\n\nSearching with %1$s helps support Lawnchair.
+ App zoeken
+ %1$s & Lawnchair heeft een overeenkomst a.g. het delen van inkomsten.\n\nZoeken met %1$s helpt Lawnchair te ondersteunen.
App
Website
App vereist
@@ -413,43 +429,43 @@
Google Lens
Spraak Zoeken
- Hidden apps
- Load apps in bulk
- Load and display icons in bulk instead of individually
- Remember position
+ Verborgen apps
+ Apps in bulk laden
+ Laad en toon pictogrammen in bulk in plaats van afzonderlijk
+ Positie onthouden
De positie van de app-lade onthouden
- Show scrollbar
- App drawer columns
- Row height
- Horizontal padding
+ Scrollbalk weergeven
+ App-lade kolommen
+ Rijhoogte
+ Horizontale tussenruimte
- Hide from app drawer
- Hidden apps (%1$d)
+ Verbergen in app-lade
+ Verborgen apps (%1$d)
- %1$d app
- %1$d apps
- Icon background opacity
- Icon background color
- Maximum folder columns
- Maximum folder rows
+ Pictogram achtergronddekking
+ Pictogram achtergrondkleur
+ Maximum aantal mapkolommen
+ Maximum aantal maprijen
- These settings will be ignored as Lawnchair isn\'t set as the Recents provider
- Incompatible system integration
- Your device is configured to have system gestures (known as Quickstep) provided by %1$s, but this version of %1$s isn\'t compatible with your Android version. To continue using your device, please uninstall %1$s updates or disable %1$s as a system gesture provider.
- Translucent background
- Background opacity
- Quick actions
+ Deze instellingen worden genegeerd, omdat Lawnchair niet is ingesteld als de aanbieder van Recente apps
+ Incompatibele systeemintegratie
+ Je toestel is geconfigureerd voor systeemgebaren (bekend als Quickstep) geleverd door %1$s, maar deze versie van %1$s is niet compatibel met deze Android-versie. Om het toestel te blijven gebruiken, dien je %1$s updates te verwijderen of %1$s uit te schakelen als een provider van systeemgebaren.
+ Doorschijnende achtergrond
+ Achtergronddekking
+ Snelle acties
Delen
Lens
- Clear all
+ Alles wissen
Geforceerd sluiten
- Screen corner radius
- Custom screen corner radius
- When you swipe up to open Recents, the current app follows your finger, shrinking into a card. Use this slider to adjust the corner radius of the card when it\'s nearly full screen so it matches the corners of your screen.
+ Schermhoekradius
+ Aangepaste schermhoekradius
+ Als je omhoog veegt om de recente apps te openen volgt de huidige app je vinger, deze vormt zich in een kaart. Gebruik deze schuifregelaar om de hoek radius van de kaart aan te passen wanneer het bijna volledig scherm is, zodat het overeenkomt met de hoeken van uw scherm.
Taakbalk
- Show taskbar (experimental)
+ Taakbalk weergeven (experimenteel)
Zoeken
Apps zoeken
- No apps found matching \"%1$s\"
+ Geen apps gevonden die overeenkomen met \"%1$s\"
Van het web
- Contacts from device
- Files from device
- Settings from device
- Search for more apps
- Zoeken met Startpagina
- No app store or browser installed
- Clear search history
- Clear search box
+ Contacten van apparaat
+ Bestanden van apparaat
+ Instellingen van apparaat
+ Meer apps zoeken
+ Zoeken op %1$s
+ Geen appwikel of browser geïnstalleerd
+ Zoekgeschiedenis wissen
+ Zoekveld wissen
Zoeken
- Show search bar
+ Zoekbalk weergeven
Toetsenbord automatisch weergeven
- Fuzzy search
- Approximate matching for app searches
+ Vage zoekopdracht
+ Geschatte overeenkomst voor app zoeken
Suggesties
- Show suggested apps at the top of the drawer
- Device search
- Search your phone contacts, files, and settings
- Show hidden apps in search results
- If full name is typed
- Search algorithm
+ Voorgestelde apps bovenaan de app-lade weergeven
+ Zoeken op apparaat
+ Zoeken in de contacten, bestanden en instellingen van je telefoon
+ Verborgen apps in zoekresultaten weergeven
+ Als volledige naam wordt getypt
+ Zoekalgoritme
Apps Doorzoeken
- Global search (on-device)
- Global search (via ASI)
+ Algemeen zoeken (op apparaat)
+ Algemeen zoeken (via ASI)
- Show in search results
+ Weergeven in zoekresultaten
Apps & Sneltoetsen
- App shortcuts
+ App-snelkoppelingen
Personen
Pixel tips
- Android settings
+ Android-instellingen
Bestanden
- Web-suggesties
- Search history
+ Websuggesties
+ Zoekgeschiedenis
Rekenmachine
Media, bestanden en meer
Contacten en meer
- Via Startpage
+ Via %1$s
- Maximum number of apps in search results
- Maximum number of people in search results
- Maximum number of files in search results
- Maximum number of settings entries in search results
- Maximum number of history entries in search results
- Maximum number of suggestions in search results
- Maximum web suggestion delay
+ Maximum aantal apps in zoekresultaten
+ Maximaal aantal personen in zoekresultaten
+ Maximum aantal bestanden in zoekresultaten
+ Maximum aantal instellingen in zoekresultaten
+ Maximum aantal geschiedenisvermeldingen in zoekresultaten
+ Maximum aantal suggesties in zoekresultaten
+ Maximale vertraging bij websuggestie
- To search for contacts, grant contacts and phone permissions to Lawnchair
- To search your files, grant storage permissions to Lawnchair
- Grant permissions
+ Om naar contacten te zoeken, moet Lawnchair toegang krijgen tot contacten en telefoon
+ Om bestanden te doorzoeken, moet Lawnchair toegang krijgen tot opslag
+ Machtigingen verlenen
+ Lawnchair (samenstelling)
+ Websuggestie-aanbieder
+ Pictogram van aanbieder van websuggesties in zoekbalk weergeven
+ Stijl van de zoekbalk in het dok
diff --git a/lawnchair/res/values-no-rNO/strings.xml b/lawnchair/res/values-no-rNO/strings.xml
index f8c834badb8..2eda6b38981 100644
--- a/lawnchair/res/values-no-rNO/strings.xml
+++ b/lawnchair/res/values-no-rNO/strings.xml
@@ -221,9 +221,20 @@
Mørkt
System
Match wallpaper
+
+ Color style
+ Spritz
+ Tonal Spot
+ Vibrant
+ Expressive
+ Rainbow
+ Fruit Salad
+ Content
+ Monochromatic
Colors
Accent color
+ Stroke color
Swatches
RGB
Red
@@ -357,6 +368,9 @@
Home screen rotation
Allow home screen rotation when device is rotated
+ Enable wallpaper blur
+ Blur intensity
+ Factor threshold
Add new apps to home screen
Show feed
No feed apps installed
@@ -397,6 +411,8 @@
Search bar widget
Disabled
Google Search bar
+ Opacity
+ Stroke
Corner radius
Apply accent color
Search provider
@@ -464,7 +480,7 @@
Files from device
Settings from device
Search for more apps
- Search on Startpage
+ Search on %1$s
No app store or browser installed
Clear search history
Clear search box
@@ -498,7 +514,7 @@
Media, files, and more
Contacts and more
- Via Startpage
+ Via %1$s
Maximum number of apps in search results
Maximum number of people in search results
@@ -511,4 +527,8 @@
To search for contacts, grant contacts and phone permissions to Lawnchair
To search your files, grant storage permissions to Lawnchair
Grant permissions
+ Lawnchair (compose)
+ Web suggestion provider
+ Show web suggestion provider icon in search bar
+ Match dock search bar style
diff --git a/lawnchair/res/values-pl-rPL/strings.xml b/lawnchair/res/values-pl-rPL/strings.xml
index 6b55def89f8..5d5b7f65ebe 100644
--- a/lawnchair/res/values-pl-rPL/strings.xml
+++ b/lawnchair/res/values-pl-rPL/strings.xml
@@ -221,9 +221,20 @@
Ciemny
System
Match wallpaper
+
+ Color style
+ Spritz
+ Tonal Spot
+ Vibrant
+ Expressive
+ Rainbow
+ Fruit Salad
+ Content
+ Monochromatic
Kolory
Accent color
+ Stroke color
Paleta kolorów
RGB
Czerwony
@@ -357,6 +368,9 @@
Home screen rotation
Allow home screen rotation when device is rotated
+ Enable wallpaper blur
+ Blur intensity
+ Factor threshold
Add new apps to home screen
Show feed
Aplikacja aktualności \"Feed\" niezainstalowana
@@ -397,6 +411,8 @@
Search bar widget
Wyłączono
Google Search bar
+ Opacity
+ Stroke
Promień narożnika
Apply accent color
Search provider
@@ -466,7 +482,7 @@
Files from device
Settings from device
Search for more apps
- Szukaj na Startpage
+ Search on %1$s
No app store or browser installed
Clear search history
Clear search box
@@ -500,7 +516,7 @@
Multimedia, pliki i inne
Kontakty i inne
- Poprzez Startpage
+ Via %1$s
Maximum number of apps in search results
Maximum number of people in search results
@@ -513,4 +529,8 @@
To search for contacts, grant contacts and phone permissions to Lawnchair
To search your files, grant storage permissions to Lawnchair
Grant permissions
+ Lawnchair (compose)
+ Web suggestion provider
+ Show web suggestion provider icon in search bar
+ Match dock search bar style
diff --git a/lawnchair/res/values-pt-rBR/strings.xml b/lawnchair/res/values-pt-rBR/strings.xml
index 26b24a1b259..5310d462b7c 100644
--- a/lawnchair/res/values-pt-rBR/strings.xml
+++ b/lawnchair/res/values-pt-rBR/strings.xml
@@ -23,7 +23,7 @@
-->
Pré-visualização
Criar
- Backup
+ Fazer backup
Restaurar
Apagar
Redefinir
@@ -34,16 +34,16 @@
Sempre
Nunca
Área de transferência
- Copy link
+ Copiar link
Copiar
Colar
Carregando…
Gerenciado por Lawnchair
Preferências
- Home settings
- System settings
- Change settings
+ Configurações da tela de início
+ Configurações do sistema
+ Alterar configurações
Papel de Parede
- Background opacity
+ Opacidade do fundo
- Copied to clipboard
+ Copiado para a área de transferência
Item removido
- What to show
+ O que mostrar
- To lock your phone when performing a gesture, Lawnchair requires accessibility access.\n\nLawnchair doesn\'t watch any user action, though the privilege to do so is required for all accessibility services. Lawnchair discards any event sent by the system.\n\nIn order to lock your phone, Lawnchair uses the performGlobalAction Accessibility service.
+ Para bloquear seu celular ao executar um gesto, O Lawnchair precisa do acesso à acessibilidade.\n\nO Lawnchair não observa qualquer ação do usuário, porém esta permissão é necessária para todos os serviços de acessibilidade. O Lawnchair descarta qualquer evento enviado pelo sistema.\n\nPara bloquear seu dispositivo, o Lawnchair usa o serviço de acessibilidade \"performGlobalAction\".
%1$d x %2$d
%s & %s
Configurações
Geral
- Colors, icon packs, notification dots
- Home screen
- Feed, grid, icons
+ Cores, pacotes de ícones, pontos de notificação
+ Tela de início
+ Feed, grade, ícones
Dock
- Search bar, icon count
- App drawer
- Hidden apps, column count, icons
- Drawer search
- Web suggestions, global search
+ Barra de pesquisa, contagem de ícones
+ Gaveta de apps
+ Apps escondidos, contagem de colunas, ícones
+ Pesquisa da gaveta
+ Sugestões da web, pesquisa global
Pastas
- Row and column count
+ Contagem de linhas e colunas
Gestos
- Taps and swipes
+ Toques e deslizamentos
Recentes
- Clear All button, corner radius
+ Botão \"Limpar Tudo\", raio de canto
Sobre
- App info
+ Informações do app
Reiniciar o Lawnchair
- Experimental features
+ Recursos experimentais
- Font customization
+ Customização de fonte
Algum texto continua inalterado
- At a Glance calendar customization
- Permitir a visualização de data nos sistemas de calendário não-Gregorianos
- Increase maximum grid size limit
- Increase maximum allowed home screen grid size from 10 x 10 to 20 x 20
- Always reload icons
+ Personalização do calendário do Resumo
+ Permitir a exibição de datas em sistemas de calendário não-Gregorianos
+ Aumentar o limite de tamanho máximo da grade
+ Aumentar o tamanho máximo permitido da grade de 10 x 10 para 20 x 20
+ Sempre recarregar ícones
Evite usar ícones guardados no cache dos pacotes de ícones
- Lock/unlock
- Prevent selected app from closing when pressing \"Clear all\"
+ Bloquear/desbloquear
+ Prevenir app selecionado de fechar ao clicar em \"Limpar tudo\"
- To access shortcuts and additional features, set Lawnchair as your default launcher
- Notification dots
- Show notification counter
- Notification dot color
- Notification counter color
- Warning: Notification dot and counter colors don\'t have enough contrast with each other
- Warning: Notification dot and counter colors might not always have enough contrast with each other
+ Para acessar atalhos e recursos adicionais, configure o Lawnchair como sua launcher padrão
+ Pontos de notificação
+ Mostrar contador de notificação
+ Cor do ponto de notificação
+ Cor do contador de notificação
+ Aviso: As cores do ponto de notificação e do contador não tem contraste suficiente entre elas
+ Aviso: As cores do ponto de notificação e do contador podem não ter sempre contraste suficiente entre elas
O acesso às notificações é necessário
- To show Notification Dots, turn on app notifications for %1$s
+ Para mostrar Pontos de Notificação, ative as notificações para o app %1$s
- Icon style
- Icon shape
- Icon size
- Show labels
- Label size
- Use multiple lines
+ Estilo do ícone
+ Formato do ícone
+ Tamanho do ícone
+ Mostrar etiquetas
+ Tamanho da etiqueta
+ Usar múltiplas linhas
- Transparent themed icons
+ Ícones transparentes tematizados
Usar fundo transparente nos ícones temáticos
- Auto-adaptive icons
- For all non-adaptive icons
- Background lightness
- Use 100% background lightness for white
- Reset custom icons
+ Ícones adaptativos automáticos
+ Para todos os ícones não-adaptativos
+ Luminosidade do fundo
+ Use 100% de luz de fundo para fundo branco
+ Resetar ícones customizados
Todos os ícones personalizados serão redefinidos. Você quer continuar?
Ícones
Restaurar ao padrão
Abrir seletor externo
- Pick icon from
- Couldn\'t load more icons
+ Escolher ícone de
+ Não foi possível carregar mais ícones
Sistema
Círculo
@@ -161,54 +161,54 @@
iOS
Octógono
Interface do Usuário
- Rounded square
- Sharp square
+ Quadrado Arredondado
+ Quadrado Afiado
Quadrado
Quadrado arredondado
Lágrima
- Custom icon shape
- Create custom icon shape
- Edit custom icon shape
- Corner shape
+ Formato de Ícone Personalizado
+ Formato de Ícone Personalizado
+ Editar formato dos ícones personalizados
+ Formato dos Cantos
Arredondado
Suave
Recorte
- Top left
- Top right
- Bottom left
- Bottom right
- Export to clipboard
- Import from clipboard
- Clipboard doesn\'t contain a valid icon shape
+ Canto superior esquerdo
+ Canto superior direito
+ Canto inferior esquerdo
+ Canto inferior direito
+ Copiar para Área de transferência
+ Importar da área de transferência
+ Área de transferência não contém uma forma de ícone válida
- Icon pack
- Themed icon source
- System icons
- Themed icons
+ Pacotes de ícones
+ Fonte dos Ícones Temáticos
+ Ícones do Sistema
+ Ícones Temáticos
Desligado
- Home screen
- Home screen & app drawer
+ Tela de início
+ Tela Inicial e Gaveta de Aplicativos
Não há pacotes de ícones suportados
- Add fonts
- OTF and TTF fonts are supported
+ Adicionar Fontes
+ Fontes OTF e TTF são suportadas
Fonte não encontrada
- Font (experimental)
+ Fonte (Experimental)
Geral
Títulos
- Headings (medium)
+ Títulos (Médio)
Corpo
- Body (medium)
+ Corpo (Médio)
Itálico
Fino
- Extra light
+ Fonte extra fina
Claro
Normal
Médio
Semi Negrito
Negrito
- Extra bold
+ Extra Negrito
Preto
+ Estilo de cor
+ Spritz
+ Ponto de Tonal
+ Vibrante
+ Expressivo
+ Arco-íris
+ Salada de frutas
+ Conteúdo
+ Monocromático
Cores
- Accent color
+ Cor de Destaque
+ Stroke color
Amostras
RGB
Vermelho
@@ -235,7 +246,7 @@
Brilho
Hex
Deslizantes
- Invalid color
+ Cor Inválida
Carregando
Carregado
- Battery low
+ Bateria Fraca
"%1$d%% — Termina em %2$s"
Resumo
- What to show
+ O que mostrar
Calendário
- Date & time
+ Data & hora
Data
Horário
- Time format
- Follow system
- 12-hour format
- 24-hour format
+ Formato da Hora
+ Seguir o Sistema
+ formato de 12 Horas
+ formato de 24 Horas
Clima
- Battery status
+ Estado da bateria
Tocando Agora
- Tap to set up
+ Toque para configurar
Para usar %1$s, habilite os Pontos de Notificação.
- Show on home screen
- At a Glance can be manually added to the home screen by placing the Lawnchair widget
+ Mostrar na tela inicial
+ O widget Resumo pode ser adicionado manualmente à tela inicial ao colocar o widget do Lawnchair
- At a Glance provider
+ Provedor de Resumo
Google
Pesquisa do Google
@@ -287,9 +298,9 @@
Novidades
Suporte
Produto
- Design & development
+ Design & desenvolvimento
Desenvolvimento
- QuickSwitch maintenance
+ Manutenção do QuickSwitch
DevOps
Suporte e RP
Agradecimentos
@@ -299,112 +310,117 @@
Backup and restore
-->
- Create backup
- What to back up
- Layout and settings
+ Criar backup
+ O que fazer backup
+ Layout e configurações
Papel de Parede
- Backup created
- Failed to create backup
- Restore backup
- What to restore
- Backup restored
- Failed to restore backup
- Invalid backup file
+ Backup criado
+ Falha ao criar o backup
+ Restaurar backup
+ O que restaurar
+ Backup restaurado
+ Falha ao restaurar o backup
+ Arquivo de backup inválido
- Double tap
- Swipe up
- Swipe down
- Home button
- Back button
- Do nothing
+ Dois toques
+ Deslizar para cima
+ Deslizar para baixo
+ Botão de início
+ Botão voltar
+ Não fazer nada
Desligar a Tela
- Open notification panel
- Open app
+ Abrir painel de notificações
+ Abrir aplicativo
Abrir %1$s
- Open app drawer
- Open app search
- Open search
- Pick app
- Admin permissions required
- To use Double-Tap to Sleep, set Lawnchair as a device admin app. Tap \"Open settings\", then tap \"Activate this device admin app.\"
+ Abrir gaveta de aplicativos
+ Abrir busca de aplicativos
+ Abrir busca
+ Escolher aplicativo
+ Permissões de administrador necessárias
+ Para usar o duplo clique para dormir, defina o Lawnchair como um aplicativo de administrador do dispositivo. Toque em \"Abrir configurações\" e depois em \"Ativar o aplicativo de administrador do dispositivo.\"
Double Tap to Sleep will be disabled.
- Turn on accessibility service
- To use Double-Tap to Sleep, turn on the Lawnchair accessibility service. Tap \"Open settings\", select \"Lawnchair\" and turn on \"Use Lawnchair.\"
- Open settings
+ Ativar serviço de acessibilidade
+ Para usar o Toque Duplo para Bloquear, ative o serviço de acessibilidade do Lawnchair. Toque em Abrir Configurações, depois selecione Lawnchair e ative Usar Lawnchair.\"
+ Abrir as configurações
- Lawnchair bug report
- %1$s crashed
- Upload crash log
+ Relatório de bugs do Lawnchair
+ %1$s crashou
+ Enviar registro de erro
Falha no envio
Enviando…
- Bug reports
- Upload status
- %d new reports
- Multiple new reports
+ Relatório de bugs
+ Status do upload
+ %d novos relatórios
+ Vários novos relatórios
- Home screen rotation
- Allow home screen rotation when device is rotated
- Add new apps to home screen
- Show feed
+ Rotação da tela inicial
+ Permitir a rotação da tela inicial quando o dispositivo for girado
+ Enable wallpaper blur
+ Blur intensity
+ Factor threshold
+ Adicionar novos aplicativos à tela inicial
+ Mostrar o feed
Nenhum aplicativo de feed instalado
Feed
- Feed provider
- Scroll wallpaper
- Wallpaper depth effect
- Zoom in and out of the wallpaper when transitioning between areas of the launcher
- Top shadow
- Home screen grid
- Lock home screen
- Unlock home screen
- Home screen is locked
+ Provedor de Feed
+ Papel de Parede Deslizante
+ Efeito de Profundidade do Plano de Fundo
+ Aumentar e diminuir a ampliação do papel de parede ao transitar entre as áreas do inicializador
+ Sombra superior
+ Grade da tela inicial
+ Bloquear a tela inicial
+ Desbloquear a tela inicial
+ A tela inicial está bloqueada
Impedir mudanças no layout da tela inicial
Exibir paginação de pontos
Usar pontos em vez de linhas para mostrar o número da página
- Use new pop-up style
- Use Material You\'s bouncy and slightly consolidated pop-up style
- Pop-up menu
- Show lock button
- Show system settings entry
- Show Edit button
- Status bar
- Show status bar
- Dark status bar
- Text color
+ Usar novo estilo de pop-up
+ Usar o estilo de pop-up animado e ligeiramente consolidado do Material You
+ Menu flutuante
+ Mostrar o botão de bloqueio
+ Mostrar entrada para as configurações do sistema
+ Exibir botão Editar
+ Barra de status
+ Mostrar barra de status
+ Barra de status escura
+ Cor do texto
Claro
Escuro
- Rounded corners
- Allow overlap
- Enforce widget resizing
+ Cantos arredondados
+ Permitir a sobreposição
+ Forçar o redimensionamento de widgets
Permitir redimensionamento de widgets que são restritos a um tamanho específico
- Remove size constraints
+ Remover restrições de tamanho
Remover as restrições de tamanho mínimo e máximo de widgets
- Show dock
- Search bar
- Search bar widget
+ Mostrar dock
+ Barra de pesquisa
+ Widget da barra de pesquisa
Desativado
- Google Search bar
+ Barra de Pesquisa do Google
+ Opacity
+ Stroke
Raio do canto
- Apply accent color
- Search provider
- Dock icons
- Bottom padding
+ Aplicar cor de destaque
+ Provedor de pesquisa
+ Ícones do dock
+ Preenchimento inferior
- App search
- %1$s and Lawnchair have a revenue share agreement.\n\nSearching with %1$s helps support Lawnchair.
+ Pesquisa de aplicativos
+ %1$s e Lawnchair têm um acordo de participação na receita.\n\nPesquisar usando %1$s ajuda a apoiar o Lawnchair.
Aplicativo
Site da Internet
Aplicativo necessário
@@ -413,43 +429,43 @@
Google Lens
Pesquisa por Voz
- Hidden apps
- Load apps in bulk
- Load and display icons in bulk instead of individually
- Remember position
+ Aplicativos ocultos
+ Carregar aplicativos em massa
+ Carregar e exibir ícones em massa ao invés de individualmente
+ Lembrar a posição
Memorizar a posição da gaveta de aplicativos após sair da gaveta
- Show scrollbar
- App drawer columns
- Row height
- Horizontal padding
+ Mostrar barra de rolagem
+ Colunas da gaveta de aplicativos
+ Altura da linha
+ Preenchimento horizontal
- Hide from app drawer
- Hidden apps (%1$d)
+ Esconder da gaveta de aplicativos
+ Aplicativos ocultos (%1$d)
- - %1$d app
- - %1$d apps
+ - %1$d aplicativo
+ - %1$d aplicativos
- Icon background opacity
- Icon background color
- Maximum folder columns
- Maximum folder rows
+ Opacidade do fundo dos ícones
+ Cor de fundo do ícone
+ Máximo de colunas nas pastas
+ Máximo de linhas nas pastas
- These settings will be ignored as Lawnchair isn\'t set as the Recents provider
- Incompatible system integration
- Your device is configured to have system gestures (known as Quickstep) provided by %1$s, but this version of %1$s isn\'t compatible with your Android version. To continue using your device, please uninstall %1$s updates or disable %1$s as a system gesture provider.
- Translucent background
- Background opacity
- Quick actions
+ Estas configurações serão ignoradas, já que o Lawnchair não está definido como o provedor de recentes
+ Integração de sistema incompatível
+ Seu dispositivo está configurado para ter gestos do sistema (conhecido como Quickstep) fornecidos por %1$s, mas esta versão do %1$s não é compatível com sua versão do Android. Para continuar usando o seu dispositivo, desinstale as atualizações %1$s ou desative %1$s como provedor de gestos do sistema.
+ Fundo translúcido
+ Opacidade do fundo
+ Ações rápidas
Compartilhar
Lens
- Clear all
+ Limpar tudo
Forçar fechamento
- Screen corner radius
- Custom screen corner radius
- When you swipe up to open Recents, the current app follows your finger, shrinking into a card. Use this slider to adjust the corner radius of the card when it\'s nearly full screen so it matches the corners of your screen.
+ Raio do canto da tela
+ Raio do canto de tela personalizado
+ Ao deslizar para cima para abrir os aplicativos recentes, o aplicativo atual segue o seu dedo, diminuindo em um cartão. Utilize este controle deslizante para ajustar o raio de curvatura do cartão quando este estiver quase em tela cheia, de modo que ele corresponda aos cantos da sua tela.
Barra de Tarefas
- Show taskbar (experimental)
+ Mostrar barra de tarefas (experimental)
Pesquisar
Pesquisar aplicativos
- No apps found matching \"%1$s\"
+ Nenhum aplicativo encontrado que corresponda a \"%1$s
Da web
- Contacts from device
- Files from device
- Settings from device
- Search for more apps
- Pesquisar na Página Inicial
- No app store or browser installed
- Clear search history
- Clear search box
+ Contatos do dispositivo
+ Arquivos do dispositivo
+ Configurações do dispositivo
+ Pesquisar por mais aplicativos
+ Pesquisar em %1$s
+ Nenhuma loja de aplicativos ou navegador instalado
+ Limpar histórico de pesquisas
+ Limpar caixa de pesquisa
Pesquisar
- Show search bar
- Automatically show keyboard
- Fuzzy search
- Approximate matching for app searches
+ Mostrar barra de pesquisa
+ Mostrar o teclado automaticamente
+ Pesquisa aproximada
+ Correspondência aproximada para pesquisas de apps
Sugestões
- Show suggested apps at the top of the drawer
- Device search
- Search your phone contacts, files, and settings
- Show hidden apps in search results
- If full name is typed
- Search algorithm
+ Mostrar aplicativos sugeridos na parte superior da gaveta de aplicativos
+ Pesquisa no dispositivo
+ Procurar nos contatos, arquivos e configurações do seu telefone
+ Mostrar aplicativos ocultos nos resultados da pesquisa
+ Se o nome completo for digitado
+ Algoritmo de pesquisa
Pesquisa de aplicativos
- Global search (on-device)
- Global search (via ASI)
+ Pesquisa global (no dispositivo)
+ Pesquisa global (via ASI)
- Show in search results
+ Mostrar nos resultados da pesquisa
Apps & Atalhos
- App shortcuts
+ Atalhos de aplicativos
Pessoas
- Pixel tips
- Android settings
+ Dicas do Pixel
+ Configurações do Android
Arquivos
Sugestões da Web
- Search history
+ Histórico de pesquisas
Calculadora
Mídia, arquivos e mais
Contatos e mais
- Via Startpage
+ Via %1$s
- Maximum number of apps in search results
- Maximum number of people in search results
- Maximum number of files in search results
- Maximum number of settings entries in search results
- Maximum number of history entries in search results
- Maximum number of suggestions in search results
- Maximum web suggestion delay
+ Número máximo de aplicativos nos resultados da pesquisa
+ Número máximo de contatos nos resultados de busca
+ Número máximo de arquivos nos resultados da pesquisa
+ Número máximo de entradas de configurações nos resultados da pesquisa
+ Número máximo de entradas de histórico nos resultados de pesquisa
+ Número máximo de sugestões nos resultados da pesquisa
+ Atraso máximo de sugestões da Web
- To search for contacts, grant contacts and phone permissions to Lawnchair
- To search your files, grant storage permissions to Lawnchair
- Grant permissions
+ Para pesquisar por contatos, permita as permissões de Contatos e Telefone ao Lawnchair
+ Para pesquisar nos seus arquivos, permita a permissão de Armazenamento ao Lawnchair
+ Permitir permissões
+ Lawnchair (composto)
+ Provedor de sugestões da web
+ Mostrar o ícone do provedor de sugestões da web na barra de pesquisa
+ Combinar com o estilo da barra de pesquisa do dock
diff --git a/lawnchair/res/values-pt-rPT/strings.xml b/lawnchair/res/values-pt-rPT/strings.xml
index 8af1cec6bcc..6b0449b71ea 100644
--- a/lawnchair/res/values-pt-rPT/strings.xml
+++ b/lawnchair/res/values-pt-rPT/strings.xml
@@ -221,9 +221,20 @@
Escuro
Sistema
Match wallpaper
+
+ Color style
+ Spritz
+ Tonal Spot
+ Vibrant
+ Expressive
+ Rainbow
+ Fruit Salad
+ Content
+ Monochromatic
Cores
Accent color
+ Stroke color
Amostras
RGB
Vermelho
@@ -357,6 +368,9 @@
Home screen rotation
Allow home screen rotation when device is rotated
+ Enable wallpaper blur
+ Blur intensity
+ Factor threshold
Add new apps to home screen
Show feed
Sem aplicações de feed instaladas
@@ -397,6 +411,8 @@
Search bar widget
Desativado
Google Search bar
+ Opacity
+ Stroke
Raio dos cantos
Apply accent color
Search provider
@@ -464,7 +480,7 @@
Files from device
Settings from device
Search for more apps
- Pesquisar em Startpage
+ Search on %1$s
No app store or browser installed
Clear search history
Clear search box
@@ -498,7 +514,7 @@
Mídia, ficheiros e mais
Contactos e mais
- Via Startpage
+ Via %1$s
Maximum number of apps in search results
Maximum number of people in search results
@@ -511,4 +527,8 @@
To search for contacts, grant contacts and phone permissions to Lawnchair
To search your files, grant storage permissions to Lawnchair
Grant permissions
+ Lawnchair (compose)
+ Web suggestion provider
+ Show web suggestion provider icon in search bar
+ Match dock search bar style
diff --git a/lawnchair/res/values-ro-rRO/strings.xml b/lawnchair/res/values-ro-rRO/strings.xml
index 60deadccf2d..b17f4e8de0d 100644
--- a/lawnchair/res/values-ro-rRO/strings.xml
+++ b/lawnchair/res/values-ro-rRO/strings.xml
@@ -221,9 +221,20 @@
Întunecată
Sistem
Match wallpaper
+
+ Color style
+ Spritz
+ Tonal Spot
+ Vibrant
+ Expressive
+ Rainbow
+ Fruit Salad
+ Content
+ Monochromatic
Culori
Accent color
+ Stroke color
Eșantioane
RVA
Roșu
@@ -357,6 +368,9 @@
Home screen rotation
Allow home screen rotation when device is rotated
+ Enable wallpaper blur
+ Blur intensity
+ Factor threshold
Add new apps to home screen
Show feed
No feed apps installed
@@ -397,6 +411,8 @@
Search bar widget
Dezactivat
Google Search bar
+ Opacity
+ Stroke
Raza colțurilor
Apply accent color
Search provider
@@ -465,7 +481,7 @@
Files from device
Settings from device
Search for more apps
- Search on Startpage
+ Search on %1$s
No app store or browser installed
Clear search history
Clear search box
@@ -499,7 +515,7 @@
Media, files, and more
Contacts and more
- Via Startpage
+ Via %1$s
Maximum number of apps in search results
Maximum number of people in search results
@@ -512,4 +528,8 @@
To search for contacts, grant contacts and phone permissions to Lawnchair
To search your files, grant storage permissions to Lawnchair
Grant permissions
+ Lawnchair (compose)
+ Web suggestion provider
+ Show web suggestion provider icon in search bar
+ Match dock search bar style
diff --git a/lawnchair/res/values-ru-rRU/strings.xml b/lawnchair/res/values-ru-rRU/strings.xml
index 82991148a27..b45a18624cc 100644
--- a/lawnchair/res/values-ru-rRU/strings.xml
+++ b/lawnchair/res/values-ru-rRU/strings.xml
@@ -23,7 +23,7 @@
-->
Предпросмотр
Создать
- Backup
+ Резерв. копирование
Восстановить
Удалить
Сбросить
@@ -34,45 +34,45 @@
Всегда
Никогда
Буфер обмена
- Copy link
+ Копировать ссылку
Копировать
Вставить
Загрузка…
Управляется Lawnchair
Настройки
- Home settings
- System settings
- Change settings
+ Настр. глав. экрана
+ Системные настройки
+ Изменить настройки
- Динамический
- Пресеты
- Пользовательский
+ Изменять динамически
+ Предустановки
+ Пользоват. настройки
По умолчанию
- Система
+ На основе системы
Столбцы
Строки
- Название
+ Подпись
Иконки
Сетка
Макет
- Обои
- Background opacity
+ На основе обоев
+ Прозрачность фона
- Copied to clipboard
+ Скопировано в буфер обмена
Элемент удален
- What to show
+ Что показывать
- To lock your phone when performing a gesture, Lawnchair requires accessibility access.\n\nLawnchair doesn\'t watch any user action, though the privilege to do so is required for all accessibility services. Lawnchair discards any event sent by the system.\n\nIn order to lock your phone, Lawnchair uses the performGlobalAction Accessibility service.
- %1$d x %2$d
+ Чтобы заблокировать телефон с помощью жеста, Lawnchair требуется доступ к специальным возможностям.\n\nLawnchair не отслеживает никакие действия пользователя, хотя это требуется для всех служб специальных возможностей. Lawnchair отбрасывает любые события, отправленные системой.\n\nЧтобы заблокировать ваш телефон, Lawnchair использует службу специальных возможностей PerformGlobalAction.
+ %1$d × %2$d
%s & %s
Настройки
Общие
- Colors, icon packs, notification dots
- Home screen
- Feed, grid, icons
+ Цвета, Наборы иконок, Точки уведомлений
+ Главный экран
+ Лента, сетка, иконки
Док-панель
- Search bar, icon count
- App drawer
- Hidden apps, column count, icons
- Drawer search
- Web suggestions, global search
+ Строка поиска, число иконок
+ Меню приложений
+ Скрытые приложения, число столбцов, иконки
+ Поиск в меню
+ Веб-подсказки, глобальный поиск
Папки
- Row and column count
+ Кол-во строк и столбцов
Жесты
- Taps and swipes
+ Касания и свайпы
Недавние
- Clear All button, corner radius
+ Кнопка \"Очистить всё\", радиус углов
О программе
- App info
+ О приложении
Перезапустить Lawnchair
- Experimental features
+ Эксперимент. функции
- Font customization
+ Настройка шрифта
Некоторый текст останется без изменений
- At a Glance calendar customization
- Разрешить отображение даты в не грегорианских календарных системах
- Increase maximum grid size limit
- Increase maximum allowed home screen grid size from 10 x 10 to 20 x 20
- Always reload icons
+ Настройки календаря секции \"Самое главное\"
+ Разрешить отображение даты календаря не-грегорианского типа
+ Увеличить макс. размер сетки
+ Увеличить макс. допустимый размер сетки глав. экрана с 10х10 на 20x20
+ Всегда перезагружать иконки
Избегать использования кэшированных иконок из наборов иконок
- Lock/unlock
- Prevent selected app from closing when pressing \"Clear all\"
+ Блокировка/Разблокировка
+ Запретить закрытие выбранного приложения при нажатии кнопки \"Очистить всё\"
- To access shortcuts and additional features, set Lawnchair as your default launcher
- Notification dots
- Show notification counter
- Notification dot color
- Notification counter color
- Warning: Notification dot and counter colors don\'t have enough contrast with each other
- Warning: Notification dot and counter colors might not always have enough contrast with each other
+ Для доступа к ярлыкам и дополнительным функциям, установите Lawnchair в качестве лаунчера по умолчанию
+ Отображать Точки уведомлений
+ Отображать счетчик уведомлений
+ Цвет Точек уведомлений
+ Цвет счетчика уведомлений
+ Внимание: Цвета Точек уведомлений и счетчика уведомлений недостаточно контрастируют друг с другом
+ Внимание: Цвета Точек уведомлений и счетчика не всегда могут быть достаточно контрастны друг с другом
Необходимо разрешение доступа к уведомлениям
- To show Notification Dots, turn on app notifications for %1$s
+ Для отображения Точек уведомлений, включите уведомления приложения для %1$s
- Icon style
- Icon shape
- Icon size
- Show labels
- Label size
- Use multiple lines
+ Стиль иконок
+ Форма иконок
+ Размер иконок
+ Показывать подписи
+ Размер подписи
+ Использовать несколько строк
- Transparent themed icons
+ Прозрачные тематические иконки
Использовать прозрачный фон на тематических значках
- Auto-adaptive icons
- For all non-adaptive icons
- Background lightness
- Use 100% background lightness for white
- Reset custom icons
- Все пользовательские иконки будут сброшены. Вы хотите продолжить?
+ Авто-адаптивные иконки
+ Для всех не-адаптивных иконок
+ Яркость подложки
+ Для белой подложки установите 100% значение яркости
+ Сброс пользоват. иконок
+ Все пользоват. иконки будут сброшены. Вы хотите продолжить?
Иконки
Сбросить настройки
Открыть внешний подборщик
- Pick icon from
- Couldn\'t load more icons
+ Выбрать иконку из
+ Не удалось загрузить больше иконок
Система
Круг
@@ -161,54 +161,54 @@
iOS
Восьмиугольник
Из OneUI
- Rounded square
- Sharp square
+ Скруглённый квадрат
+ Острый квадрат
Квадратный
Квадратный круг
Капля
- Custom icon shape
- Create custom icon shape
- Edit custom icon shape
- Corner shape
+ Пользоват. форма иконок
+ Создать свою форму иконок
+ Редактировать пользоват. форму иконок
+ Форма углов
Круглая
Сглаженная
Обрезанная
- Top left
- Top right
- Bottom left
- Bottom right
- Export to clipboard
- Import from clipboard
- Clipboard doesn\'t contain a valid icon shape
+ Сверху слева
+ Сверху справа
+ Снизу слева
+ Снизу справа
+ Экспорт в буфер обмена
+ Импорт из буфера обмена
+ Буфер обмена не содержит допустимую форму иконки
- Icon pack
- Themed icon source
- System icons
- Themed icons
+ Набор иконок
+ Источник тематических иконок
+ Системные иконки
+ Тематические иконки
Выкл
- Home screen
- Home screen & app drawer
+ Главный экран
+ Главный экран & меню приложений
Нет поддерживаемых наборов значков
- Add fonts
- OTF and TTF fonts are supported
+ Добавить шрифты
+ Поддерживаются OTF и TTF шрифты
Шрифт не найден
- Font (experimental)
+ Шрифт (экспериментально)
Общие
Заголовки
- Headings (medium)
- Обычный
- Body (medium)
+ Заголовки (сред. размер)
+ Обычный текст
+ Обычный текст (сред. размер)
Курсив
Тонкий
- Extra light
+ Очень тонкий
Светлая
Стандартный
Средний
Полужирный
Жирный
- Extra bold
+ Очень толстый
Черный
+ Цветовой стиль
+ Форме шприца
+ Тональная точка
+ Яркий
+ Выразительный
+ Радуга
+ Фруктовый салат
+ Содержимое
+ Монохром
Цвета
- Accent color
- Образцы
+ Цветовой акцент
+ Stroke color
+ Шаблоны
RGB
Красный
Зелёный
@@ -235,7 +246,7 @@
Яркость
Hex
Ползунки
- Invalid color
+ Некорректный цвет
Зарядка
Заряжено
- Battery low
+ Низкий заряд батареи
"%1$d%% — Полная через %2$s"
- Первый Взгляд
- What to show
+ Секция \"Самое главное\"
+ Что показывать
- Календарь
- Date & time
- Дата
- Время
- Time format
- Follow system
- 12-hour format
- 24-hour format
+ Тип календаря
+ Дата и время
+ Отображать дату
+ Отображать время
+ Формат времени
+ Следовать систем. настройкам
+ 12-час. формат
+ 24-час. формат
Погода
- Battery status
+ Состояние батареи
Сейчас играет
- Tap to set up
- Чтобы использовать %1$s, включите точки уведомлений.
+ Нажмите для настройки
+ Чтобы использовать %1$s, включите Точки уведомлений.
- Show on home screen
- At a Glance can be manually added to the home screen by placing the Lawnchair widget
+ Показывать на главном экране
+ Секцию \"Самое главное\" можно добавить на главный экран вручную с помощью виджета \"Lawnchair\"
- At a Glance provider
+ Провайдер секции \"Самое главное\"
Google
Поиск Google
@@ -286,27 +297,27 @@
-->
Новости
Поддержка
- Продукт
- Design & development
+ Команда разработки
+ Дизайн и разработка
Разработка
- QuickSwitch maintenance
+ Поддержка QuickSwitch
DevOps-инженер
- Поддержка & PR
- Лицензии
+ Поддержка и PR
+ Выражаем благодарность
Перевод
- Create backup
- What to back up
- Layout and settings
+ Создать резерв. копию
+ Что нужно сохранить
+ Макет и настройки
Обои
Резервная копия создана
Не удалось создать резервную копию
- Restore backup
- What to restore
+ Восстановить резерв. копию
+ Что восстанавливать
Резервная копия восстановлена
Не удалось восстановить резервную копию
Файл резервной копии недействителен
@@ -315,96 +326,101 @@
Gesture settings
-->
- Double tap
- Swipe up
- Swipe down
- Home button
- Back button
- Do nothing
+ Двойное нажатие
+ Свайп Вверх
+ Свайп Вниз
+ Кнопка \"Домой\"
+ Кнопка \"Назад\"
+ Ничего не делать
Сон
- Open notification panel
- Open app
+ Открыть панель уведомлений
+ Открыть приложение
Открыть %1$s
- Open app drawer
- Open app search
- Open search
- Pick app
- Admin permissions required
- To use Double-Tap to Sleep, set Lawnchair as a device admin app. Tap \"Open settings\", then tap \"Activate this device admin app.\"
- Двойное нажатие для блокировки будет отключен.
- Turn on accessibility service
- To use Double-Tap to Sleep, turn on the Lawnchair accessibility service. Tap \"Open settings\", select \"Lawnchair\" and turn on \"Use Lawnchair.\"
- Open settings
+ Открыть Меню приложений
+ Открыть поиск приложений
+ Открыть поиск
+ Выбрать приложение
+ Необходимы права администратора
+ Чтобы использовать Спящий режим по двойному нажатию, назначьте Lawnchair администратором устройства. Для этого: откройте Настройки, затем нажмите на \"Активировать приложение администратора устройства.\"
+ Двойное нажатие для Спящего режима будет отключено.
+ Включить службу специальных возможностей
+ Чтобы использовать Спящий режим по двойному нажатию, включите Lawnchair в меню спец. возможностей. Для этого: откройте Настройки, затем выберите \"Lawnchair\" и нажмите \"Использовать Lawnchair\"
+ Открыть настройки
- Lawnchair bug report
- %1$s crashed
- Upload crash log
- Загрузка не удалась
- Загрузка…
- Bug reports
- Upload status
- %d new reports
- Multiple new reports
+ Отчет об ошибках Lawnchair
+ %1$s - произошел сбой
+ Отправить лог ошибки
+ Отправка не удалась
+ Отправка…
+ Отчёт об ошибках
+ Статус отправки
+ %d новых отчетов
+ Несколько новых отчетов
- Home screen rotation
- Allow home screen rotation when device is rotated
- Add new apps to home screen
- Show feed
+ Поворот главного экрана
+ Разрешить поворот глав. экрана при повороте устройства
+ Включить размытие обоев
+ Степень размытия
+ Предел фактора размытия
+ Добавлять новые приложения на глав. экран
+ Показывать ленту новостей
Приложения для ленты новостей не установлены
Лента Google
- Feed provider
- Scroll wallpaper
- Wallpaper depth effect
- Zoom in and out of the wallpaper when transitioning between areas of the launcher
- Top shadow
- Home screen grid
- Lock home screen
- Unlock home screen
- Home screen is locked
+ Поставщик ленты новостей
+ Прокрутка обоев
+ Эффект глубины обоев
+ Приближать и отдалять обои при переключении между приложениями
+ Тень сверху
+ Сетка главного экрана
+ Заблокировать глав. экран
+ Разбл. глав. экран
+ Главный экран заблокирован
Предотвращать изменения макета главного экрана
Показывать точечную нумерацию страниц
- Use dots instead of lines to show page number
- Use new pop-up style
- Use Material You\'s bouncy and slightly consolidated pop-up style
- Pop-up menu
- Show lock button
- Show system settings entry
- Show Edit button
- Status bar
- Show status bar
- Dark status bar
- Text color
+ Использовать точки вместо линий для индикации страниц
+ Использовать новый стиль всплывающего окна
+ Использовать Material You стиль всплывающих окон
+ Всплывающее меню
+ Показывать кнопку блокировки
+ Показывать пункт системных настроек
+ Показывать кнопку редактирования
+ Строка состояния
+ Показывать строку состояния
+ Темная строка состояния
+ Цвет текста
Светлая
Тёмная
- Rounded corners
- Allow overlap
- Enforce widget resizing
- Allow resizing of widgets that are constrained to a specific size
- Remove size constraints
- Remove the minimum and maximum size restrictions of widgets
+ Скруглённые углы
+ Разрешить наложения
+ Принудительное изменение размера виджета
+ Разрешить изменение размеров фиксированных виджетов
+ Удалить ограничения размера
+ Убрать мин. и макс. ограничения размера виджетов
- Show dock
- Search bar
- Search bar widget
+ Отображать док-панель
+ Панель поиска
+ Виджет панели поиска
Отключено
- Google Search bar
+ Панель поиска Google
+ Прозрачность
+ Stroke
Скругление углов
- Apply accent color
- Search provider
- Dock icons
- Bottom padding
+ Применить цвет акцента
+ Провайдер поиска
+ Иконки док-панели
+ Нижний отступ
- App search
- %1$s and Lawnchair have a revenue share agreement.\n\nSearching with %1$s helps support Lawnchair.
+ Поиск приложений
+ %1$s и Lawnchair имеет соглашение о разделе доходов.\n\nПоиск с помощью %1$s помогает поддерживать Lawnchair.
Приложение
Веб-сайт
Требуется приложение
@@ -413,45 +429,45 @@
Google Lens
Голосовой поиск
- Hidden apps
- Load apps in bulk
- Load and display icons in bulk instead of individually
- Remember position
- Запомнить позицию поля поиска приложений после закрытия поиска
- Show scrollbar
- App drawer columns
- Row height
- Horizontal padding
+ Скрытые приложения
+ Массовая загрузка приложений
+ Массовая загрузка иконок вместо одиночной
+ Запомнить позицию
+ Запомнить позицию Меню приложений после его закрытия
+ Показать полосу прокрутки
+ Кол-во столбцов в Меню прилож.
+ Высота строки
+ Горизонт. отступ
- Hide from app drawer
- Hidden apps (%1$d)
+ Скрыть из Меню приложений
+ Скрытые приложения (%1$d)
- - %1$d app
- - %1$d apps
- - %1$d apps
- - %1$d apps
+ - %1$d приложение
+ - %1$d приложений
+ - %1$d приложений
+ - %1$d приложение
- Icon background opacity
- Icon background color
- Maximum folder columns
- Maximum folder rows
+ Прозрачность фона иконки
+ Цвет фона иконки
+ Макс. кол-во столбцов в папке
+ Макс. кол-во строк в папке
- These settings will be ignored as Lawnchair isn\'t set as the Recents provider
- Incompatible system integration
- Your device is configured to have system gestures (known as Quickstep) provided by %1$s, but this version of %1$s isn\'t compatible with your Android version. To continue using your device, please uninstall %1$s updates or disable %1$s as a system gesture provider.
- Translucent background
- Background opacity
- Quick actions
+ Эти настройки будут проигнорированы, так как Lawnchair не установлен как провайдер недавних приложений
+ Несовместимая системная интеграция
+ Ваше устройство настроено на использование системных жестов (известных как Quickstep), предоставляемых %1$s, но эта версия %1$s не совместима с вашей версией Android. Чтобы продолжить использование вашего устройства, удалите обновления %1$s или отключите %1$s как поставщика системных жестов.
+ Полупрозрачный фон
+ Прозрачность фона
+ Быстрые действия
Поделиться
Lens
- Clear all
+ Очистить все
Принудительно закрыть
- Screen corner radius
- Custom screen corner radius
- When you swipe up to open Recents, the current app follows your finger, shrinking into a card. Use this slider to adjust the corner radius of the card when it\'s nearly full screen so it matches the corners of your screen.
+ Радиус скругления краёв экрана
+ Пользоват. радиус углов экрана
+ При жесте \"Свайп Вверх\" для открытия Недавних приложений, текущее приложение следует за пальцем, уменьшаясь в карточку. Используйте этот ползунок для настройки радиуса угла карточки, когда она почти развернута, чтобы соответствовать углам экрана.
Панель задач
- Show taskbar (experimental)
+ Показать панель задач (экспериментально)
Поиск
- Поиск по приложениям
- No apps found matching \"%1$s\"
+ Поиск приложений
+ Не найдено приложений по запросу \"%1$s\"
Из Интернета
- Contacts from device
- Files from device
- Settings from device
- Search for more apps
- Искать на Startpage
- No app store or browser installed
- Clear search history
- Clear search box
+ Контакты на устройстве
+ Файлы на устройстве
+ Настройки устройства
+ Поиск доп. приложений
+ Искать в %1$s
+ Магазин приложений или браузер не установлены
+ Очистить историю поиска
+ Очистить строку поиска
Поиск
- Show search bar
+ Показать строку поиска
Автоматически показывать клавиатуру
- Fuzzy search
- Approximate matching for app searches
+ Поиск по совпадению
+ Поиск приложений по схожему запросу
Рекомендации
- Show suggested apps at the top of the drawer
- Device search
- Search your phone contacts, files, and settings
- Show hidden apps in search results
- If full name is typed
- Search algorithm
+ Показывать рекоменд. прилож. в верх. части Меню приложений
+ Поиск по устройству
+ Поиск контактов, файлов и настроек вашего телефона
+ Показывать скрытые приложения в результатах поиска
+ Если указано полное имя
+ Алгоритм поиска
Поиск приложений
- Global search (on-device)
- Global search (via ASI)
+ Глобальный поиск (на устройстве)
+ Глобальный поиск (с помощью ASI)
- Show in search results
- Приложения & Ярлыки
- App shortcuts
+ Показывать в результатах поиска
+ Приложения и Ярлыки
+ Ярлыки приложений
Люди
- Pixel tips
- Android settings
+ Советы Pixel
+ Настройки Android
Файл
Веб-предложения
- Search history
- Kalkulyator
+ История поиска
+ Калькулятор
Медиа, файлы и другое
Контакты и другое
- С помощью Startpage
+ Через %1$s
- Maximum number of apps in search results
- Maximum number of people in search results
- Maximum number of files in search results
- Maximum number of settings entries in search results
- Maximum number of history entries in search results
- Maximum number of suggestions in search results
- Maximum web suggestion delay
+ Макс. кол-во приложений в результатах поиска
+ Макс. кол-во людей в результатах поиска
+ Макс. кол-во файлов в результатах поиска
+ Макс. кол-во пунктов настроек в результатах поиска
+ Макс. кол-во записей истории в результатах поиска
+ Макс. кол-во предложений в результатах поиска
+ Макс. задержка веб-предложений
- To search for contacts, grant contacts and phone permissions to Lawnchair
- To search your files, grant storage permissions to Lawnchair
- Grant permissions
+ Для поиска контактов, предоставьте доступ к контактам и телефону для Lawnchair
+ Чтобы искать файлы, предоставьте доступ к хранилищу для Lawnchair
+ Предоставить доступ
+ Lawnchair (compose)
+ Провайдер веб-предложений
+ Показать иконку провайдера веб-предложений в панели поиска
+ Соответствовать стилю строки поиска в док-панели
diff --git a/lawnchair/res/values-sk-rSK/strings.xml b/lawnchair/res/values-sk-rSK/strings.xml
index b4c0b18f99c..3876436d593 100644
--- a/lawnchair/res/values-sk-rSK/strings.xml
+++ b/lawnchair/res/values-sk-rSK/strings.xml
@@ -221,9 +221,20 @@
Tmavý
Systém
Match wallpaper
+
+ Color style
+ Spritz
+ Tonal Spot
+ Vibrant
+ Expressive
+ Rainbow
+ Fruit Salad
+ Content
+ Monochromatic
Farby
Accent color
+ Stroke color
Odtiene
RGB
Červená
@@ -357,6 +368,9 @@
Home screen rotation
Allow home screen rotation when device is rotated
+ Enable wallpaper blur
+ Blur intensity
+ Factor threshold
Add new apps to home screen
Show feed
No feed apps installed
@@ -397,6 +411,8 @@
Search bar widget
Vypnuté
Google Search bar
+ Opacity
+ Stroke
Corner radius
Apply accent color
Search provider
@@ -466,7 +482,7 @@
Files from device
Settings from device
Search for more apps
- Search on Startpage
+ Search on %1$s
No app store or browser installed
Clear search history
Clear search box
@@ -500,7 +516,7 @@
Media, files, and more
Contacts and more
- Via Startpage
+ Via %1$s
Maximum number of apps in search results
Maximum number of people in search results
@@ -513,4 +529,8 @@
To search for contacts, grant contacts and phone permissions to Lawnchair
To search your files, grant storage permissions to Lawnchair
Grant permissions
+ Lawnchair (compose)
+ Web suggestion provider
+ Show web suggestion provider icon in search bar
+ Match dock search bar style
diff --git a/lawnchair/res/values-sl-rSI/strings.xml b/lawnchair/res/values-sl-rSI/strings.xml
index c5ad32d1379..b3443e08b2c 100644
--- a/lawnchair/res/values-sl-rSI/strings.xml
+++ b/lawnchair/res/values-sl-rSI/strings.xml
@@ -221,9 +221,20 @@
Temno
Sistem
Match wallpaper
+
+ Color style
+ Spritz
+ Tonal Spot
+ Vibrant
+ Expressive
+ Rainbow
+ Fruit Salad
+ Content
+ Monochromatic
Barve
Accent color
+ Stroke color
Swatches
RGB
Red
@@ -357,6 +368,9 @@
Home screen rotation
Allow home screen rotation when device is rotated
+ Enable wallpaper blur
+ Blur intensity
+ Factor threshold
Add new apps to home screen
Show feed
No feed apps installed
@@ -397,6 +411,8 @@
Search bar widget
Disabled
Google Search bar
+ Opacity
+ Stroke
Polmer robov
Apply accent color
Search provider
@@ -466,7 +482,7 @@
Files from device
Settings from device
Search for more apps
- Search on Startpage
+ Search on %1$s
No app store or browser installed
Clear search history
Clear search box
@@ -500,7 +516,7 @@
Media, files, and more
Contacts and more
- Via Startpage
+ Via %1$s
Maximum number of apps in search results
Maximum number of people in search results
@@ -513,4 +529,8 @@
To search for contacts, grant contacts and phone permissions to Lawnchair
To search your files, grant storage permissions to Lawnchair
Grant permissions
+ Lawnchair (compose)
+ Web suggestion provider
+ Show web suggestion provider icon in search bar
+ Match dock search bar style
diff --git a/lawnchair/res/values-sq-rAL/strings.xml b/lawnchair/res/values-sq-rAL/strings.xml
index d6e94867685..668fd2b2385 100644
--- a/lawnchair/res/values-sq-rAL/strings.xml
+++ b/lawnchair/res/values-sq-rAL/strings.xml
@@ -221,9 +221,20 @@
Errët
Sistemi
Match wallpaper
+
+ Color style
+ Spritz
+ Tonal Spot
+ Vibrant
+ Expressive
+ Rainbow
+ Fruit Salad
+ Content
+ Monochromatic
Ngjyrat
Accent color
+ Stroke color
Shkëmbim
RGB
E kuqe
@@ -357,6 +368,9 @@
Home screen rotation
Allow home screen rotation when device is rotated
+ Enable wallpaper blur
+ Blur intensity
+ Factor threshold
Add new apps to home screen
Show feed
No feed apps installed
@@ -397,6 +411,8 @@
Search bar widget
Fikur
Google Search bar
+ Opacity
+ Stroke
Corner radius
Apply accent color
Search provider
@@ -464,7 +480,7 @@
Files from device
Settings from device
Search for more apps
- Search on Startpage
+ Search on %1$s
No app store or browser installed
Clear search history
Clear search box
@@ -498,7 +514,7 @@
Media, files, and more
Contacts and more
- Via Startpage
+ Via %1$s
Maximum number of apps in search results
Maximum number of people in search results
@@ -511,4 +527,8 @@
To search for contacts, grant contacts and phone permissions to Lawnchair
To search your files, grant storage permissions to Lawnchair
Grant permissions
+ Lawnchair (compose)
+ Web suggestion provider
+ Show web suggestion provider icon in search bar
+ Match dock search bar style
diff --git a/lawnchair/res/values-sr/strings.xml b/lawnchair/res/values-sr/strings.xml
index 16b9c5aa75b..5997e72d1f6 100644
--- a/lawnchair/res/values-sr/strings.xml
+++ b/lawnchair/res/values-sr/strings.xml
@@ -221,9 +221,20 @@
Тамна
Системска
На основу позадине
+
+ Шема боја
+ Аперол
+ Нијансирање
+ Живописно
+ Експресивно
+ Дуга
+ Воћна салата
+ Садржај
+ Монохроматско
Боје
Боја за наглашавање
+ Stroke color
Обрасци
RGB
Црвена
@@ -357,6 +368,9 @@
Ротација почетног екрана
Дозволите ротацију почетног екрана када се уређај ротира
+ Enable wallpaper blur
+ Blur intensity
+ Factor threshold
Додај нове апликације на почетни екран
Прикажи фид
Ниједна апликација за фид није инсталирана
@@ -397,6 +411,8 @@
Виџет траке за претрагу
Онемогућено
Google трака за претрагу
+ Opacity
+ Stroke
Заобљеност углова
Примени боју за наглашавање
Претраживач
@@ -465,7 +481,7 @@
Фајлови са уређаја
Подешавања са уређаја
Претражите још апликација
- Претражуј помоћу услуге Startpage
+ Search on %1$s
Није инсталирана продавница апликација ни прегледач
Обриши историју претраге
Обриши поље за претрагу
@@ -499,7 +515,7 @@
Медији, фајлови и друго
Контакти и друго
- Помоћу услуге Startpage
+ Via %1$s
Максималан број апликација у резултатима претраге
Максималан број контаката у резултатима претраге
@@ -512,4 +528,8 @@
Да бисте претраживали контакте, доделите Lawnchair-у дозволе Контакти и Телефон
Да бисте претраживали фајлове, доделите Lawnchair-у приступ меморији
Додели дозволе
+ Lawnchair (састављено)
+ Web suggestion provider
+ Show web suggestion provider icon in search bar
+ Match dock search bar style
diff --git a/lawnchair/res/values-sv-rSE/strings.xml b/lawnchair/res/values-sv-rSE/strings.xml
index f9487f4a5a0..9bae27e0c16 100644
--- a/lawnchair/res/values-sv-rSE/strings.xml
+++ b/lawnchair/res/values-sv-rSE/strings.xml
@@ -23,7 +23,7 @@
-->
Förhandsgranskning
Skapa
- Backup
+ Säkerhetskopiera
Återställ
Radera
Återställ
@@ -34,16 +34,16 @@
Alltid
Aldrig
Urklipp
- Copy link
+ Kopiera länk
Kopiera
Klistra in
Laddar …
Hanteras av Lawnchair
Alternativ
- Home settings
- System settings
- Change settings
+ Startinställningar
+ Systeminställningar
+ Ändra inställningar
Bakgrundsbild
- Background opacity
+ Bakgrundsopacitet
- Copied to clipboard
+ Kopierad till urklipp
Objekt borttaget
- What to show
+ Vad ska visas
För att kunna låsa din telefon när en gest görs kräver Lawnchair tillgänglighetsåtkomst.\n\nLawnchair övervakar inte några användaraktiviteter, men behörigheten att göra detta krävs för alla tillgänglighetstjänster. Lawnchair förkastar alla händelser som skickas av systemet.\n\nFör att kunna låsa din telefon använder Lawnchair tillgänglighetstjänsten performGlobalAction.
%1$d x %2$d
@@ -81,77 +81,77 @@
-->
Inställningar
Allmänt
- Colors, icon packs, notification dots
- Home screen
- Feed, grid, icons
+ Färger, ikonpaket, aviseringsprickar
+ Startskärm
+ Flöde, rutnät, ikoner
Favoritfält
- Search bar, icon count
- App drawer
- Hidden apps, column count, icons
- Drawer search
- Web suggestions, global search
+ Sökfält, ikonantal
+ Applåda
+ Dolda appar, kolumnantal, ikoner
+ Applådesökning
+ Webbförslag, global sökning
Mappar
- Row and column count
+ Rad- och kolumnantal
Gester
- Taps and swipes
+ Tryckningar och svepningar
Senaste
- Clear All button, corner radius
+ Rensa alla-knapp, hörnradie
Om
- App info
+ Appinfo
Starta om Lawnchair
- Experimental features
+ Experimentella funktioner
- Font customization
+ Anpassning av typsnitt
En del text förblir oförändrad
- At a Glance calendar customization
+ Anpassning av snabböversiktskalender
Tillåt visning av datum i icke-gregorianska kalendersystem
- Increase maximum grid size limit
- Increase maximum allowed home screen grid size from 10 x 10 to 20 x 20
- Always reload icons
+ Utöka gränsen för maximal rutnätsstorlek
+ Utöka maximalt tillåten storlek på startskärmsrutnätet från 10 x 10 till 20 x 20
+ Ladda alltid om ikoner
Undvik att använda cachade ikoner från ikonpaket
- Lock/unlock
- Prevent selected app from closing when pressing \"Clear all\"
+ Lås/lås upp
+ Förhindra att vald app stängs när \"Rensa alla\" används
- To access shortcuts and additional features, set Lawnchair as your default launcher
- Notification dots
- Show notification counter
- Notification dot color
- Notification counter color
- Warning: Notification dot and counter colors don\'t have enough contrast with each other
- Warning: Notification dot and counter colors might not always have enough contrast with each other
+ För att komma åt genvägar och ytterligare funktioner, ange Lawnchair som din förvalda startskärmsapp
+ Aviseringsprickar
+ Visa aviseringsräknare
+ Färg på aviseringsprick
+ Färg på aviseringsräknare
+ Varning: Färgerna på aviseringsprick och aviseringsräknare har inte tillräcklig kontrast mot varandra
+ Varning: Färgerna på aviseringsprick och aviseringsräknare har kanske inte alltid tillräcklig kontrast mot varandra
Åtkomst till aviseringar krävs
- To show Notification Dots, turn on app notifications for %1$s
+ För att visa aviseringsprickar, aktivera appaviseringar för %1$s
- Icon style
- Icon shape
- Icon size
- Show labels
- Label size
- Use multiple lines
+ Ikonstil
+ Ikonform
+ Ikonstorlek
+ Visa etiketter
+ Etikettstorlek
+ Använd flera rader
- Transparent themed icons
+ Transparenta tematiserade ikoner
Använd transparent bakgrund på tematiserade ikoner
- Auto-adaptive icons
- For all non-adaptive icons
- Background lightness
- Use 100% background lightness for white
- Reset custom icons
+ Autoadaptiva ikoner
+ För alla icke-adaptiva ikoner
+ Bakgrundens ljushet
+ Använd 100 % bakgrundsljushet för vitt
+ Återställ anpassade ikoner
Alla anpassade ikoner kommer att återställas. Vill du fortsätta?
Ikoner
- Reset to default
- Open external picker
- Pick icon from
- Couldn\'t load more icons
+ Återställ till standard
+ Öppna extern väljare
+ Välj ikon från
+ Kunde inte ladda fler ikoner
System
Cirkel
@@ -161,54 +161,54 @@
iOS
Oktagon
One UI
- Rounded square
- Sharp square
+ Rundad kvadrat
+ Skarp kvadrat
Kvadrat
Kvirkel
Droppe
- Custom icon shape
- Create custom icon shape
- Edit custom icon shape
- Corner shape
+ Anpassad ikonform
+ Skapa anpassad ikonform
+ Redigera anpassad ikonform
+ Hörnform
Rund
Slät
Klippt
- Top left
- Top right
- Bottom left
- Bottom right
- Export to clipboard
- Import from clipboard
- Clipboard doesn\'t contain a valid icon shape
+ Vänster överkant
+ Höger överkant
+ Vänster nederkant
+ Höger nederkant
+ Exportera till urklipp
+ Importera från urklipp
+ Urklipp innehåller inte en giltig ikonform
- Icon pack
- Themed icon source
- System icons
- Themed icons
+ Ikonpaket
+ Källa till tematiserade ikoner
+ Systemikoner
+ Tematiserade ikoner
Av
- Home screen
- Home screen & app drawer
+ Startskärm
+ Startskärm & applåda
Inga ikonpaket som stöds
- Add fonts
- OTF and TTF fonts are supported
+ Lägg till typsnitt
+ OTF- och TTF-typsnitt stöds
Typsnittet hittades inte
- Font (experimental)
+ Typsnitt (experimentellt)
Allmänt
Rubriker
- Headings (medium)
+ Rubriker (medium)
Brödtext
- Body (medium)
+ Brödtext (medium)
Kursiv
Tunn
- Extra light
+ Extra mager
Mager
Normal
Medel
Halvfet
Fet
- Extra bold
+ Extra fet
Svart
+ Färgstil
+ Spritz
+ Tonal punkt
+ Livfull
+ Uttrycksfull
+ Regnbåge
+ Fruktsallad
+ Innehåll
+ Enfärgad
Färger
- Accent color
+ Accentfärg
+ Stroke color
Exempel
RGB
Rött
@@ -235,7 +246,7 @@
Ljushet
Hex
Reglage
- Invalid color
+ Ogiltig färg
Laddar
Laddat
- Battery low
+ Lågt batteri
"%1$d%% — fullt om %2$s"
Snabböversikt
- What to show
+ Vad ska visas
Kalender
- Date & time
+ Datum & tid
Datum
Tid
- Time format
- Follow system
- 12-hour format
- 24-hour format
+ Tidsformat
+ Följ systemet
+ 12-timmarsformat
+ 24-timmarsformat
Väder
- Battery status
+ Batteristatus
Nu spelas
- Tap to set up
+ Tryck för att konfigurera
För att använda %1$s, aktivera aviseringsprickar.
- Show on home screen
- At a Glance can be manually added to the home screen by placing the Lawnchair widget
+ Visa på startskärmen
+ Snabböversikt kan läggas till manuellt på startskärmen genom att placera ut Lawnchair-widgeten
- At a Glance provider
+ Snabböversiktsleverantör
Google
Google Sök
@@ -287,9 +298,9 @@
Nyheter
Support
Produkt
- Design & development
+ Design & utveckling
Utveckling
- QuickSwitch maintenance
+ QuickSwitch-underhåll
DevOps
Support & pr
Erkännanden
@@ -299,112 +310,117 @@
Backup and restore
-->
- Create backup
- What to back up
- Layout and settings
+ Skapa säkerhetskopia
+ Vad ska säkerhetskopieras
+ Layout och inställningar
Bakgrundsbild
- Backup created
- Failed to create backup
- Restore backup
- What to restore
- Backup restored
- Failed to restore backup
- Invalid backup file
+ Säkerhetskopia skapad
+ Misslyckades med att skapa säkerhetskopia
+ Återställ säkerhetskopia
+ Vad ska återställas
+ Säkerhetskopia återställd
+ Misslyckades med att återställa säkerhetskopia
+ Ogiltig säkerhetskopiefil
- Double tap
- Swipe up
- Swipe down
- Home button
- Back button
- Do nothing
+ Dubbeltryck
+ Svep uppåt
+ Svep nedåt
+ Hemknapp
+ Bakåtknapp
+ Gör ingenting
Vila
- Open notification panel
- Open app
+ Öppna aviseringspanel
+ Öppna app
Öppna %1$s
- Open app drawer
- Open app search
- Open search
- Pick app
- Admin permissions required
- To use Double-Tap to Sleep, set Lawnchair as a device admin app. Tap \"Open settings\", then tap \"Activate this device admin app.\"
+ Öppna applåda
+ Öppna appsökning
+ Öppna sökning
+ Välj app
+ Adminbehörigheter krävs
+ För att använda dubbeltryck för att vila, ange Lawnchair som en enhetsadminapp. Tryck på \"Öppna inställningar\", tryck sedan på \"Aktivera denna enhetsadminapp\".
Dubbeltryck för att vila kommer att inaktiveras.
- Turn on accessibility service
- To use Double-Tap to Sleep, turn on the Lawnchair accessibility service. Tap \"Open settings\", select \"Lawnchair\" and turn on \"Use Lawnchair.\"
- Open settings
+ Aktivera tillgänglighetstjänst
+ För att använda dubbeltryck för att vila, aktivera Lawnchairs tillgänglighetstjänst. Tryck på \"Öppna inställningar\", välj \"Lawnchair\" och aktivera \"Använd Lawnchair\".
+ Öppna inställningar
- Lawnchair bug report
- %1$s crashed
- Upload crash log
+ Buggrapport för Lawnchair
+ %1$s kraschade
+ Ladda upp kraschlogg
Uppladdningen misslyckades
Laddar upp …
- Bug reports
- Upload status
- %d new reports
- Multiple new reports
+ Buggrapporter
+ Uppladdningsstatus
+ %d nya rapporter
+ Flera nya rapporter
- Home screen rotation
- Allow home screen rotation when device is rotated
- Add new apps to home screen
- Show feed
+ Rotation av startskärmen
+ Tillåt rotation av startskärmen när enheten roteras
+ Aktivera oskärpa på bakgrundsbild
+ Oskärpans intensitet
+ Faktortröskel
+ Lägg till nya appar på startskärmen
+ Visa flöde
Inga flödesappar installerade
Flöde
- Feed provider
- Scroll wallpaper
- Wallpaper depth effect
- Zoom in and out of the wallpaper when transitioning between areas of the launcher
- Top shadow
- Home screen grid
- Lock home screen
- Unlock home screen
- Home screen is locked
- Förhindra ändringar av startskärmens utseende
+ Flödesleverantör
+ Rulla bakgrundsbild
+ Djupeffekt på bakgrundsbild
+ Zooma in och ut på bakgrundsbilden vid övergång mellan startskärmsappens lägen
+ Toppskugga
+ Rutnät på startskärmen
+ Lås startskärm
+ Lås upp startskärm
+ Startskärmen är låst
+ Förhindra ändringar av startskärmens layout
Visa prickpaginering
Använd prickar i stället för linjer för att visa sidnummer
- Use new pop-up style
- Use Material You\'s bouncy and slightly consolidated pop-up style
- Pop-up menu
- Show lock button
- Show system settings entry
- Show Edit button
- Status bar
- Show status bar
- Dark status bar
- Text color
+ Använd ny popup-stil
+ Använd Material Yous studsiga och något tätare popup-stil
+ Snabbmeny
+ Visa låsknapp
+ Visa systeminställningspost
+ Visa redigeringsknapp
+ Statusfält
+ Visa statusfält
+ Mörkt statusfält
+ Textfärg
Ljust
Mörkt
- Rounded corners
- Allow overlap
- Enforce widget resizing
+ Rundade hörn
+ Tillåt överlappning
+ Tvinga storleksändring av widgetar
Tillåt storleksändring av widgetar som är begränsade till en viss storlek
- Remove size constraints
+ Ta bort storleksbegränsningar
Ta bort begränsningarna av minimi- och maximistorlek på widgetar
- Show dock
- Search bar
- Search bar widget
+ Visa favoritfält
+ Sökfält
+ Sökfältswidget
Inaktiverad
- Google Search bar
+ Google Sök-fält
+ Opacitet
+ Stroke
Hörnradie
- Apply accent color
- Search provider
- Dock icons
- Bottom padding
+ Använd accentfärg
+ Sökleverantör
+ Favoritfältsikoner
+ Avstånd nederkant
- App search
- %1$s and Lawnchair have a revenue share agreement.\n\nSearching with %1$s helps support Lawnchair.
+ Appsökning
+ %1$s och Lawnchair har ett avtal om intäktsdelning.\n\nSökning med %1$s hjälper till att stödja Lawnchair.
App
Webbplats
App krävs
@@ -413,43 +429,43 @@
Google Lens
Röstsökning
- Hidden apps
- Load apps in bulk
- Load and display icons in bulk instead of individually
- Remember position
+ Dolda appar
+ Ladda appar i klump
+ Ladda och visa ikoner i klump i stället för var för sig
+ Kom ihåg position
Kom ihåg applådeposition efter att ha lämnat applådan
- Show scrollbar
- App drawer columns
- Row height
- Horizontal padding
+ Visa rullningslist
+ Kolumner i applådan
+ Radhöjd
+ Vågrätt avstånd
- Hide from app drawer
- Hidden apps (%1$d)
+ Dölj från applådan
+ Dolda appar (%1$d)
- %1$d app
- - %1$d apps
+ - %1$d appar
- Icon background opacity
- Icon background color
- Maximum folder columns
- Maximum folder rows
+ Ikonbakgrundsopacitet
+ Ikonbakgrundsfärg
+ Maximalt antal mappkolumner
+ Maximalt antal mapprader
- These settings will be ignored as Lawnchair isn\'t set as the Recents provider
- Incompatible system integration
- Your device is configured to have system gestures (known as Quickstep) provided by %1$s, but this version of %1$s isn\'t compatible with your Android version. To continue using your device, please uninstall %1$s updates or disable %1$s as a system gesture provider.
- Translucent background
- Background opacity
- Quick actions
+ Dessa inställningar kommer att ignoreras eftersom Lawnchair inte är inställd som Senaste-leverantör
+ Inkompatibel systemintegration
+ Din enhet är konfigurerad för att ha systemgester (kända som Quickstep) tillhandahållna av %1$s, men denna version av %1$s är inte kompatibel med din Android-version. För att fortsätta att använda din enhet, vänligen avinstallera uppdateringar till %1$s eller inaktivera %1$s som systemgestsleverantör.
+ Genomlysande bakgrund
+ Bakgrundsopacitet
+ Snabbåtgärder
Dela
Lins
- Clear all
+ Rensa alla
Tvångsavsluta
- Screen corner radius
- Custom screen corner radius
- When you swipe up to open Recents, the current app follows your finger, shrinking into a card. Use this slider to adjust the corner radius of the card when it\'s nearly full screen so it matches the corners of your screen.
+ Skärmhörnsradie
+ Anpassad skärmhörnsradie
+ När du sveper uppåt för att öppna Senaste, följer den aktuella appen med ditt finger och krymper till ett kort. Använd detta reglage för att justera kortets hörnradie när det nästan fyller hela skärmen så att den matchar hörnen på din skärm.
Aktivitetsfält
- Show taskbar (experimental)
+ Visa aktivitetsfält (experimentellt)
Sök
Sök efter appar
- No apps found matching \"%1$s\"
+ Inga appar hittades som matchar \"%1$s\"
Från webben
- Contacts from device
- Files from device
- Settings from device
- Search for more apps
- Sök på Startpage
- No app store or browser installed
- Clear search history
- Clear search box
+ Kontakter från enheten
+ Filer från enheten
+ Inställningar från enheten
+ Sök efter fler appar
+ Sök på %1$s
+ Ingen appbutik eller webbläsare installerad
+ Rensa sökhistorik
+ Rensa sökruta
Sök
- Show search bar
- Automatically show keyboard
- Fuzzy search
- Approximate matching for app searches
+ Visa sökfält
+ Visa tangentbord automatiskt
+ Oskarp sökning
+ Ungefärlig matchning för appsökningar
Förslag
- Show suggested apps at the top of the drawer
- Device search
- Search your phone contacts, files, and settings
- Show hidden apps in search results
- If full name is typed
- Search algorithm
+ Visa föreslagna appar högst upp i applådan
+ Enhetssökning
+ Sök bland din telefons kontakter, filer och inställningar
+ Visa dolda appar i sökresultat
+ Om hela namnet skrivs
+ Sökalgoritm
Appsökning
- Global search (on-device)
- Global search (via ASI)
+ Global sökning (på enheten)
+ Global sökning (via ASI)
- Show in search results
+ Visa i sökresultat
Appar & genvägar
- App shortcuts
+ Appgenvägar
Personer
- Pixel tips
- Android settings
+ Pixel-tips
+ Android-inställningar
Filer
Webbförslag
- Search history
+ Sökhistorik
Kalkylator
Medier, filer med mera
Kontakter med mera
- Via Startpage
+ Via %1$s
- Maximum number of apps in search results
- Maximum number of people in search results
- Maximum number of files in search results
- Maximum number of settings entries in search results
- Maximum number of history entries in search results
- Maximum number of suggestions in search results
- Maximum web suggestion delay
+ Maximalt antal appar i sökresultat
+ Maximalt antal personer i sökresultat
+ Maximalt antal filer i sökresultat
+ Maximalt antal inställningsposter i sökresultat
+ Maximalt antal historikposter i sökresultat
+ Maximalt antal förslag i sökresultat
+ Maximal fördröjning av webbförslag
- To search for contacts, grant contacts and phone permissions to Lawnchair
- To search your files, grant storage permissions to Lawnchair
- Grant permissions
+ För att söka efter kontakter, bevilja kontakter- och telefonbehörigheter till Lawnchair
+ För att söka bland dina filer, bevilja lagringsbehörigheter till Lawnchair
+ Bevilja behörigheter
+ Lawnchair (sammansatt)
+ Webbförslagsleverantör
+ Visa webbförslagsleverantörens ikon i sökfältet
+ Matcha stilen på favoritfältets sökfält
diff --git a/lawnchair/res/values-sw-rKE/strings.xml b/lawnchair/res/values-sw-rKE/strings.xml
index edce8b7ca78..2b51ebcff3d 100644
--- a/lawnchair/res/values-sw-rKE/strings.xml
+++ b/lawnchair/res/values-sw-rKE/strings.xml
@@ -221,9 +221,20 @@
Giza
Mfumo
Match wallpaper
+
+ Color style
+ Spritz
+ Tonal Spot
+ Vibrant
+ Expressive
+ Rainbow
+ Fruit Salad
+ Content
+ Monochromatic
Rangi
Accent color
+ Stroke color
Swatches
RGB
Nyekundu
@@ -357,6 +368,9 @@
Home screen rotation
Allow home screen rotation when device is rotated
+ Enable wallpaper blur
+ Blur intensity
+ Factor threshold
Add new apps to home screen
Show feed
No feed apps installed
@@ -397,6 +411,8 @@
Search bar widget
Imezimwa
Google Search bar
+ Opacity
+ Stroke
Corner radius
Apply accent color
Search provider
@@ -464,7 +480,7 @@
Files from device
Settings from device
Search for more apps
- Search on Startpage
+ Search on %1$s
No app store or browser installed
Clear search history
Clear search box
@@ -498,7 +514,7 @@
Media, files, and more
Contacts and more
- Via Startpage
+ Via %1$s
Maximum number of apps in search results
Maximum number of people in search results
@@ -511,4 +527,8 @@
To search for contacts, grant contacts and phone permissions to Lawnchair
To search your files, grant storage permissions to Lawnchair
Grant permissions
+ Lawnchair (compose)
+ Web suggestion provider
+ Show web suggestion provider icon in search bar
+ Match dock search bar style
diff --git a/lawnchair/res/values-ta-rIN/strings.xml b/lawnchair/res/values-ta-rIN/strings.xml
index fd05987cecb..cb041b2dfc8 100644
--- a/lawnchair/res/values-ta-rIN/strings.xml
+++ b/lawnchair/res/values-ta-rIN/strings.xml
@@ -21,29 +21,29 @@
Actions and Verbs
-->
- Preview
- Create
- Backup
- Restore
- Delete
+ முன்காட்சி
+ உருவாக்கு
+ மறுபிரதி
+ மீட்டெடு
+ நீக்கு
அகரமாக்கு
- Unlock
- Lock
+ திற
+ பூட்டு
செயற்படுத்து
தனிப்பயனாக்கு
- Always
- Never
- Clipboard
- Copy link
+ எப்பொழுதும்
+ ஒருபோதும்
+ நகலகம்
+ இணைப்பை நகலெடு
நகலெடு
ஒட்டவும்
ஏற்றுகிறது…
- Managed by Lawnchair
+ லான்ச்சர் மூலம் நிர்வகிக்கப்படுகிறது
சுமார்ட் இடம் விருப்பங்கள்
- Home settings
- System settings
- Change settings
+ முகப்பு அமைப்புகள்
+ இயங்குதள அமைப்புகள்
+ அமைப்புகளை மாற்று
சுவர்த்தாள்
- Background opacity
+ பின்னணி ஒளிபுகாநிலை
- Copied to clipboard
- Item removed
+ நகலகத்தில் நகலெடுக்கப்பட்டது
+ பொருள் நீக்கப்பட்டது
- What to show
+ எதைக் காட்ட
- To lock your phone when performing a gesture, Lawnchair requires accessibility access.\n\nLawnchair doesn\'t watch any user action, though the privilege to do so is required for all accessibility services. Lawnchair discards any event sent by the system.\n\nIn order to lock your phone, Lawnchair uses the performGlobalAction Accessibility service.
+ சைகையைச் செய்யும்போது உங்கள் தொலைபேசியைப் பூட்ட, Lawnchair க்கு அணுகல்தன்மை அணுகல் தேவைப்படுகிறது.\n\nலான்ச்சர் எந்தவொரு பயனர் செயலையும் பார்ப்பதில்லை, இருப்பினும் அனைத்து அணுகல் சேவைகளுக்கும் அவ்வாறு செய்வதற்கான சிறப்புரிமை தேவைப்படுகிறது. கணினியால் அனுப்பப்பட்ட எந்த நிகழ்வையும் லான்ச்சர் நிராகரிக்கிறது.\n\nஉங்கள் தொலைபேசியைப் பூட்டுவதற்கு, லான்ச்சர் performGlobalAction அணுகல் சேவையைப் பயன்படுத்துகிறது.
%1$d x %2$d
%s & %s
அமைப்புகள்
பொது
- Colors, icon packs, notification dots
- Home screen
- Feed, grid, icons
+ நிறங்கள், சின்னச்சிப்பம், அறிவிப்புப் புள்ளிகள்
+ முகப்புத் திரை
+ ஊட்டம், கட்டம், சின்னங்கள்
கூண்டு பெயர்கள்
- Search bar, icon count
- App drawer
- Hidden apps, column count, icons
- Drawer search
- Web suggestions, global search
+ தேடல் பட்டி, சின்ன எண்ணிக்கை
+ செயலி இழுப்பறை
+ மறைபட்டச் செயலிகள், நெடுவரிசை எண்ணிக்கை, சின்னங்கள்
+ டிராயர் தேடல்
+ இணைய பரிந்துரைகள், உலகளாவிய தேடல்
கோப்புறை பெயர்கள்
- Row and column count
+ கோப்புறை விளக்கம்
சைகைகள்
- Taps and swipes
+ தட்டுவது மற்றும் தேய்ப்பது
அண்மையவை
- Clear All button, corner radius
+ அனைத்தயுந்துடை பொத்தான், மூலை ஆரம்
விவர பெயர்கள்
- App info
+ செயலியின் தகவல்கள்
Lawnchairஐ மறுதுவக்கு
- Experimental features
+ பரீட்சார்த்த அம்சங்கள்
- Font customization
+ எழுத்துரு தனிப்பயனாக்கம்
சில உரைகள் மாறாமல் இருக்கும்
- At a Glance calendar customization
+ கிளான்ஸ் காலண்டரை தனிப்பயனாக்குதல்
கிரிகோரியன் முறை அல்லாத காலண்டர் வகையில் தேதியைக் காண்பிக்க சம்மதி
- Increase maximum grid size limit
- Increase maximum allowed home screen grid size from 10 x 10 to 20 x 20
- Always reload icons
+ அதிகபட்ச கட்ட அளவு வரம்பை அதிகரிக்க
+ முகப்பு திரையின் அனுமதிக்கப்பட்ட கிரிட் அளவான 10x10-இல் இருந்து 20x20-ஆக உயர்த்து
+ எப்போதும் சின்னங்களை மீண்டும் ஏற்று
ஐகான் பேக்குகளிலிருந்து தற்காலிகச் சேமிப்பு ஐகான்களைப் பயன்படுத்துவதைத் தவிர்க்கவும்
- Lock/unlock
- Prevent selected app from closing when pressing \"Clear all\"
+ பூட்டு/திறத்தல்
+ \"அனைத்தையும் அழி\" என்பதை அழுத்தும்போது தேர்ந்தெடுக்கப்பட்ட பயன்பாட்டை மூடுவதைத் தடுக்கவும்
- To access shortcuts and additional features, set Lawnchair as your default launcher
- Notification dots
- Show notification counter
- Notification dot color
- Notification counter color
- Warning: Notification dot and counter colors don\'t have enough contrast with each other
- Warning: Notification dot and counter colors might not always have enough contrast with each other
+ குறுக்குவழிகள் மற்றும் கூடுதல் அம்சங்களை அணுக, Lawnchair ஐ உங்கள் இயல்புநிலை துவக்கியாக அமைக்கவும்
+ அறிவிப்புப் புள்ளிகள்
+ அறிவிப்புகளின் எண்ணிக்கையைக் காண்பி
+ அறிவிப்பு புள்ளிகளின் வண்ணம்
+ அறிவிப்பு எண்ணிக்கையின் நிறம்
+ எச்சரிக்கை: அறிவிப்புப் புள்ளி மற்றும் எதிர் நிறங்கள் ஒன்றுக்கொன்று போதுமான மாறுபாட்டைக் கொண்டிருக்கவில்லை
+ எச்சரிக்கை: அறிவிப்புப் புள்ளி மற்றும் எதிர் நிறங்கள் ஒன்றுக்கொன்று போதுமான மாறுபாட்டைக் கொண்டிருக்கவில்லை
அறிவிப்பணுகல் தேவை
- To show Notification Dots, turn on app notifications for %1$s
+ அறிவிப்பு புள்ளிகளைக் காட்ட, செயலிக்கான அறிவிப்புகளை இயக்கவும் %1$s
- Icon style
- Icon shape
- Icon size
- Show labels
- Label size
- Use multiple lines
+ சின்னங்களின் பாங்கு
+ சின்னத்தின் வடிவம்
+ சின்னங்களின் அளவு
+ லேபல்களை காட்டு
+ பெயர்கள் அளவு
+ பல வரிகளைப் பயன்படுத்தவும்
- Transparent themed icons
+ வெளிப்படையான கருப்பொருள் சின்னங்கள்
கருப்பொருள் ஐகான்களில் வெளிப்படையான பின்னணியைப் பயன்படுத்தவும்
- Auto-adaptive icons
- For all non-adaptive icons
- Background lightness
- Use 100% background lightness for white
- Reset custom icons
+ தகவமைப்பு சின்னங்கள்
+ எல்லா தகவமையா சின்னங்களுக்கும்
+ பின்புல இலேசுத்தன்மை
+ வெள்ளைக்கு 100% பின்புல இலேசுத்தன்மை பயன்படுத்து
+ தனிப்பயன் சின்னங்களை மீட்டமைக்கவும்
அனைத்து தனிப்பயன் சின்னங்களும் மீட்டமைக்கப்படும். தொடர வேண்டுமா?
சின்னங்கள்
இயல்பிருப்பிற்கு அகரமாக்கு
வெளிப்புற தெரிவியைத் திற
- Pick icon from
- Couldn\'t load more icons
+ சின்னத்தை இதிலிருந்துப் பொறுக்கு
+ சின்னங்களை ஏற்ற முடியவில்லை
இயங்குதளம்
வட்டம்
@@ -161,54 +161,54 @@
ஐ ஓ எஸ்
எண்கோணம்
1 யுஐ
- Rounded square
- Sharp square
+ வட்டமான சதுரம்
+ கூர்மையான சதுரம்
சதுரம்
சதுரவட்டம்
கண்ணீர் துளி
- Custom icon shape
- Create custom icon shape
- Edit custom icon shape
- Corner shape
+ தனிப்பயன் ஐகான் வடிவம்
+ தனிப்பயன் ஐகான் வடிவத்தை உருவாக்கவும்
+ தனிப்பயன் ஐகான் வடிவத்தைத் திருத்து
+ மூலை வடிவம்
சுற்று
மென்மையான
வெட்டு
- Top left
- Top right
- Bottom left
- Bottom right
- Export to clipboard
- Import from clipboard
- Clipboard doesn\'t contain a valid icon shape
+ மேல் இடது
+ மேல் வலது
+ கீழே இடது
+ கீழ் வலது
+ நகலகத்திற்கு அனுப்பு
+ நகளத்திலிருந்து கொண்டுவா
+ நகலகம் செல்லத் தக்க படவுரு வடிவத்தைக் கொண்டிருக்கவில்லை
- Icon pack
- Themed icon source
- System icons
- Themed icons
+ சின்ன பேக்
+ கருப்பொருள் ஐகான் மூல
+ இயங்குதளச் சின்னங்கள்
+ தோற்றக்கருமிகுச் சின்னங்கள்
அணை
- Home screen
- Home screen & app drawer
- No supported icon packs
+ முகப்புத் திரை
+ முகப்பு திரை & ஆப் ட்ராவெர்
+ ஆதரிக்கப்படும் ஐகான் பேக் இல்லை
- Add fonts
- OTF and TTF fonts are supported
- Font not found
- Font (experimental)
+ எழுத்துருக்களை சேர்க்கவும்
+ OTF & TTF எழுத்துருக்கள் ஏற்றுக்கொள்ளப்படுகிறது
+ எழுத்துரு எதுவுமில்லை
+ எழுத்துரு (பரீட்சார்த்த)
பொது
தலைப்புகள்
- Headings (medium)
+ தலைப்புகள் (நடுத்தர)
உடல்
- Body (medium)
+ உடல் (நடுத்தர)
வலச்சாய்வு
மெல்லிய
- Extra light
+ மிக இலேசான
இலேசான
வழக்கமான
நடுத்தரமான
அரைத்தடிப்பு
தடிப்பு
- Extra bold
+ மிகத் தடிப்பு
கருப்பு
+ வண்ண பாணி
+ ஸ்பிரிட்ஸ்
+ டோனல் ஸ்பாட்
+ துடிப்பான
+ வெளிப்படுத்தும்
+ வானவில்
+ பழச் சாலட்
+ உள்ளடக்கம்
+ ஒரே வண்ணமுடைய
நிறங்கள்
- Accent color
- Swatches
+ உரப்பு நிறம்
+ Stroke color
+ மாதிரிகள்
ஆர்ஜிபி
சிவப்பு
பச்சை
@@ -235,50 +246,50 @@
பிரகாசம்
ஹெக்ஸ்
ஸ்லைடர்கள்
- Invalid color
+ தவறான வண்ணம்
- Gregorian
- Persian
+ கிரிகோரியன்
+ பெர்சிய
%1$s, %2$s
- Charging
- Charged
- Battery low
- "%1$d%% — Full in %2$s"
- At a Glance
- What to show
+ மின் ஏறுகிறது
+ மின் ஏறியது
+ பேட்டரி குறைவு
+ "%1$d%% — இன்னும் %2$s முழுவதாகிடும்"
+ ஒரே பார்வையில்
+ எதைக் காட்ட
- Calendar
- Date & time
- Date
- Time
- Time format
- Follow system
- 12-hour format
- 24-hour format
+ காலெண்டர்
+ தேதி & நேரம்
+ தேதி
+ நேரம்
+ நேர அமைப்பு
+ இயங்குதளத்தைப் பின்பற்று
+ 12-மணி நேர வடிவம்
+ 24-மணி நேர வடிவம்
வானிலை
- Battery status
- Now Playing
+ பேட்டரி நிலை
+ இப்போது இசைக்கிறது
- Tap to set up
- To use %1$s, enable Notification Dots.
+ அமைக்கத் தட்டவும்
+ %1$s ஐப் பயன்படுத்த, அறிவிப்புப் புள்ளிகளை இயக்கவும்.
- Show on home screen
- At a Glance can be manually added to the home screen by placing the Lawnchair widget
+ முகப்புத் திரையில் காட்டு
+ Lawnchair விட்ஜெட்டை வைப்பதன் மூலம் முகப்புத் திரையில் At a Glance யைச் சேர்க்கலாம்
- At a Glance provider
- Google
- Google Search
+ At a Glance வழங்குநர்
+ கூகிள்
+ கூகிள் தேடல்
" — "
- Page %1$d of %2$d
- Fri, Mar 3
+ பக்கம் %1$d / %2$d
+ வெள்ளி, மார்ச் 3
- Create backup
- What to back up
- Layout and settings
+ காப்புப்பிரதியை உருவாக்கவும்
+ எதைக் காப்புப் பிரதி எடுக்க வேண்டும்
+ தளவமைப்பு மற்றும் அமைப்புகள்
சுவர்த்தாள்
- Backup created
- Failed to create backup
- Restore backup
- What to restore
- Backup restored
- Failed to restore backup
- Invalid backup file
+ காப்புப்பிரதி உருவாக்கப்பட்டது
+ மறுபிரதியை உருவாக்குவதில் தோல்வி
+ காப்புப்பிரதியை மீட்டமை
+ எதை மீட்டெடுப்பது
+ காப்புப்பிரதி உருவாக்கப்பட்டது
+ மறுபிரதியை உருவாக்குவதில் தோல்வி
+ தவறான காப்பு கோப்பு
- Double tap
- Swipe up
- Swipe down
- Home button
- Back button
- Do nothing
- Sleep
- Open notification panel
- Open app
- Open %1$s
- Open app drawer
- Open app search
- Open search
- Pick app
- Admin permissions required
- To use Double-Tap to Sleep, set Lawnchair as a device admin app. Tap \"Open settings\", then tap \"Activate this device admin app.\"
+ இருமுறை தட்டவும்
+ மேலே ஸ்வைப் செய்யவும்
+ கீழே ஸ்வைப் செய்யவும்
+ முகப்பு பொத்தான்
+ பின் பொத்தான்
+ எதுவும் செய்யாதே
+ தூங்கு
+ அறிவிப்பு பேனலைத் திறக்கவும்
+ செயலியைத் திற
+ %1$s திற
+ ஆப் ட்ரையர் திற
+ செயலி தேடலைத் திற
+ தேடலைத் திற
+ செயலியைத் தேர்ந்தெடு
+ நிர்வாக அனுமதி தேவை
+ அணைக்க இரட்டைத்தட்டலைப் பயன்படுத்த Lawnchairஐச் சாதன நிர்வாகிச் செயலியாக அமை. அமைப்பைத் திற என்பதைத் தட்டி, “இந்தச் சாதன நிர்வாகி ஆப்ஸைச் செயல்படுத்து” என்பதைத் தட்டுக
Double Tap to Sleep will be disabled.
- Turn on accessibility service
- To use Double-Tap to Sleep, turn on the Lawnchair accessibility service. Tap \"Open settings\", select \"Lawnchair\" and turn on \"Use Lawnchair.\"
- Open settings
+ அணுகல்தன்மை சேவையை இயக்கு
+ அணைக்க இரட்டைத்தட்டலைப் பயன்படுத்த, Lawnchair அணுகல்தன்மை சேவையை இயக்கு. அமைப்பைத் திற என்பதைத் தட்டி Lawnchairஐத் தேர்ந்தெடுத்து Lawnchairஐப் பயன்படுத்து என்பதை இயக்கு
+ அமைப்புகளைத் திற
- Lawnchair bug report
- %1$s crashed
- Upload crash log
+ Lawnchair பிழை அறிக்கை
+ %1$s சிதைந்தது
+ செயலிழப்பு பதிவைப் பதிவேற்றவும்
பதிவேற்றம் தோல்வி
பதிவேற்றுகிறது…
- Bug reports
- Upload status
- %d new reports
- Multiple new reports
+ பிழை அறிக்கைகள்
+ பதிவேற்ற நிலை
+ %d புதிய அறிக்கைகள்
+ பல புதிய அறிக்கைகள்
- Home screen rotation
- Allow home screen rotation when device is rotated
- Add new apps to home screen
- Show feed
- No feed apps installed
+ முகப்புத் திரைச் சுழற்சி
+ சாதனம் சுழலும்போது முகப்புத் திரை சுழல அனுமதி
+ Enable wallpaper blur
+ Blur intensity
+ Factor threshold
+ முகப்புத் திரையில் புதிய செயலிகளைச் சேர்
+ பீட் காட்டு
+ பீட் செயலிகள் எதுவும் நிறுவப்படவில்லை
செய்தியோடை
- Feed provider
- Scroll wallpaper
- Wallpaper depth effect
- Zoom in and out of the wallpaper when transitioning between areas of the launcher
- Top shadow
- Home screen grid
- Lock home screen
- Unlock home screen
- Home screen is locked
- Prevent changes to the home screen layout
- Show dot pagination
- Use dots instead of lines to show page number
- Use new pop-up style
- Use Material You\'s bouncy and slightly consolidated pop-up style
- Pop-up menu
- Show lock button
- Show system settings entry
- Show Edit button
- Status bar
- Show status bar
- Dark status bar
- Text color
+ பீட் வழங்குநர்
+ சுவர்த்தாளைத் திரையுருட்டு
+ வால்பேப்பர் ஆழம் விளைவு
+ துவக்கியின் பகுதிகளுக்கு இடையில் மாறும்போது வால்பேப்பரை பெரிதாக்கவும் மற்றும் சிறிதாக்கவும்
+ மேற்புற நிழல்
+ முகப்புத்திரை கட்டம்
+ முகப்பு திரையை மூடவும்
+ முகப்பு திரையைத் திறக்கவும்
+ முகப்புத் திரை பூட்டப்பட்டுள்ளது
+ முகப்புத் திரை தளவமைப்பில் மாற்றங்களைத் தடுக்கவும்
+ புள்ளி பக்கங்களைக் காட்டு
+ பக்க எண்ணைக் காட்ட கோடுகளுக்குப் பதிலாகப் புள்ளிகளைப் பயன்படுத்தவும்
+ புதிய பாப்அப் பாணியைப் பயன்படுத்து
+ மெட்டீரியல் யூ துள்ளல் மற்றும் சற்று ஒருங்கிணைக்கப்பட்ட பாப்-அப் பாணியைப் பயன்படுத்தவும்
+ பாப்அப் மெனு
+ பூட்டு பொத்தானைக் காட்டு
+ இயங்குதள அமைப்புகள் உள்ளீட்டைக் காட்டு
+ திருத்து பொத்தானைக் காட்டு
+ நிலைப்பட்டி
+ நிலைப்பலகையை காட்டு
+ இருண்ட நிலைப்பட்டி
+ எழுத்து நிறம்
இலேசான
இருண்ட
- Rounded corners
- Allow overlap
- Enforce widget resizing
- Allow resizing of widgets that are constrained to a specific size
- Remove size constraints
- Remove the minimum and maximum size restrictions of widgets
+ தளவமைப்பு மற்றும் அமைப்புகள்
+ பகுதியொத்திருக்க அனுமதிக்கவும்
+ விட்ஜெட்டை மறுஅளவிடலைச் செயல்படுத்தவும்
+ ஒரு குறிப்பிட்ட அளவிற்கு கட்டுப்படுத்தப்பட்ட விட்ஜெட்களின் அளவை மாற்ற அனுமதிக்கவும்
+ அளவுக் கட்டுப்பாடுகளை அகற்றவும்
+ விட்ஜெட்களின் குறைந்தபட்ச மற்றும் அதிகபட்ச அளவுக் கட்டுப்பாடுகளை அகற்றவும்
- Show dock
- Search bar
- Search bar widget
- Disabled
- Google Search bar
- Corner radius
- Apply accent color
- Search provider
- Dock icons
- Bottom padding
+ டாக்கை காட்டு
+ தேடல் பட்டை
+ தேடல் பட்டி விட்ஜெட்
+ முடக்கப்பட்டுள்ளது
+ கூகிள் தேடல்
+ Opacity
+ Stroke
+ மூலை ஆரம்
+ உரப்பு நிறத்தைச் செயற்படுத்து
+ தேடல் வழங்கி
+ டாக் சின்னங்கள்
+ அடி திணிப்பு
- App search
- %1$s and Lawnchair have a revenue share agreement.\n\nSearching with %1$s helps support Lawnchair.
- App
- Website
- App required
+ செயலி தேடல்
+ %1$s மற்றும் Lawnchair வருவாய் பகிர்வு ஒப்பந்தத்தைக் கொண்டுள்ளன.\n\n%1$s உடன் தேடுவது Lawnchair ஐ ஆதரிக்க உதவுகிறது.
+ செயலி
+ இணையதளம்
+ செயலி தேவை
தேடு
கூகுள் வில்லை
குரல் தேடல்
- Hidden apps
- Load apps in bulk
- Load and display icons in bulk instead of individually
- Remember position
- Remember app drawer position after leaving drawer
- Show scrollbar
- App drawer columns
- Row height
- Horizontal padding
+ மறைக்கப்பட்ட செயலிகள்
+ செயலிகளை மொத்தமாக ஏற்றவும்
+ ஐகான்களை தனித்தனியாக ஏற்றுவதற்கு பதிலாக மொத்தமாக ஏற்றிக் காண்பிக்கவும்
+ நிலையை நினைவில் கொள்ளுங்கள்
+ டிராயரை விட்டு வெளியேறியபிறகு செயலி டிராயர் நிலையை நினைவில் கொள்ளுங்கள்
+ சுருள்பட்டியைக் காட்டு
+ செயலி டிராயர் நெடுவரிசைகள்
+ வரிசை உயரம்
+ கிடைமட்ட திணிப்பு
- Hide from app drawer
- Hidden apps (%1$d)
+ செயலி இழுப்பறையிலிருந்து மறை
+ மறைக்கப்பட்ட செயலிகள்(%1$d)
- - %1$d app
- - %1$d apps
+ - %1$d செயலி
+ - %1$d செயலிகள்
- Icon background opacity
- Icon background color
- Maximum folder columns
- Maximum folder rows
+ சின்னம் பின்புல ஒளிபுகாமை
+ ஐகானின் பின்புற நிறம்
+ அதிகபட்ச கோப்புறை நெடுவரிசைகள்
+ அதிகபட்ச கோப்புறை நெடுவரிசைகள்
- These settings will be ignored as Lawnchair isn\'t set as the Recents provider
- Incompatible system integration
- Your device is configured to have system gestures (known as Quickstep) provided by %1$s, but this version of %1$s isn\'t compatible with your Android version. To continue using your device, please uninstall %1$s updates or disable %1$s as a system gesture provider.
- Translucent background
- Background opacity
- Quick actions
+ Lawnchair சமீபத்திய வழங்குநராக அமைக்கப்படாததால் இந்த அமைப்புகள் புறக்கணிக்கப்படும்
+ பொருந்தாத கணினி ஒருங்கிணைப்பு
+ %1$s -ஆல் வழங்கப்பட்ட முறைமை சைகைகளைக் (Quickstep என அறியப்படும்) கொண்டிருக்கும்படி உங்கள் சாதனம் உள்ளமைக்கப்பட்டுள்ளது, ஆனால் %1$s-இன் இந்தப் பதிப்பு உங்கள் Android பதிப்புடன் இணக்கமாக இல்லை. உங்கள் சாதனத்தைப் பயன்படுத்துவதைத் தொடர, முறைமை சைகை வழங்குநராக %1$s புதுப்பித்தல்களை நிறுவல்நீக்கவும் அல்லது %1$s -ஐ முடக்கவும்.
+ ஒளிஊடுருவக்கூடிய பின்னணி
+ பின்னணி ஒளிபுகாநிலை
+ விரைவு செயல்கள்
பகிர்
வில்லை
- Clear all
- Force close
- Screen corner radius
- Custom screen corner radius
- When you swipe up to open Recents, the current app follows your finger, shrinking into a card. Use this slider to adjust the corner radius of the card when it\'s nearly full screen so it matches the corners of your screen.
- Taskbar
- Show taskbar (experimental)
+ அனைத்தயும் துடை
+ விசை நெருக்கம்
+ திரை மூலை ஆரம்
+ தனிப்பயன் திரை மூலை ஆரம்
+ அண்மையவையைத் திறக்க மேலே தேய்த்தால், தற்போதைய செயலி உம் விரலைப் பின்தொடர்ந்து அட்டையாகச் சுருக்கும். அட்டையின் மூலை ஆரம் உம் திரை மூலையை அது கிட்டத்தட்ட முழுதிரையிலிருக்கும்போது பொருந்துமாறு அனுசரிக்க இச்சறுக்கியைப் பயன்படுத்து.
+ பணிப்பட்டி
+ பணிப்பட்டியைக் காட்டு (சோதனை)
தேடு
செயலிகளை தேட
- No apps found matching \"%1$s\"
- From the web
- Contacts from device
- Files from device
- Settings from device
- Search for more apps
- Search on Startpage
- No app store or browser installed
- Clear search history
- Clear search box
+ \"%1$s\" உடன் பொருந்தக்கூடிய பயன்பாடுகள் எதுவும் இல்லை
+ இணையத்திலிருந்து
+ சாதனத்திலிருந்து தொடர்புகள்
+ சாதனத்திலிருந்து கோப்புகள்
+ சாதனத்திலிருந்து அமைப்புகள்
+ மேலும் செயலிகளுக்காகத் தேடு
+ %1$s யில் தேடு
+ ஆப் ஸ்டோர் அல்லது உலாவி நிறுவப்படவில்லை
+ தேடல் வரலாற்றை அழி
+ தேடல் பெட்டியைத் அழி
தேடல்
- Show search bar
- Automatically show keyboard
- Fuzzy search
- Approximate matching for app searches
+ தேடல் பட்டை காட்டு
+ தானாக விசைப்பலகையைக் காட்டு
+ தெளிவறு தேடல்
+ செயலி தேடல்களுக்குத் தோராய பொருத்தம்
பரிந்துரைகள்
- Show suggested apps at the top of the drawer
- Device search
- Search your phone contacts, files, and settings
- Show hidden apps in search results
- If full name is typed
- Search algorithm
+ பரிந்துரைக்கப்பட்ட செயலிகளை டிராயரின் மேற்புறத்தில் காண்பி
+ சாதனத் தேடல்
+ உங்கள் தொலைபேசி தொடர்புகள், கோப்புகள் மற்றும் அமைப்புகளைத் தேடுங்கள்
+ தேடல் முடிவுகளில் மறைக்கப்பட்ட செயலிகளைக் காண்பி
+ முழுப்பெயர் தட்டச்சு செய்யப்பட்டால்
+ தேடல் அல்காரிதம்
செயலி தேடல்
- Global search (on-device)
- Global search (via ASI)
+ உலகளாவிய தேடல் (சாதனத்தில்)
+ உலகளாவிய தேடல் (ASI வழியாக)
- Show in search results
- Apps & Shortcuts
- App shortcuts
+ தேடல் முடிவுகளில் காட்டு
+ பயன்பாடுகள் & குறுக்குவழிகள்
+ செயலி குறுக்குவழிகள்
மக்கள்
- Pixel tips
- Android settings
- Files
- Web suggestions
- Search history
- Calculator
+ பிக்சல் துணுக்குதவிகள்
+ Android அமைப்புகள்
+ கோப்புகள்
+ வலை ஆலோசனைகள்
+ தேடல் வரலாறு
+ கணிப்பான்
- Media, files, and more
- Contacts and more
- Via Startpage
+ மீடியா, கோப்புகள் மற்றும் பல
+ தொடர்புகள் மற்றும் பல
+ %1$s வழியாக
- Maximum number of apps in search results
- Maximum number of people in search results
- Maximum number of files in search results
- Maximum number of settings entries in search results
- Maximum number of history entries in search results
- Maximum number of suggestions in search results
- Maximum web suggestion delay
+ தேடல் முடிவுகளில் செயலிகளின் அதிகபட்ச எண்ணிக்கை
+ தேடல் முடிவுகளில் நபர்களின் அதிகபட்ச எண்ணிக்கை
+ தேடல் முடிவுகளில் கோப்புகளின் அதிகபட்ச எண்ணிக்கை
+ தேடல் முடிவுகளில் அமைப்புகள் உள்ளீடுகளின் அதிகபட்ச எண்ணிக்கை
+ தேடல் முடிவுகளில் வரலாறு உள்ளீடுகளின் அதிகபட்ச எண்ணிக்கை
+ தேடல் முடிவுகளில் பரிந்துரைகளின் அதிகபட்ச எண்ணிக்கை
+ அதிகபட்ச இணைய பரிந்துரை தாமதம்
- To search for contacts, grant contacts and phone permissions to Lawnchair
- To search your files, grant storage permissions to Lawnchair
- Grant permissions
+ தொடர்புகளைத் தேட, தொடர்புகள் மற்றும் தொலைபேசி அனுமதிகளை Lawnchair க்கு வழங்கவும்
+ உங்கள் கோப்புகளைத் தேட, Lawnchair க்கு சேமிப்பக அனுமதிகளை வழங்கவும்
+ அனுமதிகளை வழங்கவும்
+ லான்ச்சேர் (கம்போஸ்)
+ வலை பரிந்துரைகள் வழங்குநர்
+ தேடல் பட்டியில் வலை பரிந்துரை வழங்குநர் ஐகானைக் காட்டு
+ டாக் பட்டி பாணியைப் பொருத்தவும்
diff --git a/lawnchair/res/values-te-rIN/strings.xml b/lawnchair/res/values-te-rIN/strings.xml
index 03b45184721..a34d4453c99 100644
--- a/lawnchair/res/values-te-rIN/strings.xml
+++ b/lawnchair/res/values-te-rIN/strings.xml
@@ -221,9 +221,20 @@
Dark
System
Match wallpaper
+
+ Color style
+ Spritz
+ Tonal Spot
+ Vibrant
+ Expressive
+ Rainbow
+ Fruit Salad
+ Content
+ Monochromatic
Colors
Accent color
+ Stroke color
Swatches
RGB
Red
@@ -357,6 +368,9 @@
Home screen rotation
Allow home screen rotation when device is rotated
+ Enable wallpaper blur
+ Blur intensity
+ Factor threshold
Add new apps to home screen
Show feed
No feed apps installed
@@ -397,6 +411,8 @@
Search bar widget
Disabled
Google Search bar
+ Opacity
+ Stroke
Corner radius
Apply accent color
Search provider
@@ -464,7 +480,7 @@
Files from device
Settings from device
Search for more apps
- Search on Startpage
+ Search on %1$s
No app store or browser installed
Clear search history
Clear search box
@@ -498,7 +514,7 @@
Media, files, and more
Contacts and more
- Via Startpage
+ Via %1$s
Maximum number of apps in search results
Maximum number of people in search results
@@ -511,4 +527,8 @@
To search for contacts, grant contacts and phone permissions to Lawnchair
To search your files, grant storage permissions to Lawnchair
Grant permissions
+ Lawnchair (compose)
+ Web suggestion provider
+ Show web suggestion provider icon in search bar
+ Match dock search bar style
diff --git a/lawnchair/res/values-th-rTH/strings.xml b/lawnchair/res/values-th-rTH/strings.xml
index 2cacf1b2df1..0d70c8a155e 100644
--- a/lawnchair/res/values-th-rTH/strings.xml
+++ b/lawnchair/res/values-th-rTH/strings.xml
@@ -221,9 +221,20 @@
มืด
ระบบ
Match wallpaper
+
+ Color style
+ Spritz
+ Tonal Spot
+ Vibrant
+ Expressive
+ Rainbow
+ Fruit Salad
+ Content
+ Monochromatic
สี
Accent color
+ Stroke color
ตัวอย่าง
RGB
แดง
@@ -357,6 +368,9 @@
Home screen rotation
Allow home screen rotation when device is rotated
+ Enable wallpaper blur
+ Blur intensity
+ Factor threshold
Add new apps to home screen
Show feed
ยังไม่ได้ติดตั้งแอป Feed
@@ -397,6 +411,8 @@
Search bar widget
ปิด
Google Search bar
+ Opacity
+ Stroke
Corner radius
Apply accent color
Search provider
@@ -463,7 +479,7 @@
Files from device
Settings from device
Search for more apps
- ค้นหาบน Startpage
+ Search on %1$s
No app store or browser installed
Clear search history
Clear search box
@@ -497,7 +513,7 @@
สื่อ, ไฟล์, และอื่นๆ
รายชื่อและอื่น ๆ
- ผ่าน Startpage
+ Via %1$s
Maximum number of apps in search results
Maximum number of people in search results
@@ -510,4 +526,8 @@
To search for contacts, grant contacts and phone permissions to Lawnchair
To search your files, grant storage permissions to Lawnchair
Grant permissions
+ Lawnchair (compose)
+ Web suggestion provider
+ Show web suggestion provider icon in search bar
+ Match dock search bar style
diff --git a/lawnchair/res/values-tr-rTR/strings.xml b/lawnchair/res/values-tr-rTR/strings.xml
index 048d0023113..807dd68443e 100644
--- a/lawnchair/res/values-tr-rTR/strings.xml
+++ b/lawnchair/res/values-tr-rTR/strings.xml
@@ -23,7 +23,7 @@
-->
Ön izleme
Oluştur
- Backup
+ Yedek
Eski haline getir
Sil
Sıfırla
@@ -34,16 +34,16 @@
Daima
Asla
Pano
- Copy link
+ Bağlantıyı kopyala
Kopyala
Yapıştır
Yükleniyor…
Lawnchair tarafından yönetilmektedir
Tercihler
- Home settings
- System settings
- Change settings
+ Ana ekran ayarları
+ Sistem ayarları
+ Ayarları değiştir
Duvar Kağıdı
- Background opacity
+ Arkaplan opaklığı
- Copied to clipboard
+ Panoya kaydedildi
Öğe kaldırıldı
- What to show
+ Ne gösterilsin
To lock your phone when performing a gesture, Lawnchair requires accessibility access.\n\nLawnchair doesn\'t watch any user action, though the privilege to do so is required for all accessibility services. Lawnchair discards any event sent by the system.\n\nIn order to lock your phone, Lawnchair uses the performGlobalAction Accessibility service.
- %1$d x %2$d
+ %1$dx%2$d
%s & %s
Ayarlar
Genel
- Colors, icon packs, notification dots
- Home screen
- Feed, grid, icons
+ Renkler, simge paketleri, bildirim rozetleri
+ Ana ekran
+ Akış, ızgara, simgeler
Alt Sıra
- Search bar, icon count
- App drawer
- Hidden apps, column count, icons
- Drawer search
- Web suggestions, global search
+ Arama çubuğu, simge sayısı
+ Uglama çekmecesi
+ Gizlenmiş uygulamalar, sutün sayısı, simgeler
+ Uygulama çekmecesi arama çubuğu
+ Web önerileri, global arama
Klasörler
- Row and column count
+ Satır ve sütun sayısı
Hareketler
- Taps and swipes
+ Dokunmalar ve kaydırmalar
En Son Uygulamalar
- Clear All button, corner radius
+ Tümünü Temizle tuşu, köşe yarıçapı
Hakkında
- App info
+ Uygulama Hakkında
Lawnchair\'i Yeniden Başlat
- Experimental features
+ Deneyimsel özellikler
- Font customization
+ Yazı tipi özelleştirmesi
Bazı metinler değişmeden kalır
- At a Glance calendar customization
+ Bir Bakışta takvim özelleştirme
Gregoryen olmayan takvim sistemlerinde tarihin gösterilmesine izin ver
- Increase maximum grid size limit
- Increase maximum allowed home screen grid size from 10 x 10 to 20 x 20
- Always reload icons
+ Maksimum ızgara sayısını yükselt
+ İzin verilen maksimum na ekran ızgara boyutunu 10 x 10\'dan 20 x 20\'ye artırın
+ Simgeleri her zaman yeniden yükle
Ön belleklenmiş simgeleri kullanmaktan kaçın
- Lock/unlock
- Prevent selected app from closing when pressing \"Clear all\"
+ Kilitle/kilidi aç
+ \"Tümünü Temizle\"ye basıldığında seçilen uygulamanın kapanmasını engelle
- To access shortcuts and additional features, set Lawnchair as your default launcher
- Notification dots
- Show notification counter
- Notification dot color
- Notification counter color
- Warning: Notification dot and counter colors don\'t have enough contrast with each other
- Warning: Notification dot and counter colors might not always have enough contrast with each other
+ Kısayollar ve ek özellikler için Lawnchair\'ı varsayılan olarak başlatmayı yapın
+ Bildirim rozetleri
+ Bildirim sayımı göster
+ Bildirim rozeti vurgu rengi
+ Bildirim sayacı rengi
+ Uyarı: Bildirim noktası ve sayaç renkleri birbiriyle yeterli kontrasta sahip değil
+ Uyarı: Bildirim noktası ve sayaç renkleri her zaman birbiriyle yeterli kontrasta sahip olmayabilir
Bildirim Erişimi Gerekli
- To show Notification Dots, turn on app notifications for %1$s
+ Bildirim Noktalarını göstermek için %1$s için uygulama bildirimlerini açın
- Icon style
- Icon shape
- Icon size
- Show labels
- Label size
- Use multiple lines
+ Simge stili
+ Simge şekli
+ Simge boyutu
+ Etiketleri göster
+ Etiket boyutu
+ Birden fazla satır kullan
- Transparent themed icons
+ Şeffaf temalı simgeler
Temalı ikonlarda saydam arkaplan kullan
- Auto-adaptive icons
- For all non-adaptive icons
- Background lightness
- Use 100% background lightness for white
- Reset custom icons
+ Otomatik uyarlanabilir simgeler
+ Uyarlanabilir olmayan tüm simgeler için
+ Arka plan açıklığı
+ Beyaz için %100 arka plan açıklığı kullan
+ Özel simgeleri sıfırla
Tüm özel simgeler sıfırlanacak. Devam etmek istiyor musun?
- Simgeler
+ Resimleyici
Varsayılanlara sıfırla
- Open external picker
- Pick icon from
- Couldn\'t load more icons
+ Harici seçiciyi aç
+ Şuradan simge seç
+ Daha fazla simge yüklenemedi
Sistem
Yuvarlak
Silindir
- Elmas
+ Elmalar
Yumurta
iOS
Sekizgen
- One UI
- Rounded square
- Sharp square
+ Tek kullanıcı arayüzü
+ Yuvarlak kare
+ Keskin kare
Kare
Yuvarlatılmış Kare
Damla
- Custom icon shape
- Create custom icon shape
- Edit custom icon shape
- Corner shape
+ Özel simge şekli
+ Özel simge şekli oluştur
+ Özel simge şeklini düzenleyin
+ Köşe şekli
Daire
Yumuşak
Keskin Köşe
- Top left
- Top right
- Bottom left
- Bottom right
- Export to clipboard
- Import from clipboard
- Clipboard doesn\'t contain a valid icon shape
+ Sol üst
+ Sağ üst
+ Sol alt
+ Sağ alt
+ Panoya aktar
+ Panodan içe aktar
+ Pano geçerli bir simge şekli içermiyor
- Icon pack
- Themed icon source
- System icons
- Themed icons
+ Simge paketi
+ Temalı simge kaynağı
+ Sistem simgeleri
+ Temalı simgeler
Kapat
- Home screen
- Home screen & app drawer
- Desteklenen bir simge paketi bulunamadı
+ Ana ekran
+ Ana ekran veamp; uygulama çekmecesi
+ Desteklenen bir simge paketi başarısız oldu
- Add fonts
- OTF and TTF fonts are supported
- Font bulunamadı
- Font (experimental)
+ Yazı tipleri ekle
+ OTF ve TTF yazı tipleri desteklenir
+ Yazı tipi hatası
+ Yazı tipi (deneysel)
Genel
Başlıklar
- Headings (medium)
+ Başlıklar (orta)
Gövde
- Body (medium)
+ Gövde (orta)
İtalik
İnce
- Extra light
+ Ekstra hafif
Aydınlık
Normal
Orta
Yarı Kalın
Kalın
- Extra bold
+ Ekstra kalın
En Kalın
+ Renk stili
+ Spritz
+ Tonal Nokta
+ Canlı
+ Etkileyici
+ Gökkuşağı
+ Meyve Salatası
+ İçerik
+ Tek renkli
Renkler
- Accent color
- Paletler
+ Vurgu rengi
+ Stroke color
+ Paletleyici
RGB
Kırmızı
Yeşil
Mavi
HSB
Renk Tonu
- Saturation
+ Doygunluk
Parlaklık
Hex
- Sliders
- Invalid color
+ Kaydırıcılar
+ Geçersiz renk
- Gregorian
- Persian
+ Gregoryen
+ Farsça
%1$s, %2$s
Şarj ediliyor
Şarj dolu
- Battery low
+ Pil zayıf
"%1$d%% — %2$s içinde tamamen dolacak"
Bir Bakışta
- What to show
+ Ne gösterilecek
Takvim
- Date & time
+ Tarih veamp; zaman
Tarih
Zaman
- Time format
- Follow system
- 12-hour format
- 24-hour format
+ Saat biçimi
+ Sistemi takip et
+ 12 saatlik biçim
+ 24 saatlik biçim
Hava durumu
- Battery status
+ Pil durumu
Şimdi Oynatılıyor
- Tap to set up
+ Kurulum için dokunun
To use %1$s, enable Notification Dots.
- Show on home screen
- At a Glance can be manually added to the home screen by placing the Lawnchair widget
+ Ana ekranda göster
+ Bir Bakışta Çim Sandalyesi widget\'ı yerleştirilerek ana ekrana manuel olarak eklenebilir
- At a Glance provider
+ Bir Bakışta sağlayıcı
Google
Google Arama
@@ -287,9 +298,9 @@
Haberler
Destek
Ürün
- Design & development
+ Tasarım ve amp; geliştirme
Geliştirme
- QuickSwitch maintenance
+ QuickSwitch bakımı
DevOps
Destek & Halkla İlişkiler
Teşekkürler
@@ -299,14 +310,14 @@
Backup and restore
-->
- Create backup
- What to back up
- Layout and settings
+ Yedek oluştur
+ Neler yedeklenmeli
+ Yerleşim ve ayarlar
Duvar Kağıdı
Yedek oluşturuldu
Yedek oluşturulamadı
- Restore backup
- What to restore
+ Yedeklemeyi geri yükle
+ Neler geri yüklenecek
Yedekleme geri yüklendi
Yedek oluşturulamadı
Geçersiz yedekleme dosyası
@@ -315,96 +326,101 @@
Gesture settings
-->
- Double tap
- Swipe up
- Swipe down
- Home button
- Back button
- Do nothing
+ İki kez hafifçe vurun
+ Yukarı kaydırın
+ Aşağı doğru kaydırın
+ Ana sayfa düğmesi
+ Geri düğmesi
+ Hiçbir şey yapma
Uyku
- Open notification panel
- Open app
+ Bildirim panelini aç
+ Uygulamayı aç
Aç %1$s
- Open app drawer
- Open app search
- Open search
- Pick app
- Admin permissions required
- To use Double-Tap to Sleep, set Lawnchair as a device admin app. Tap \"Open settings\", then tap \"Activate this device admin app.\"
+ Uygulama çekmecesini aç
+ Uygulama aramayı aç
+ Aramayı aç
+ Uygulama seç
+ Yönetici izinleri gerekli
+ Uyku için Çift Dokun özelliğini kullanmak için Lawnchair\'i cihaz yöneticisi uygulaması olarak ayarlayın. \"Ayarları aç\"a ve ardından \"Bu cihaz yöneticisi uygulamasını etkinleştir\"e dokunun.
Ekranı Kapatmak İçin Çift Dokunun kapatılacaktır.
- Turn on accessibility service
- To use Double-Tap to Sleep, turn on the Lawnchair accessibility service. Tap \"Open settings\", select \"Lawnchair\" and turn on \"Use Lawnchair.\"
- Open settings
+ Erişilebilirlik hizmetini açın
+ Uyku için Çift Dokun özelliğini kullanmak için Çim Sandalyesi erişilebilirlik hizmetini açın. \"Ayarları aç\"a dokunun, \"Çim Sandalyesi\"ni seçin ve \"Çim Sandalyesi Kullan\"ı açın.
+ Ayarları aç
- Lawnchair bug report
- %1$s crashed
- Upload crash log
+ Çim sandalyesi hata raporu
+ %1$s çöktü
+ Kilitlenme günlüğünü yükle
Yükleme Başarısız
Yükleniyor…
- Bug reports
- Upload status
- %d new reports
- Multiple new reports
+ Hata raporları
+ Yükleme durumu
+ %d yeni rapor
+ Birden fazla yeni rapor
- Home screen rotation
- Allow home screen rotation when device is rotated
- Add new apps to home screen
- Show feed
- Bir akış uygulaması yüklü değil
+ Ana ekranı döndürme
+ Cihaz döndürüldüğünde ana ekranın dönmesine izin ver
+ Enable wallpaper blur
+ Blur intensity
+ Factor threshold
+ Ana ekrana yeni uygulamalar ekleme
+ Yayını göster
+ Bir büyüme uygulaması yüklü değil
Akış
- Feed provider
- Scroll wallpaper
- Wallpaper depth effect
- Zoom in and out of the wallpaper when transitioning between areas of the launcher
- Top shadow
- Home screen grid
- Lock home screen
- Unlock home screen
- Home screen is locked
- Ana Ekran düzeninde değişiklik yapılmasını önle
+ Yayın sağlayıcı
+ Duvar kağıdını kaydır
+ Duvar kağıdı derinlik efekti
+ Başlatıcının alanları arasında geçiş yaparken duvar kağıdını yakınlaştırın ve uzaklaştırın
+ Üst gölge
+ Ana ekran ızgarası
+ Ana ekranı kilitle
+ Ana ekranın kilidini aç
+ Ana ekran kilitli
+ Ana Ekran düzeninde değişiklik yapılmasının önle
Nokta sayfalandırmasını göster
- Sayfa numarasının gösterirken çizgi yerine nokta kullan
- Use new pop-up style
- Use Material You\'s bouncy and slightly consolidated pop-up style
- Pop-up menu
- Show lock button
- Show system settings entry
- Show Edit button
- Status bar
- Show status bar
- Dark status bar
- Text color
+ Sayfa numarasının gösterirken çizgi yerine nokta kullanımı
+ Yeni açılır pencere stilini kullan
+ Material You\'nun hareketli ve biraz birleştirilmiş pop-up stilini kullanın
+ Açılır menü
+ Kilit düğmesini göster
+ Sistem ayarları girişini göster
+ Düzenleme düğmesini göster
+ Durum çubuğu
+ Durum çubuğunu göster
+ Karanlık durum çubuğu
+ Metin rengi
Aydınlık
Karanlık
- Rounded corners
- Allow overlap
- Enforce widget resizing
- Belirli bir boyutla kısıtlanmış widget\'ların yeniden boyutlandırılmasına izin ver
- Remove size constraints
- Widget\'ların maksimum ve minimum boyut kısıtlamalarını kaldır
+ Yuvarlatılmış köşeler
+ Çakışmaya izin ver
+ Widget\'ın yeniden boyutlandırılmasını zorunlu kıl
+ Belirli bir boyutla daraltılmış widget\'ların yeniden boyutlandırılmasına izin ver
+ Boyut kısıtlamalarını kaldırın
+ Widget\'ların maksimum ve minimum boyut sınırlamalarını kaldırır
- Show dock
- Search bar
- Search bar widget
+ Dock\'u göster
+ Arama çubuğu
+ Arama çubuğu widget\'ı
Devre dışı
- Google Search bar
+ Google Arama çubuğu
+ Opacity
+ Stroke
Köşe yarıçapı
- Apply accent color
- Search provider
- Dock icons
- Bottom padding
+ Vurgu rengini uygula
+ Arama sağlayıcısı
+ Yuva simgeleri
+ Alt dolgu
- App search
- %1$s and Lawnchair have a revenue share agreement.\n\nSearching with %1$s helps support Lawnchair.
+ Uygulama arama
+ %1$s ve Lawnchair\'in bir gelir paylaşımı sözleşmesi var.\n\n%1$s ile arama yapmak Lawnchair\'i desteklemeye yardımcı olur.
Uygulama
Web sitesi
Uygulama gerekli
@@ -413,43 +429,43 @@
Google Lens
Sesli Arama
- Hidden apps
- Load apps in bulk
- Load and display icons in bulk instead of individually
- Remember position
- Uygulama çekmecesini kapadıktan sonra bile pozisyonunu hatırla
- Show scrollbar
- App drawer columns
- Row height
- Horizontal padding
+ Gizli uygulamalar
+ Uygulamaları toplu olarak yükle
+ Simgeleri tek tek yüklemek yerine toplu olarak yükleyin ve görüntüleyin
+ Konumu hatırla
+ Uygulama çekmecesini kapattıktan sonra bile öğrendiğini hatırla
+ Kaydırma çubuğunu göster
+ Uygulama çekmecesi sütunları
+ Satır yüksekliği
+ Yatay dolgu
- Hide from app drawer
- Hidden apps (%1$d)
+ Uygulama çekmecesinden gizle
+ Gizli uygulamalar (%1$d)
- %1$d app
- %1$d apps
- Icon background opacity
- Icon background color
- Maximum folder columns
- Maximum folder rows
+ Simge arka plan opaklığı
+ Simge arka plan rengi
+ Maksimum klasör sütunları
+ Maksimum klasör satırı
- These settings will be ignored as Lawnchair isn\'t set as the Recents provider
- Incompatible system integration
- Your device is configured to have system gestures (known as Quickstep) provided by %1$s, but this version of %1$s isn\'t compatible with your Android version. To continue using your device, please uninstall %1$s updates or disable %1$s as a system gesture provider.
- Translucent background
- Background opacity
- Quick actions
+ Lawnchair, Son Kullanılanlar sağlayıcısı olarak ayarlanmadığından bu ayarlar göz ardı edilecek
+ Uyumsuz sistem entegrasyonu
+ Cihazınız %1$s tarafından sağlanan sistem hareketlerine (Quickstep olarak bilinir) sahip olacak şekilde yapılandırılmıştır, ancak %1$s\'nin bu sürümü Android sürümünüzle uyumlu değildir. Cihazınızı kullanmaya devam etmek için lütfen %1$s güncellemelerini kaldırın veya sistem hareketi sağlayıcısı olarak %1$s\'ı devre dışı bırakın.
+ Yarı saydam arka plan
+ Arka plan opaklığı
+ Hızlı işlemler
Paylaş
Lens
- Clear all
+ Tümünü temizle
Zorla kapat
- Screen corner radius
- Custom screen corner radius
- When you swipe up to open Recents, the current app follows your finger, shrinking into a card. Use this slider to adjust the corner radius of the card when it\'s nearly full screen so it matches the corners of your screen.
- Görev çubuğu
- Show taskbar (experimental)
+ Ekran köşe yarıçapı
+ Özel ekran köşe yarıçapı
+ Son Kullanılanlar\'ı açmak için yukarı kaydırdığınızda geçerli uygulama parmağınızı takip ederek bir karta küçülür. Kart neredeyse tam ekran olduğunda, ekranınızın köşeleriyle eşleşecek şekilde kartın köşe yarıçapını ayarlamak için bu kaydırıcıyı kullanın.
+ Görev çekmek
+ Görev çubuğunu göster (deneysel)
Ara
Uygulamaları Ara
- No apps found matching \"%1$s\"
+ \"%1$s\"
Web\'den
- Contacts from device
- Files from device
- Settings from device
- Search for more apps
- Startpage \'da ara
- No app store or browser installed
- Clear search history
- Clear search box
+ Cihazdaki kişiler
+ Cihazdaki dosyalar
+ Cihazdaki ayarlar
+ Daha fazla uygulama arayın
+ %1$s
+ Yüklü uygulama mağazası veya tarayıcı yok
+ Arama geçmişini temizle
+ Arama kutusunu temizle
Ara
- Show search bar
+ Arama çubuğunu göster
Klavyeyi otomatik göster
- Fuzzy search
- Approximate matching for app searches
+ Bulanık arama
+ Uygulama aramaları için yaklaşık eşleşme
Öneriler
- Show suggested apps at the top of the drawer
- Device search
- Search your phone contacts, files, and settings
- Show hidden apps in search results
- If full name is typed
- Search algorithm
+ Önerilen uygulamaları çekmecenin üst kısmında göster
+ Cihaz arama
+ Telefonunuzdaki kişiler, dosyalar ve ayarlarda arama yapın
+ Arama sonuçlarında gizli uygulamaları göster
+ Tam ad yazılırsa
+ Arama algoritması
Uygulama Araması
- Global search (on-device)
- Global search (via ASI)
+ Genel arama (cihazda)
+ Genel arama (ASI aracılığıyla)
- Show in search results
+ Arama sonuçlarında göster
Uygulamalar ve Kısayollar
- App shortcuts
+ Uygulama kısayolları
İnsanlar
- Pixel tips
- Android settings
+ Piksel ipuçları
+ Android ayarları
Dosya arama
Web önerileri
- Search history
+ Arama geçmişi
Hesap makinesi
Medya, dosyalar vb.
Kişiler ve fazlası
- Startpage ile
+ %1$s
- Maximum number of apps in search results
- Maximum number of people in search results
- Maximum number of files in search results
- Maximum number of settings entries in search results
- Maximum number of history entries in search results
- Maximum number of suggestions in search results
- Maximum web suggestion delay
+ Arama sonuçlarındaki maksimum uygulama sayısı
+ Arama sonuçlarındaki maksimum kişi sayısı
+ Arama sonuçlarındaki maksimum dosya sayısı
+ Arama sonuçlarındaki maksimum ayar girişi sayısı
+ Arama sonuçlarındaki maksimum geçmiş girişi sayısı
+ Arama sonuçlarındaki maksimum öneri sayısı
+ Maksimum web önerisi gecikmesi
- To search for contacts, grant contacts and phone permissions to Lawnchair
- To search your files, grant storage permissions to Lawnchair
- Grant permissions
+ Kişi aramak için Lawnchair\'e kişi ve telefon izinleri verin
+ Dosyalarınızı aramak için Çim Sandalyesine depolama izinleri verin
+ İzinleri ver
+ Çim Sandalyesi (oluşturma)
+ Web önerisi sağlayıcısı
+ Arama çubuğunda web önerisi sağlayıcı simgesini göster
+ Match dock search bar style
diff --git a/lawnchair/res/values-uk-rUA/strings.xml b/lawnchair/res/values-uk-rUA/strings.xml
index cfcdbe22642..41633d94dc0 100644
--- a/lawnchair/res/values-uk-rUA/strings.xml
+++ b/lawnchair/res/values-uk-rUA/strings.xml
@@ -221,9 +221,20 @@
Темна
Системний
Match wallpaper
+
+ Color style
+ Spritz
+ Tonal Spot
+ Vibrant
+ Expressive
+ Rainbow
+ Fruit Salad
+ Content
+ Monochromatic
Кольори
Accent color
+ Stroke color
Свярки
RGB
Червоний
@@ -357,6 +368,9 @@
Home screen rotation
Allow home screen rotation when device is rotated
+ Enable wallpaper blur
+ Blur intensity
+ Factor threshold
Add new apps to home screen
Show feed
Не встановлено додатків стрічки
@@ -397,6 +411,8 @@
Search bar widget
Вимкнено
Google Search bar
+ Opacity
+ Stroke
Заокрулення кутів
Apply accent color
Search provider
@@ -466,7 +482,7 @@
Files from device
Settings from device
Search for more apps
- Шукати в Головна сторінка
+ Search on %1$s
No app store or browser installed
Clear search history
Clear search box
@@ -500,7 +516,7 @@
Медія, файли та інше
Контакти та інше
- Через Startpage
+ Via %1$s
Maximum number of apps in search results
Maximum number of people in search results
@@ -513,4 +529,8 @@
To search for contacts, grant contacts and phone permissions to Lawnchair
To search your files, grant storage permissions to Lawnchair
Grant permissions
+ Lawnchair (compose)
+ Web suggestion provider
+ Show web suggestion provider icon in search bar
+ Match dock search bar style
diff --git a/lawnchair/res/values-ur-rIN/strings.xml b/lawnchair/res/values-ur-rIN/strings.xml
index 98e6f743ce0..1e5d312d1d0 100644
--- a/lawnchair/res/values-ur-rIN/strings.xml
+++ b/lawnchair/res/values-ur-rIN/strings.xml
@@ -221,9 +221,20 @@
اندھیرا
System
Match wallpaper
+
+ Color style
+ Spritz
+ Tonal Spot
+ Vibrant
+ Expressive
+ Rainbow
+ Fruit Salad
+ Content
+ Monochromatic
Colors
Accent color
+ Stroke color
Swatches
RGB
Red
@@ -357,6 +368,9 @@
Home screen rotation
Allow home screen rotation when device is rotated
+ Enable wallpaper blur
+ Blur intensity
+ Factor threshold
Add new apps to home screen
Show feed
No feed apps installed
@@ -397,6 +411,8 @@
Search bar widget
Disabled
Google Search bar
+ Opacity
+ Stroke
Corner radius
Apply accent color
Search provider
@@ -464,7 +480,7 @@
Files from device
Settings from device
Search for more apps
- Search on Startpage
+ Search on %1$s
No app store or browser installed
Clear search history
Clear search box
@@ -498,7 +514,7 @@
Media, files, and more
Contacts and more
- Via Startpage
+ Via %1$s
Maximum number of apps in search results
Maximum number of people in search results
@@ -511,4 +527,8 @@
To search for contacts, grant contacts and phone permissions to Lawnchair
To search your files, grant storage permissions to Lawnchair
Grant permissions
+ Lawnchair (compose)
+ Web suggestion provider
+ Show web suggestion provider icon in search bar
+ Match dock search bar style
diff --git a/lawnchair/res/values-ur-rPK/strings.xml b/lawnchair/res/values-ur-rPK/strings.xml
index 290ee6dca51..a8b0ee1ad51 100644
--- a/lawnchair/res/values-ur-rPK/strings.xml
+++ b/lawnchair/res/values-ur-rPK/strings.xml
@@ -221,9 +221,20 @@
Dark
System
Match wallpaper
+
+ Color style
+ Spritz
+ Tonal Spot
+ Vibrant
+ Expressive
+ Rainbow
+ Fruit Salad
+ Content
+ Monochromatic
Colors
Accent color
+ Stroke color
Swatches
RGB
Red
@@ -357,6 +368,9 @@
Home screen rotation
Allow home screen rotation when device is rotated
+ Enable wallpaper blur
+ Blur intensity
+ Factor threshold
Add new apps to home screen
Show feed
No feed apps installed
@@ -397,6 +411,8 @@
Search bar widget
Disabled
Google Search bar
+ Opacity
+ Stroke
Corner radius
Apply accent color
Search provider
@@ -464,7 +480,7 @@
Files from device
Settings from device
Search for more apps
- Search on Startpage
+ Search on %1$s
No app store or browser installed
Clear search history
Clear search box
@@ -498,7 +514,7 @@
Media, files, and more
Contacts and more
- Via Startpage
+ Via %1$s
Maximum number of apps in search results
Maximum number of people in search results
@@ -511,4 +527,8 @@
To search for contacts, grant contacts and phone permissions to Lawnchair
To search your files, grant storage permissions to Lawnchair
Grant permissions
+ Lawnchair (compose)
+ Web suggestion provider
+ Show web suggestion provider icon in search bar
+ Match dock search bar style
diff --git a/lawnchair/res/values-uz-rUZ/strings.xml b/lawnchair/res/values-uz-rUZ/strings.xml
index ba5b146cc0f..bf4dcb82602 100644
--- a/lawnchair/res/values-uz-rUZ/strings.xml
+++ b/lawnchair/res/values-uz-rUZ/strings.xml
@@ -222,9 +222,20 @@ Lawnchair tizim tomonidan yuborilgan har qanday hodisani bekor qiladi.\n\nTelefo
Qorong‘i
System
Match wallpaper
+
+ Color style
+ Spritz
+ Tonal Spot
+ Vibrant
+ Expressive
+ Rainbow
+ Fruit Salad
+ Content
+ Monochromatic
Colors
Accent color
+ Stroke color
Swatches
RGB
Red
@@ -358,6 +369,9 @@ Lawnchair tizim tomonidan yuborilgan har qanday hodisani bekor qiladi.\n\nTelefo
Home screen rotation
Allow home screen rotation when device is rotated
+ Enable wallpaper blur
+ Blur intensity
+ Factor threshold
Add new apps to home screen
Show feed
No feed apps installed
@@ -398,6 +412,8 @@ Lawnchair tizim tomonidan yuborilgan har qanday hodisani bekor qiladi.\n\nTelefo
Search bar widget
Disabled
Google Search bar
+ Opacity
+ Stroke
Burchak radiusi
Apply accent color
Search provider
@@ -465,7 +481,7 @@ Lawnchair tizim tomonidan yuborilgan har qanday hodisani bekor qiladi.\n\nTelefo
Files from device
Settings from device
Search for more apps
- Boʻyicha qidirish Startpage
+ Search on %1$s
No app store or browser installed
Clear search history
Clear search box
@@ -499,7 +515,7 @@ Lawnchair tizim tomonidan yuborilgan har qanday hodisani bekor qiladi.\n\nTelefo
Media, files, and more
Contacts and more
- Via Startpage
+ Via %1$s
Maximum number of apps in search results
Maximum number of people in search results
@@ -512,4 +528,8 @@ Lawnchair tizim tomonidan yuborilgan har qanday hodisani bekor qiladi.\n\nTelefo
To search for contacts, grant contacts and phone permissions to Lawnchair
To search your files, grant storage permissions to Lawnchair
Grant permissions
+ Lawnchair (compose)
+ Web suggestion provider
+ Show web suggestion provider icon in search bar
+ Match dock search bar style
diff --git a/lawnchair/res/values-vi-rVN/strings.xml b/lawnchair/res/values-vi-rVN/strings.xml
index c54ab66d19c..1d7c348093a 100644
--- a/lawnchair/res/values-vi-rVN/strings.xml
+++ b/lawnchair/res/values-vi-rVN/strings.xml
@@ -23,7 +23,7 @@
-->
Xem trước
Tạo
- Backup
+ Sao lưu
Khôi phục
Xoá
Reset
@@ -31,19 +31,19 @@
Khóa
Áp dụng
Tùy chỉnh
- Always
- Never
+ Luôn luôn
+ Không bao giờ
Bộ nhớ tạm thời
- Copy link
+ Sao chép liên kết
Sao chép
Dán
Đang tải…
Quản lí bởi Lawnchair
Tùy chỉnh
- Home settings
- System settings
- Change settings
+ Cài đặt trang chủ
+ Cài đặt hệ thống
+ Thay đổi cài đặt
Hình nền
- Background opacity
+ Độ mờ nền
- Copied to clipboard
- Item removed
+ Đã sao chép
+ Đã xoá mục
- What to show
+ Những gì để hiển thị
To lock your phone when performing a gesture, Lawnchair requires accessibility access.\n\nLawnchair doesn\'t watch any user action, though the privilege to do so is required for all accessibility services. Lawnchair discards any event sent by the system.\n\nIn order to lock your phone, Lawnchair uses the performGlobalAction Accessibility service.
%1$d x %2$d
@@ -221,9 +221,20 @@
Tối
Hệ thống
Match wallpaper
+
+ Color style
+ Spritz
+ Tonal Spot
+ Vibrant
+ Expressive
+ Rainbow
+ Fruit Salad
+ Content
+ Monochromatic
Màu
Accent color
+ Stroke color
Mẫu màu
RGB
Đỏ
@@ -357,6 +368,9 @@
Home screen rotation
Allow home screen rotation when device is rotated
+ Enable wallpaper blur
+ Blur intensity
+ Factor threshold
Add new apps to home screen
Show feed
Chưa cài đặt bản tin
@@ -397,6 +411,8 @@
Search bar widget
Đã vô hiệu hoá
Google Search bar
+ Opacity
+ Stroke
Bán kính góc
Apply accent color
Search provider
@@ -463,7 +479,7 @@
Files from device
Settings from device
Search for more apps
- Tìm kiếm trên Startpage
+ Search on %1$s
No app store or browser installed
Clear search history
Clear search box
@@ -497,7 +513,7 @@
Media, files, and more
Danh bạ và mục khác
- Via Startpage
+ Via %1$s
Maximum number of apps in search results
Maximum number of people in search results
@@ -510,4 +526,8 @@
To search for contacts, grant contacts and phone permissions to Lawnchair
To search your files, grant storage permissions to Lawnchair
Grant permissions
+ Lawnchair (compose)
+ Web suggestion provider
+ Show web suggestion provider icon in search bar
+ Match dock search bar style
diff --git a/lawnchair/res/values-zh-rCN/strings.xml b/lawnchair/res/values-zh-rCN/strings.xml
index 92590c58393..1d2def97ec8 100644
--- a/lawnchair/res/values-zh-rCN/strings.xml
+++ b/lawnchair/res/values-zh-rCN/strings.xml
@@ -23,7 +23,7 @@
-->
预览
创建
- Backup
+ 备份
恢复
删除
重置
@@ -34,15 +34,15 @@
总是
从不
剪贴板
- Copy link
+ 复制链接
复制
粘贴
正在加载…
由 Lawnchair 管理
- 设置
- Home settings
- System settings
+ 首选项
+ 主页设置
+ 系统设置
更改设置
壁纸
- Background opacity
+ 背景不透明度
- Copied to clipboard
- 已移除
+ 已复制到剪贴板
+ 项目已移除
选择要显示的项目
@@ -83,11 +83,11 @@
通用
颜色、图标包与通知圆点
主屏幕
- 订阅、网格、图标
+ 订阅源、网格、图标
Dock 栏
搜索栏、图标数量
应用抽屉
- 隐藏应用、列数、图标
+ 隐藏的应用、列数、图标
抽屉搜索
网络建议、全局搜索
文件夹
@@ -104,111 +104,111 @@
自定义字体
部分文字保持不变
自定义资讯一览日历
- 显示其他历法日期
- 提升最大网格大小限制
+ 允许显示非公历系统的日期
+ 增加最大网格大小限制
将主屏幕网格大小限制从 10 × 10 提升到 20 × 20
- Always reload icons
- 不使用图标包中的已缓存图标
+ 始终重载图标
+ 避免使用图标包中的缓存图标
锁定/解锁
- Prevent selected app from closing when pressing \"Clear all\"
+ 按“全部清除”时防止所选应用关闭
- To access shortcuts and additional features, set Lawnchair as your default launcher
- 通知角标
+ 要访问快捷方式和其他功能,请将 Lawnchair 设置为默认启动器
+ 通知圆点
显示通知数量
- Notification dot color
- Notification counter color
- Warning: Notification dot and counter colors don\'t have enough contrast with each other
- Warning: Notification dot and counter colors might not always have enough contrast with each other
+ 通知圆点颜色
+ 通知计数颜色
+ 警告:通知圆点和计数颜色彼此之间对比度不够
+ 警告:通知圆点和计数颜色可能并不总是具有足够的对比度
需要通知使用权来读取内容
- To show Notification Dots, turn on app notifications for %1$s
+ 要显示通知圆点,请为 %1$s 开启应用通知
- Icon style
+ 图标样式
图标形状
图标大小
- Show labels
- Label size
- Use multiple lines
+ 显示标签
+ 标签大小
+ 使用多行
- Transparent themed icons
- 在带主题的图标上使用透明背景
- Auto-adaptive icons
- For all non-adaptive icons
- Background lightness
- Use 100% background lightness for white
- Reset custom icons
- 所有自定义图标将被重置,无法恢复。真的要这样做吗?
+ 透明主题图标
+ 在主题图标上使用透明背景
+ 自适应图标
+ 用于全部非自适应图标
+ 背景亮度
+ 使用 100% 背景亮度为白色
+ 重置自定义图标
+ 所有自定义图标将被重置。您想要继续吗?
图标
重置为默认
打开外部选择器
- Pick icon from
- Couldn\'t load more icons
+ 选取图标自
+ 无法加载更多图标
- 跟随系统
+ 系统
圆形
- 柱面
+ 圆柱形
菱形
- 鹅卵石
+ 鹅卵石形
iOS
八边形
One UI
- Rounded square
- Sharp square
+ 圆角方形
+ 尖角方形
正方形
大圆角
泪珠形
- Custom icon shape
- Create custom icon shape
- Edit custom icon shape
- Corner shape
+ 自定义图标形状
+ 创建自定义图标形状
+ 编辑自定义图标形状
+ 边角形状
圆形
方圆形
切角
- Top left
- Top right
- Bottom left
- Bottom right
- Export to clipboard
- Import from clipboard
- Clipboard doesn\'t contain a valid icon shape
+ 左上
+ 右上
+ 左下
+ 右下
+ 导出到剪贴板
+ 从剪贴板导入
+ 剪贴板不包含有效的图标形状
- Icon pack
- Themed icon source
- System icons
- Themed icons
- 关闭
+ 图标包
+ 主题图标来源
+ 系统图标
+ 主题图标
+ 关
主屏幕
- Home screen & app drawer
+ 主屏幕与应用抽屉
没有支持的图标包
- Add fonts
- OTF and TTF fonts are supported
+ 添加字体
+ 支持 OTF 和 TTF 格式字体
未找到字体
字体(实验性功能)
通用
标题
- Headings (medium)
+ 标题(中)
正文
- Body (medium)
+ 正文(中)
斜体
细体
- Extra light
+ 超细
浅色
常规
略粗
中粗
粗体
- Extra bold
+ 超粗
黑体
+ 颜色样式
+ 喷洒
+ 色调点
+ 鲜活
+ 张力
+ 彩虹
+ 水果沙拉
+ 内容
+ 单色
颜色
强调色
- 色调
+ 描边颜色
+ 色板
RGB
红
绿
@@ -235,7 +246,7 @@
亮度
Hex
滑块
- Invalid color
+ 颜色无效
正在充电
- 已充满电
- Battery low
- "%1$d%% — %2$s后充满"
+ 已充满
+ 电量低
+ "%1$d%% — %2$s 后充满"
资讯一览
- What to show
+ 显示什么
日历
- Date & time
+ 日期与时间
日期
时间
- Time format
- Follow system
- 12-hour format
- 24-hour format
+ 时间格式
+ 跟随系统
+ 12小时制
+ 24小时制
天气
- Battery status
+ 电池状态
正在播放
- Tap to set up
- 要使用 %1$s, 请启用通知角标。
+ 点击以设置
+ 要使用 %1$s,请启用通知圆点。
- Show on home screen
- At a Glance can be manually added to the home screen by placing the Lawnchair widget
+ 在主屏幕显示
+ 资讯一览可以通过将 Lawnchair 小部件放置在主屏幕上来手动添加
- At a Glance provider
+ 资讯一览提供程序
Google
Google 搜索
" — "
- 第 %1$d 页,共 %2$d 页
+ 第 %1$d / %2$d 页
周五, 3月3日
- Create backup
- What to back up
- Layout and settings
+ 创建备份
+ 备份什么
+ 布局和设置
壁纸
备份已创建
创建备份失败
- Restore backup
- What to restore
+ 恢复备份
+ 恢复什么
备份已恢复
恢复备份失败
无效的备份文件
@@ -315,96 +326,101 @@
Gesture settings
-->
- Double tap
- Swipe up
- Swipe down
- Home button
- Back button
- Do nothing
- 锁屏
- Open notification panel
- Open app
+ 双击
+ 上滑
+ 下滑
+ 主屏键
+ 返回键
+ 什么也不做
+ 息屏
+ 打开通知面板
+ 打开应用
打开 %1$s
- Open app drawer
- Open app search
- Open search
- Pick app
- Admin permissions required
- To use Double-Tap to Sleep, set Lawnchair as a device admin app. Tap \"Open settings\", then tap \"Activate this device admin app.\"
+ 打开应用抽屉
+ 打开应用搜索
+ 打开搜索
+ 选择应用
+ 需要管理员权限
+ 要使用双击息屏,请把 Lawnchair 设置为设备管理员应用,点击\"打开设置\",然后点击\"启用设备管理员应用\"
双击息屏功能将被关闭。
- Turn on accessibility service
- To use Double-Tap to Sleep, turn on the Lawnchair accessibility service. Tap \"Open settings\", select \"Lawnchair\" and turn on \"Use Lawnchair.\"
- Open settings
+ 打开无障碍服务
+ 要使用双击息屏,请打开 Lawnchair 的无障碍服务,点击\"打开设置\",然后选择\"Lawnchair\",然后打开开关
+ 打开设置
- Lawnchair bug report
- %1$s crashed
- Upload crash log
+ Lawnchair 错误报告
+ %1$s 已崩溃
+ 上传崩溃日志
上传失败
正在上传…
- Bug reports
- Upload status
- %d new reports
- Multiple new reports
+ 错误报告
+ 上传进度
+ %d 个新报告
+ 多个新报告
- Home screen rotation
- Allow home screen rotation when device is rotated
- Add new apps to home screen
- Show feed
+ 主屏幕旋转
+ 允许在设备旋转时旋转主屏幕
+ 启用壁纸模糊
+ 模糊强度
+ 因素阈值
+ 添加新应用到主屏
+ 显示订阅
未安装订阅源。
订阅内容
- Feed provider
- Scroll wallpaper
- Wallpaper depth effect
- Zoom in and out of the wallpaper when transitioning between areas of the launcher
- Top shadow
- Home screen grid
- Lock home screen
- Unlock home screen
- Home screen is locked
+ 订阅提供
+ 壁纸滚动
+ 壁纸缩放特效
+ 在启动器区域之间过渡时缩放壁纸
+ 顶部阴影
+ 主屏幕网格
+ 锁定主屏幕
+ 解锁主屏幕
+ 主屏幕已被锁定
固定主屏幕布局
显示页面指示器
使用点而不是线段作为页面指示器
- Use new pop-up style
- Use Material You\'s bouncy and slightly consolidated pop-up style
- Pop-up menu
- Show lock button
- Show system settings entry
- Show Edit button
- Status bar
- Show status bar
- Dark status bar
- Text color
+ 使用新的弹出样式
+ 使用 Material You 的弹性和略微缩小的弹出样式
+ 弹出菜单
+ 显示锁定按钮
+ 显示系统设置条目
+ 显示编辑按钮
+ 状态栏
+ 显示状态栏
+ 深色状态栏
+ 文本颜色
浅色
深色
- Rounded corners
- Allow overlap
- Enforce widget resizing
+ 圆角
+ 允许重叠
+ 强制调整小部件大小
允许调整固定尺寸的小组件大小
- Remove size constraints
+ 移除大小限制
删除小部件的最小和最大大小限制
- Show dock
- Search bar
- Search bar widget
+ 显示 Dock 栏
+ 搜索栏
+ 搜索栏小部件
已禁用
- Google Search bar
+ Google 搜索栏
+ 不透明度
+ 描边
圆角半径
- Apply accent color
- Search provider
- Dock icons
- Bottom padding
+ 应用强调色
+ 搜索提供程序
+ Dock 栏图标
+ 底部边距
- App search
- %1$s and Lawnchair have a revenue share agreement.\n\nSearching with %1$s helps support Lawnchair.
+ 应用搜索
+ %1$s 和 Lawnchair 有收益分成协议。\n\n使用 %1$s 进行搜索有助于支持 Lawnchair。
应用
网站
未安装应用
@@ -413,42 +429,42 @@
Google 智能镜头
语音搜索
- Hidden apps
- Load apps in bulk
- Load and display icons in bulk instead of individually
- Remember position
+ 隐藏的应用
+ 批量加载应用
+ 批量加载和显示图标,而不是单独加载和显示图标
+ 记住位置
离开抽屉后记住应用抽屉位置
- Show scrollbar
- App drawer columns
- Row height
- Horizontal padding
+ 显示滚动条
+ 应用程序抽屉列数
+ 行高
+ 水平边距
- Hide from app drawer
- Hidden apps (%1$d)
+ 从应用抽屉中隐藏
+ 隐藏的应用(%1$d)
- - %1$d apps
+ - %1$d 个应用
- Icon background opacity
- Icon background color
- Maximum folder columns
- Maximum folder rows
+ 图标背景不透明度
+ 图标背景颜色
+ 最大文件夹列数
+ 最大文件夹行数
- These settings will be ignored as Lawnchair isn\'t set as the Recents provider
- Incompatible system integration
- Your device is configured to have system gestures (known as Quickstep) provided by %1$s, but this version of %1$s isn\'t compatible with your Android version. To continue using your device, please uninstall %1$s updates or disable %1$s as a system gesture provider.
- Translucent background
- Background opacity
- Quick actions
+ 由于 Lawnchair 未设置为“最近应用”提供程序,因此这些设置将被忽略
+ 不兼容的系统集成
+ 您的设备已配置为使用 %1$s 提供的系统手势(称为 Quickstep),但此版本的 %1$s 与您的 Android 版本不兼容。要继续使用您的设备,请卸载 %1$s 更新或禁用 %1$s 作为系统手势提供程序。
+ 半透明背景
+ 背景不透明度
+ 快捷操作
分享
- 相机
- Clear all
- 结束
- Screen corner radius
- Custom screen corner radius
- When you swipe up to open Recents, the current app follows your finger, shrinking into a card. Use this slider to adjust the corner radius of the card when it\'s nearly full screen so it matches the corners of your screen.
+ 智能镜头
+ 清除全部
+ 强制关闭
+ 屏幕圆角半径
+ 自定义屏幕圆角半径
+ 当您向上滑动打开“最近应用”时,当前应用会跟随您的手指缩小为卡片。当卡片几乎全屏时,使用此滑块调整卡片的圆角半径,使其与屏幕的圆角相匹配。
任务栏
- Show taskbar (experimental)
+ 显示任务栏(实验性)
搜索
搜索应用
- No apps found matching \"%1$s\"
+ 未找到与“%1$s”匹配的应用
来自网络
- Contacts from device
- Files from device
- Settings from device
- Search for more apps
- 在 Startpage 上搜索
- No app store or browser installed
- Clear search history
- Clear search box
+ 设备上的联系人
+ 设备上的文件
+ 设备上的设置
+ 搜索更多应用
+ 在 %1$s 上搜索
+ 应用商店或浏览器没安装
+ 清除搜索记录
+ 清除搜索框
搜索
- Show search bar
+ 显示搜索栏
自动显示键盘
- Fuzzy search
- Approximate matching for app searches
+ 模糊搜索
+ 应用搜索近似匹配
建议
- Show suggested apps at the top of the drawer
- Device search
- Search your phone contacts, files, and settings
- Show hidden apps in search results
- If full name is typed
- Search algorithm
+ 在抽屉顶部显示推荐的应用
+ 设备搜索
+ 搜索您的手机联系人、文件和设置
+ 在搜索结果中显示隐藏的应用
+ 如果输入全名
+ 搜索算法
应用搜索
- Global search (on-device)
- Global search (via ASI)
+ 全局搜索(设备上)
+ 全局搜索(通过 ASI)
- Show in search results
- 应用程序 & 快捷方式
- App shortcuts
+ 在搜索结果中显示
+ 应用与快捷方式
+ 应用快捷方式
联系人
- Pixel tips
- Android settings
+ Pixel 提示
+ Android 设置
文件
网络建议
- Search history
+ 搜索历史记录
计算器
媒体、文件和更多
联系人及更多
- 通过 Startpage
+ 通过 %1$s
- Maximum number of apps in search results
- Maximum number of people in search results
- Maximum number of files in search results
- Maximum number of settings entries in search results
- Maximum number of history entries in search results
- Maximum number of suggestions in search results
- Maximum web suggestion delay
+ 搜索结果中的最大应用数
+ 搜索结果中的最大人数
+ 搜索结果中的最大文件数
+ 搜索结果中的最大设置条目数
+ 搜索结果中的最大历史记录条目数
+ 搜索结果中的最大建议数
+ 最大网络建议延迟
- To search for contacts, grant contacts and phone permissions to Lawnchair
- To search your files, grant storage permissions to Lawnchair
- Grant permissions
+ 要搜索联系人,请向 Lawnchair 授予联系人和电话权限
+ 要搜索您的文件,请向 Lawnchair 授予存储权限
+ 授予权限
+ Lawnchair(组合)
+ 网络建议提供程序
+ 在搜索栏中显示网络建议提供程序图标
+ 匹配 Dock 搜索栏样式
diff --git a/lawnchair/res/values-zh-rTW/strings.xml b/lawnchair/res/values-zh-rTW/strings.xml
index 1878625e1bf..8da4c361ec7 100644
--- a/lawnchair/res/values-zh-rTW/strings.xml
+++ b/lawnchair/res/values-zh-rTW/strings.xml
@@ -221,9 +221,20 @@
深色
系統
Match wallpaper
+
+ Color style
+ Spritz
+ Tonal Spot
+ Vibrant
+ Expressive
+ Rainbow
+ Fruit Salad
+ Content
+ Monochromatic
色彩
Accent color
+ Stroke color
色票
RGB
紅
@@ -357,6 +368,9 @@
Home screen rotation
Allow home screen rotation when device is rotated
+ Enable wallpaper blur
+ Blur intensity
+ Factor threshold
Add new apps to home screen
Show feed
尚未安裝資訊頁提供服務。
@@ -397,6 +411,8 @@
Search bar widget
停用
Google Search bar
+ Opacity
+ Stroke
圓角大小
Apply accent color
Search provider
@@ -463,7 +479,7 @@
Files from device
Settings from device
Search for more apps
- 使用 Startpage 搜尋
+ Search on %1$s
No app store or browser installed
Clear search history
Clear search box
@@ -497,7 +513,7 @@
媒體、檔案、雜項
聯絡人與其他項目
- 由 Startpage 提供
+ Via %1$s
Maximum number of apps in search results
Maximum number of people in search results
@@ -510,4 +526,8 @@
To search for contacts, grant contacts and phone permissions to Lawnchair
To search your files, grant storage permissions to Lawnchair
Grant permissions
+ Lawnchair (compose)
+ Web suggestion provider
+ Show web suggestion provider icon in search bar
+ Match dock search bar style
diff --git a/lawnchair/res/values/config.xml b/lawnchair/res/values/config.xml
index 0e8b5902e57..e9796dca78e 100644
--- a/lawnchair/res/values/config.xml
+++ b/lawnchair/res/values/config.xml
@@ -81,6 +81,9 @@
lawnchair
+
+ startpage
+
true
true
false
@@ -130,7 +133,7 @@
- 1.0
- 1.0
- 1.0
- - 0.0
+ - 0.4
- 5
- 3
- 10
diff --git a/lawnchair/res/values/strings.xml b/lawnchair/res/values/strings.xml
index 957cc8e9f2e..45adad68b41 100644
--- a/lawnchair/res/values/strings.xml
+++ b/lawnchair/res/values/strings.xml
@@ -280,6 +280,17 @@
System
Match wallpaper
+
+ Color style
+ Spritz
+ Tonal Spot
+ Vibrant
+ Expressive
+ Rainbow
+ Fruit Salad
+ Content
+ Monochromatic
+
Colors
Accent color
@@ -351,6 +362,11 @@
Battery status
Now Playing
+
+ Maximum number of targets
+ Open Smartspacer settings
+ Smartspacer settings
+
Tap to set up
To use %1$s, enable Notification Dots.
@@ -391,6 +407,7 @@
Acknowledgements
Translate
+ Donate
Media, files, and more
Contacts and more
- Via Startpage
+ Via %1$s
Maximum number of apps in search results
@@ -681,5 +706,9 @@
To search for contacts, grant contacts and phone permissions to Lawnchair
To search your files, grant storage permissions to Lawnchair
Grant permissions
+ Lawnchair (compose)
+ Web suggestion provider
+ Show web suggestion provider icon in search bar
+ Match dock search bar style
diff --git a/lawnchair/src/app/lawnchair/LawnchairProcessInitializer.kt b/lawnchair/src/app/lawnchair/LawnchairProcessInitializer.kt
index 14936e0606f..aefce0d5a86 100644
--- a/lawnchair/src/app/lawnchair/LawnchairProcessInitializer.kt
+++ b/lawnchair/src/app/lawnchair/LawnchairProcessInitializer.kt
@@ -4,7 +4,7 @@ import android.content.Context
import androidx.annotation.Keep
import androidx.arch.core.util.Function
import app.lawnchair.bugreport.LawnchairBugReporter
-import app.lawnchair.theme.color.ColorTokens
+import app.lawnchair.theme.color.tokens.ColorTokens
import com.android.launcher3.Utilities
import com.android.launcher3.icons.ThemedIconDrawable
import com.android.quickstep.QuickstepProcessInitializer
diff --git a/lawnchair/src/app/lawnchair/allapps/AllAppsSearchInput.kt b/lawnchair/src/app/lawnchair/allapps/AllAppsSearchInput.kt
index c7ae7ca3194..1d7079d7e77 100644
--- a/lawnchair/src/app/lawnchair/allapps/AllAppsSearchInput.kt
+++ b/lawnchair/src/app/lawnchair/allapps/AllAppsSearchInput.kt
@@ -22,12 +22,22 @@ import androidx.core.view.ViewCompat
import androidx.core.view.isInvisible
import androidx.core.view.isVisible
import androidx.core.widget.addTextChangedListener
+import androidx.lifecycle.lifecycleScope
import app.lawnchair.launcher
import app.lawnchair.preferences.PreferenceManager
import app.lawnchair.preferences2.PreferenceManager2
+import app.lawnchair.preferences2.subscribeBlocking
+import app.lawnchair.qsb.AssistantIconView
+import app.lawnchair.qsb.LawnQsbLayout.Companion.getLensIntent
+import app.lawnchair.qsb.LawnQsbLayout.Companion.getSearchProvider
+import app.lawnchair.qsb.providers.Google
+import app.lawnchair.qsb.providers.GoogleGo
+import app.lawnchair.qsb.providers.PixelSearch
+import app.lawnchair.qsb.setThemedIconResource
import app.lawnchair.search.LawnchairRecentSuggestionProvider
import app.lawnchair.search.algorithms.LawnchairSearchAlgorithm
import app.lawnchair.theme.drawable.DrawableTokens
+import app.lawnchair.util.viewAttachedScope
import com.android.launcher3.Insettable
import com.android.launcher3.LauncherState
import com.android.launcher3.R
@@ -42,6 +52,7 @@ import com.android.launcher3.util.Themes
import com.patrykmichalik.opto.core.firstBlocking
import java.util.Locale
import kotlin.math.max
+import kotlinx.coroutines.launch
class AllAppsSearchInput(context: Context, attrs: AttributeSet?) :
FrameLayout(context, attrs),
@@ -56,6 +67,9 @@ class AllAppsSearchInput(context: Context, attrs: AttributeSet?) :
private lateinit var actionButton: ImageButton
private lateinit var searchIcon: ImageButton
+ private lateinit var micIcon: AssistantIconView
+ private lateinit var lensIcon: ImageButton
+
private val qsbMarginTopAdjusting = resources.getDimensionPixelSize(R.dimen.qsb_margin_top_adjusting)
private val allAppsSearchVerticalOffset = resources.getDimensionPixelSize(R.dimen.all_apps_search_vertical_offset)
@@ -89,6 +103,23 @@ class AllAppsSearchInput(context: Context, attrs: AttributeSet?) :
hint = ViewCompat.requireViewById(this, R.id.hint)
input = ViewCompat.requireViewById(this, R.id.input)
+
+ searchIcon = ViewCompat.requireViewById(this, R.id.search_icon)
+ micIcon = ViewCompat.requireViewById(this, R.id.mic_btn)
+ lensIcon = ViewCompat.requireViewById(this, R.id.lens_btn)
+
+ val shouldShowIcons = prefs2.matchHotseatQsbStyle.firstBlocking()
+
+ val searchProvider = getSearchProvider(context, prefs2)
+ val isGoogle = searchProvider == Google || searchProvider == GoogleGo || searchProvider == PixelSearch
+ val supportsLens = searchProvider == Google || searchProvider == PixelSearch
+
+ val lensIntent = getLensIntent(context)
+ val voiceIntent = AssistantIconView.getVoiceIntent(searchProvider, context)
+
+ micIcon.isVisible = shouldShowIcons && voiceIntent != null
+ lensIcon.isVisible = shouldShowIcons && supportsLens && lensIntent != null
+
with(input) {
if (prefs2.searchAlgorithm.firstBlocking() != LawnchairSearchAlgorithm.APP_SEARCH) {
setHint(R.string.all_apps_device_search_hint)
@@ -97,6 +128,8 @@ class AllAppsSearchInput(context: Context, attrs: AttributeSet?) :
}
addTextChangedListener {
actionButton.isVisible = !it.isNullOrEmpty()
+ micIcon.isVisible = shouldShowIcons && voiceIntent != null && it.isNullOrEmpty()
+ lensIcon.isVisible = shouldShowIcons && supportsLens && lensIntent != null && it.isNullOrEmpty()
}
}
@@ -108,10 +141,40 @@ class AllAppsSearchInput(context: Context, attrs: AttributeSet?) :
}
}
- searchIcon = ViewCompat.requireViewById(this, R.id.search_icon)
- with(searchIcon) {
- isVisible = true
- // todo implement search feature
+ prefs2.themedHotseatQsb.subscribeBlocking(scope = viewAttachedScope) { themed ->
+ with(searchIcon) {
+ isVisible = true
+
+ val iconRes = if (themed) searchProvider.themedIcon else searchProvider.icon
+ if (shouldShowIcons) {
+ setThemedIconResource(
+ resId = iconRes,
+ themed = themed || iconRes == R.drawable.ic_qsb_search,
+ method = searchProvider.themingMethod,
+ )
+ }
+
+ setOnClickListener {
+ val launcher = context.launcher
+ launcher.lifecycleScope.launch {
+ searchProvider.launch(launcher)
+ }
+ }
+ }
+ with(micIcon) {
+ setIcon(isGoogle, themed)
+ setOnClickListener {
+ context.startActivity(voiceIntent)
+ }
+ }
+ with(lensIcon) {
+ if (lensIntent != null) {
+ setThemedIconResource(R.drawable.ic_lens_color, themed)
+ setOnClickListener {
+ runCatching { context.startActivity(lensIntent) }
+ }
+ }
+ }
}
if (prefs.searchResulRecentSuggestion.get()) {
diff --git a/lawnchair/src/app/lawnchair/allapps/FallbackSearchInputView.kt b/lawnchair/src/app/lawnchair/allapps/FallbackSearchInputView.kt
index 6b0d4138529..a507ea38cf7 100644
--- a/lawnchair/src/app/lawnchair/allapps/FallbackSearchInputView.kt
+++ b/lawnchair/src/app/lawnchair/allapps/FallbackSearchInputView.kt
@@ -5,7 +5,7 @@ import android.content.Context
import android.util.AttributeSet
import android.view.Gravity
import androidx.core.graphics.ColorUtils
-import app.lawnchair.theme.color.ColorTokens
+import app.lawnchair.theme.color.tokens.ColorTokens
import app.lawnchair.util.EditTextExtensions.setCursorColor
import app.lawnchair.util.EditTextExtensions.setTextSelectHandleColor
import com.android.launcher3.ExtendedEditText
diff --git a/lawnchair/src/app/lawnchair/allapps/views/SearchItemBackground.kt b/lawnchair/src/app/lawnchair/allapps/views/SearchItemBackground.kt
index 1520225e5c1..e3ff68a6453 100644
--- a/lawnchair/src/app/lawnchair/allapps/views/SearchItemBackground.kt
+++ b/lawnchair/src/app/lawnchair/allapps/views/SearchItemBackground.kt
@@ -6,7 +6,7 @@ import android.graphics.Paint
import android.graphics.Path
import android.graphics.RectF
import android.view.View
-import app.lawnchair.theme.color.ColorTokens
+import app.lawnchair.theme.color.tokens.ColorTokens
import com.android.launcher3.R
class SearchItemBackground(
diff --git a/lawnchair/src/app/lawnchair/allapps/views/SearchResultIcon.kt b/lawnchair/src/app/lawnchair/allapps/views/SearchResultIcon.kt
index 060d80863e5..74f6ff93e33 100644
--- a/lawnchair/src/app/lawnchair/allapps/views/SearchResultIcon.kt
+++ b/lawnchair/src/app/lawnchair/allapps/views/SearchResultIcon.kt
@@ -12,8 +12,8 @@ import androidx.core.view.isInvisible
import androidx.core.view.isVisible
import app.lawnchair.launcher
import app.lawnchair.search.adapter.SHORTCUT
-import app.lawnchair.search.adapter.SearchResultActionCallBack
import app.lawnchair.search.adapter.SearchTargetCompat
+import app.lawnchair.search.model.SearchResultActionCallBack
import app.lawnchair.util.runOnMainThread
import com.android.launcher3.BubbleTextView
import com.android.launcher3.LauncherAppState
diff --git a/lawnchair/src/app/lawnchair/allapps/views/SearchResultIconRow.kt b/lawnchair/src/app/lawnchair/allapps/views/SearchResultIconRow.kt
index e1da7410537..f10a801f8cb 100644
--- a/lawnchair/src/app/lawnchair/allapps/views/SearchResultIconRow.kt
+++ b/lawnchair/src/app/lawnchair/allapps/views/SearchResultIconRow.kt
@@ -11,9 +11,9 @@ import app.lawnchair.allapps.views.SearchResultView.Companion.FLAG_HIDE_SUBTITLE
import app.lawnchair.font.FontManager
import app.lawnchair.search.adapter.HISTORY
import app.lawnchair.search.adapter.SETTINGS
-import app.lawnchair.search.adapter.SearchResultActionCallBack
import app.lawnchair.search.adapter.SearchTargetCompat
import app.lawnchair.search.adapter.WEB_SUGGESTION
+import app.lawnchair.search.model.SearchResultActionCallBack
import com.android.app.search.LayoutType
import com.android.launcher3.R
import com.android.launcher3.touch.ItemClickHandler
diff --git a/lawnchair/src/app/lawnchair/allapps/views/SearchResultRightLeftIcon.kt b/lawnchair/src/app/lawnchair/allapps/views/SearchResultRightLeftIcon.kt
index 0a8425fa4f8..ab30fd1ad29 100644
--- a/lawnchair/src/app/lawnchair/allapps/views/SearchResultRightLeftIcon.kt
+++ b/lawnchair/src/app/lawnchair/allapps/views/SearchResultRightLeftIcon.kt
@@ -10,8 +10,8 @@ import android.widget.TextView
import androidx.core.view.ViewCompat
import app.lawnchair.font.FontManager
import app.lawnchair.launcher
-import app.lawnchair.search.adapter.SearchResultActionCallBack
import app.lawnchair.search.adapter.SearchTargetCompat
+import app.lawnchair.search.model.SearchResultActionCallBack
import app.lawnchair.util.AppInfo
import app.lawnchair.util.AppInfoHelper
import app.lawnchair.util.ImageViewWrapper
diff --git a/lawnchair/src/app/lawnchair/allapps/views/SearchResultText.kt b/lawnchair/src/app/lawnchair/allapps/views/SearchResultText.kt
index fe4e1148b3d..d0e85716098 100644
--- a/lawnchair/src/app/lawnchair/allapps/views/SearchResultText.kt
+++ b/lawnchair/src/app/lawnchair/allapps/views/SearchResultText.kt
@@ -13,9 +13,9 @@ import app.lawnchair.search.LawnchairRecentSuggestionProvider
import app.lawnchair.search.adapter.HEADER_JUSTIFY
import app.lawnchair.search.adapter.SPACE
import app.lawnchair.search.adapter.SPACE_MINI
-import app.lawnchair.search.adapter.SearchResultActionCallBack
import app.lawnchair.search.adapter.SearchTargetCompat
-import app.lawnchair.theme.color.ColorTokens
+import app.lawnchair.search.model.SearchResultActionCallBack
+import app.lawnchair.theme.color.tokens.ColorTokens
import com.android.launcher3.R
class SearchResultText(context: Context, attrs: AttributeSet?) :
diff --git a/lawnchair/src/app/lawnchair/allapps/views/SearchResultView.kt b/lawnchair/src/app/lawnchair/allapps/views/SearchResultView.kt
index 15ff17adeb5..7334ee58a2f 100644
--- a/lawnchair/src/app/lawnchair/allapps/views/SearchResultView.kt
+++ b/lawnchair/src/app/lawnchair/allapps/views/SearchResultView.kt
@@ -8,9 +8,9 @@ import app.lawnchair.search.adapter.CONTACT
import app.lawnchair.search.adapter.FILES
import app.lawnchair.search.adapter.MARKET_STORE
import app.lawnchair.search.adapter.START_PAGE
-import app.lawnchair.search.adapter.SearchResultActionCallBack
import app.lawnchair.search.adapter.SearchTargetCompat
import app.lawnchair.search.adapter.WEB_SUGGESTION
+import app.lawnchair.search.model.SearchResultActionCallBack
import com.android.app.search.LayoutType
sealed interface SearchResultView {
diff --git a/lawnchair/src/app/lawnchair/backup/ui/CreateBackupScreen.kt b/lawnchair/src/app/lawnchair/backup/ui/CreateBackupScreen.kt
index add91a3177e..5682d0bfb28 100644
--- a/lawnchair/src/app/lawnchair/backup/ui/CreateBackupScreen.kt
+++ b/lawnchair/src/app/lawnchair/backup/ui/CreateBackupScreen.kt
@@ -118,7 +118,7 @@ fun CreateBackupScreen(
PreferenceLayout(
label = stringResource(id = R.string.create_backup),
modifier = modifier,
- backArrowVisible = LocalIsExpandedScreen.current,
+ backArrowVisible = !LocalIsExpandedScreen.current,
scrollState = if (isPortrait) null else scrollState,
) {
DisposableEffect(contents, hasLiveWallpaper, hasStoragePermission) {
diff --git a/lawnchair/src/app/lawnchair/backup/ui/RestoreBackupScreen.kt b/lawnchair/src/app/lawnchair/backup/ui/RestoreBackupScreen.kt
index 0c40fe35380..602118fbac2 100644
--- a/lawnchair/src/app/lawnchair/backup/ui/RestoreBackupScreen.kt
+++ b/lawnchair/src/app/lawnchair/backup/ui/RestoreBackupScreen.kt
@@ -91,7 +91,7 @@ fun RestoreBackupScreen(
PreferenceLayout(
label = stringResource(id = R.string.restore_backup),
modifier = modifier,
- backArrowVisible = LocalIsExpandedScreen.current,
+ backArrowVisible = !LocalIsExpandedScreen.current,
scrollState = if (isPortrait) null else scrollState,
) {
when (uiState) {
diff --git a/lawnchair/src/app/lawnchair/overview/LawnchairOverviewActionsView.kt b/lawnchair/src/app/lawnchair/overview/LawnchairOverviewActionsView.kt
index bb9281fdefe..1b9757ec47c 100644
--- a/lawnchair/src/app/lawnchair/overview/LawnchairOverviewActionsView.kt
+++ b/lawnchair/src/app/lawnchair/overview/LawnchairOverviewActionsView.kt
@@ -80,30 +80,36 @@ class LawnchairOverviewActionsView @JvmOverloads constructor(
prefs.recentsActionScreenshot.subscribeChanges(this, ::updateVisibilities)
prefs.recentsActionShare.subscribeChanges(this, ::updateVisibilities)
prefs.recentsActionLocked.subscribeChanges(this, ::updateVisibilities)
+ prefs.recentActionOrder.subscribeChanges(this, ::updateVisibilities)
updateVisibilities()
}
private fun updateVisibilities() {
- val buttons = mutableListOf()
+ val order = prefs.recentActionOrder.get().split(",").map { it.toInt() }
+
+ val buttonMap = mutableMapOf()
if (prefs.recentsActionScreenshot.get() && !isOnePlusStock) {
- buttons.add(screenshotAction)
+ buttonMap[0] = screenshotAction
}
if (prefs.recentsActionShare.get()) {
- buttons.add(shareAction)
+ buttonMap[1] = shareAction
}
if (prefs.recentsActionLens.get() && isLensAvailable()) {
- buttons.add(lensAction)
+ buttonMap[2] = lensAction
}
if (prefs.recentsActionLocked.get()) {
- buttons.add(lockedAction)
+ buttonMap[3] = lockedAction
}
if (prefs.recentsActionClearAll.get()) {
- buttons.add(clearAllAction)
+ buttonMap[4] = clearAllAction
}
+
+ val buttonsInOrder = order.mapNotNull { buttonMap[it] }
+
container.removeAllViews()
container.addView(createSpace())
- buttons.forEach { view ->
+ buttonsInOrder.forEach { view ->
view.isVisible = true
container.addView(view)
container.addView(createSpace())
diff --git a/lawnchair/src/app/lawnchair/preferences/PreferenceManager.kt b/lawnchair/src/app/lawnchair/preferences/PreferenceManager.kt
index 24331b7e065..023f00f36ef 100644
--- a/lawnchair/src/app/lawnchair/preferences/PreferenceManager.kt
+++ b/lawnchair/src/app/lawnchair/preferences/PreferenceManager.kt
@@ -66,6 +66,8 @@ class PreferenceManager private constructor(private val context: Context) : Base
override fun unflattenValue(value: String) = value
}
+ val recentActionOrder = StringPref("pref_recentActionOrder", "0,1,2,3,4", recreate)
+
private val fontCache = FontCache.INSTANCE.get(context)
val fontWorkspace = FontPref("pref_workspaceFont", fontCache.uiText, recreate)
val fontHeading = FontPref("pref_fontHeading", fontCache.uiRegular, recreate)
@@ -92,6 +94,11 @@ class PreferenceManager private constructor(private val context: Context) : Base
val themedIcons = BoolPref("themed_icons", true, recreate)
val drawerThemedIcons = BoolPref("drawer_themed_icons", false, recreate)
val hotseatQsbCornerRadius = FloatPref("pref_hotseatQsbCornerRadius", 1F, recreate)
+ val hotseatQsbAlpha = IntPref("pref_searchHotseatTranparency", 100, recreate)
+ val hotseatQsbStrokeWidth = FloatPref("pref_searchStrokeWidth", 0F, recreate)
+ val enableWallpaperBlur = BoolPref("pref_enableWallpaperBlur", false, recreate)
+ val wallpaperBlur = IntPref("pref_wallpaperBlur", 25, recreate)
+ val wallpaperBlurFactorThreshold = IntPref("pref_wallpaperBlurFactor", 25, recreate)
val recentsActionScreenshot = BoolPref("pref_recentsActionScreenshot", !isOnePlusStock)
val recentsActionShare = BoolPref("pref_recentsActionShare", isOnePlusStock)
diff --git a/lawnchair/src/app/lawnchair/preferences2/PreferenceManager2.kt b/lawnchair/src/app/lawnchair/preferences2/PreferenceManager2.kt
index 6e41a558fa7..52e41868d4b 100644
--- a/lawnchair/src/app/lawnchair/preferences2/PreferenceManager2.kt
+++ b/lawnchair/src/app/lawnchair/preferences2/PreferenceManager2.kt
@@ -35,11 +35,13 @@ import app.lawnchair.icons.shape.IconShapeManager
import app.lawnchair.preferences.PreferenceManager as LawnchairPreferenceManager
import app.lawnchair.qsb.providers.QsbSearchProvider
import app.lawnchair.search.algorithms.LawnchairSearchAlgorithm
+import app.lawnchair.search.algorithms.data.WebSearchProvider
import app.lawnchair.smartspace.model.SmartspaceCalendar
import app.lawnchair.smartspace.model.SmartspaceMode
import app.lawnchair.smartspace.model.SmartspaceTimeFormat
import app.lawnchair.theme.color.ColorMode
import app.lawnchair.theme.color.ColorOption
+import app.lawnchair.theme.color.ColorStyle
import app.lawnchair.ui.preferences.components.HiddenAppsInSearch
import app.lawnchair.util.kotlinxJson
import com.android.launcher3.InvariantDeviceProfile
@@ -110,6 +112,22 @@ class PreferenceManager2 private constructor(private val context: Context) : Pre
defaultValue = context.resources.getBoolean(R.bool.config_default_always_reload_icons),
)
+ val colorStyle = preference(
+ key = stringPreferencesKey("color_style"),
+ defaultValue = ColorStyle.fromString("tonal_spot"),
+ parse = ColorStyle::fromString,
+ save = ColorStyle::toString,
+ onSet = { reloadHelper.restart() },
+ )
+
+ val strokeColorStyle = preference(
+ key = stringPreferencesKey(name = "stroke_color"),
+ parse = ColorOption::fromString,
+ save = ColorOption::toString,
+ onSet = { reloadHelper.restart() },
+ defaultValue = ColorOption.fromString(context.getString(R.string.config_default_accent_color)),
+ )
+
val notificationDotColor = preference(
key = stringPreferencesKey(name = "notification_dot_color"),
parse = ColorOption::fromString,
@@ -272,7 +290,7 @@ class PreferenceManager2 private constructor(private val context: Context) : Pre
val searchAlgorithm = preference(
key = stringPreferencesKey(name = "search_algorithm"),
- defaultValue = LawnchairSearchAlgorithm.APP_SEARCH,
+ defaultValue = LawnchairSearchAlgorithm.LOCAL_SEARCH,
onSet = { reloadHelper.recreate() },
)
@@ -388,12 +406,25 @@ class PreferenceManager2 private constructor(private val context: Context) : Pre
defaultValue = context.resources.getBoolean(R.bool.config_default_enable_fuzzy_search),
)
+ val matchHotseatQsbStyle = preference(
+ key = booleanPreferencesKey(name = "use_drawer_search_icon"),
+ defaultValue = false,
+ )
+
+ val webSuggestionProvider = preference(
+ key = stringPreferencesKey(name = "web_suggestion_provider"),
+ defaultValue = WebSearchProvider.fromString(context.resources.getString(R.string.config_default_web_suggestion_provider)),
+ parse = { WebSearchProvider.fromString(it) },
+ save = { it.toString() },
+ onSet = { reloadHelper.recreate() },
+ )
+
val maxAppSearchResultCount = preference(
key = intPreferencesKey(name = "max_search_result_count"),
defaultValue = resourceProvider.getInt(R.dimen.config_default_search_max_result_count),
)
- val maxSuggestionResultCount = preference(
+ val maxWebSuggestionResultCount = preference(
key = intPreferencesKey(name = "max_suggestion_result_count"),
defaultValue = resourceProvider.getInt(R.dimen.config_default_suggestion_max_result_count),
)
@@ -546,6 +577,12 @@ class PreferenceManager2 private constructor(private val context: Context) : Pre
defaultValue = context.getString(R.string.smartspace_icu_date_pattern_custom_wday_month_day_no_year),
)
+ val smartspacerMaxCount = preference(
+ key = intPreferencesKey(name = "smartspace_max_count"),
+ defaultValue = 5,
+ onSet = { reloadHelper.recreate() },
+ )
+
val wallpaperDepthEffect = preference(
key = booleanPreferencesKey(name = "enable_wallpaper_depth_effect"),
defaultValue = true,
diff --git a/lawnchair/src/app/lawnchair/qsb/AssistantIconView.kt b/lawnchair/src/app/lawnchair/qsb/AssistantIconView.kt
index 26be58495cc..aa2853fe2d1 100644
--- a/lawnchair/src/app/lawnchair/qsb/AssistantIconView.kt
+++ b/lawnchair/src/app/lawnchair/qsb/AssistantIconView.kt
@@ -2,10 +2,12 @@ package app.lawnchair.qsb
import android.annotation.SuppressLint
import android.content.Context
+import android.content.Intent
import android.util.AttributeSet
import android.widget.ImageButton
import androidx.core.view.isVisible
import app.lawnchair.preferences2.PreferenceManager2
+import app.lawnchair.qsb.providers.QsbSearchProvider
import com.android.launcher3.R
@SuppressLint("AppCompatCustomView")
@@ -13,9 +15,9 @@ class AssistantIconView(context: Context, attrs: AttributeSet?) : ImageButton(co
init {
val provider = LawnQsbLayout.getSearchProvider(context, PreferenceManager2.getInstance(context))
- val intent = if (provider.supportVoiceIntent) provider.createVoiceIntent() else null
- if (intent == null || !LawnQsbLayout.resolveIntent(context, intent)) isVisible = false
+ val intent = getVoiceIntent(provider, context)
+ isVisible = intent != null
setOnClickListener {
context.startActivity(intent)
@@ -34,4 +36,20 @@ class AssistantIconView(context: Context, attrs: AttributeSet?) : ImageButton(co
method = themingMethod,
)
}
+
+ companion object {
+
+ fun getVoiceIntent(
+ provider: QsbSearchProvider,
+ context: Context,
+ ): Intent? {
+ val intent = if (provider.supportVoiceIntent) provider.createVoiceIntent() else null
+
+ return if (intent == null || !LawnQsbLayout.resolveIntent(context, intent)) {
+ null
+ } else {
+ intent
+ }
+ }
+ }
}
diff --git a/lawnchair/src/app/lawnchair/qsb/LawnQsbLayout.kt b/lawnchair/src/app/lawnchair/qsb/LawnQsbLayout.kt
index 1afd9741959..359f8662e79 100644
--- a/lawnchair/src/app/lawnchair/qsb/LawnQsbLayout.kt
+++ b/lawnchair/src/app/lawnchair/qsb/LawnQsbLayout.kt
@@ -6,6 +6,8 @@ import android.content.ComponentName
import android.content.Context
import android.content.Intent
import android.graphics.Color
+import android.graphics.Paint
+import android.graphics.drawable.LayerDrawable
import android.graphics.drawable.PaintDrawable
import android.util.AttributeSet
import android.widget.FrameLayout
@@ -16,6 +18,7 @@ import androidx.core.view.descendants
import androidx.core.view.isVisible
import androidx.lifecycle.lifecycleScope
import app.lawnchair.HeadlessWidgetsManager
+import app.lawnchair.animateToAllApps
import app.lawnchair.launcher
import app.lawnchair.launcherNullable
import app.lawnchair.preferences.PreferenceManager
@@ -26,6 +29,7 @@ import app.lawnchair.qsb.providers.Google
import app.lawnchair.qsb.providers.GoogleGo
import app.lawnchair.qsb.providers.PixelSearch
import app.lawnchair.qsb.providers.QsbSearchProvider
+import app.lawnchair.theme.color.ColorOption
import app.lawnchair.util.pendingIntent
import app.lawnchair.util.repeatOnAttached
import app.lawnchair.util.viewAttachedScope
@@ -36,6 +40,9 @@ import com.android.launcher3.qsb.QsbContainerView
import com.android.launcher3.util.Themes
import com.android.launcher3.views.ActivityContext
import com.patrykmichalik.opto.core.firstBlocking
+import com.patrykmichalik.opto.core.onEach
+import kotlinx.coroutines.CoroutineScope
+import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.collect
import kotlinx.coroutines.flow.flatMapLatest
@@ -52,6 +59,9 @@ class LawnQsbLayout(context: Context, attrs: AttributeSet?) : FrameLayout(contex
private lateinit var preferenceManager: PreferenceManager
private lateinit var preferenceManager2: PreferenceManager2
private var searchPendingIntent: PendingIntent? = null
+ private val coroutineScope = CoroutineScope(Dispatchers.Default)
+
+ private var strokeColor: ColorOption? = null
@OptIn(ExperimentalCoroutinesApi::class)
override fun onFinishInflate() {
@@ -64,6 +74,11 @@ class LawnQsbLayout(context: Context, attrs: AttributeSet?) : FrameLayout(contex
preferenceManager = PreferenceManager.getInstance(context)
preferenceManager2 = PreferenceManager2.getInstance(context)
+ preferenceManager2.strokeColorStyle.onEach(launchIn = coroutineScope) {
+ strokeColor = it
+ setUpBackground()
+ }
+
setUpBackground()
clipIconRipples()
@@ -94,7 +109,12 @@ class LawnQsbLayout(context: Context, attrs: AttributeSet?) : FrameLayout(contex
setOnClickListener {
val launcher = context.launcher
launcher.lifecycleScope.launch {
- searchProvider.launch(launcher)
+ if (preferenceManager2.matchHotseatQsbStyle.firstBlocking()) {
+ launcher.appsView.searchUiManager.editText?.showKeyboard(true)
+ launcher.animateToAllApps()
+ } else {
+ searchProvider.launch(launcher)
+ }
}
}
if (searchProvider == Google) {
@@ -108,6 +128,9 @@ class LawnQsbLayout(context: Context, attrs: AttributeSet?) : FrameLayout(contex
}
subscribeGoogleSearchWidget()
}
+
+ preferenceManager.hotseatQsbAlpha.subscribeChanges(this::setUpBackground)
+ preferenceManager.hotseatQsbStrokeWidth.subscribeChanges(this::setUpBackground)
}
override fun onMeasure(widthMeasureSpec: Int, heightMeasureSpec: Int) {
@@ -152,9 +175,7 @@ class LawnQsbLayout(context: Context, attrs: AttributeSet?) : FrameLayout(contex
}
private fun setUpLensIcon() {
- val lensIntent = Intent.makeMainActivity(ComponentName(LENS_PACKAGE, LENS_ACTIVITY))
- .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED)
- if (context.packageManager.resolveActivity(lensIntent, 0) == null) return
+ val lensIntent = getLensIntent(context) ?: return
with(lensIcon) {
isVisible = true
@@ -175,13 +196,32 @@ class LawnQsbLayout(context: Context, attrs: AttributeSet?) : FrameLayout(contex
}
private fun setUpBackground(themed: Boolean = false) {
+ val transparency = preferenceManager.hotseatQsbAlpha.get()
val cornerRadius = getCornerRadius(context, preferenceManager)
- val color = if (themed) Themes.getColorBackgroundFloating(context) else Themes.getAttrColor(context, R.attr.qsbFillColor)
+ val baseColor = if (themed) Themes.getColorBackgroundFloating(context) else Themes.getAttrColor(context, R.attr.qsbFillColor)
+ val alphaValue = (transparency * 255) / 100
+ val color = Color.argb(alphaValue, Color.red(baseColor), Color.green(baseColor), Color.blue(baseColor))
+ val strokeColor = strokeColor
+ val strokeWidth = preferenceManager.hotseatQsbStrokeWidth.get()
+
+ val backgroundDrawable = PaintDrawable(color).apply {
+ setCornerRadius(cornerRadius)
+ }
+
+ val strokeDrawable = PaintDrawable().apply {
+ paint.style = Paint.Style.STROKE
+ paint.color = strokeColor?.colorPreferenceEntry?.lightColor?.invoke(context) ?: Themes.getColorAccent(context)
+ paint.strokeWidth = strokeWidth
+ setCornerRadius(cornerRadius)
+ }
+
+ val combinedDrawable = LayerDrawable(arrayOf(backgroundDrawable, strokeDrawable))
+
+ val qsbBackground = if (strokeWidth != 0f) combinedDrawable else backgroundDrawable
+
with(inner) {
clipToOutline = cornerRadius > 0
- background = PaintDrawable(color).apply {
- setCornerRadius(cornerRadius)
- }
+ background = qsbBackground
}
}
@@ -189,6 +229,14 @@ class LawnQsbLayout(context: Context, attrs: AttributeSet?) : FrameLayout(contex
private const val LENS_PACKAGE = "com.google.ar.lens"
private const val LENS_ACTIVITY = "com.google.vr.apps.ornament.app.lens.LensLauncherActivity"
+ fun getLensIntent(context: Context): Intent? {
+ val lensIntent = Intent.makeMainActivity(ComponentName(LENS_PACKAGE, LENS_ACTIVITY))
+ .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED)
+ if (context.packageManager.resolveActivity(lensIntent, 0) == null) return null
+
+ return lensIntent
+ }
+
fun getSearchProvider(
context: Context,
preferenceManager: PreferenceManager2,
diff --git a/lawnchair/src/app/lawnchair/qsb/QsbIconUtil.kt b/lawnchair/src/app/lawnchair/qsb/QsbIconUtil.kt
index 565e1211d5a..af9cae16b2c 100644
--- a/lawnchair/src/app/lawnchair/qsb/QsbIconUtil.kt
+++ b/lawnchair/src/app/lawnchair/qsb/QsbIconUtil.kt
@@ -4,7 +4,7 @@ import android.graphics.drawable.LayerDrawable
import android.widget.ImageView
import androidx.annotation.DrawableRes
import androidx.core.content.res.ResourcesCompat
-import app.lawnchair.theme.color.ColorTokens
+import app.lawnchair.theme.color.tokens.ColorTokens
import com.android.launcher3.R
fun ImageView.setThemedIconResource(
diff --git a/lawnchair/src/app/lawnchair/qsb/providers/QsbSearchProvider.kt b/lawnchair/src/app/lawnchair/qsb/providers/QsbSearchProvider.kt
index aec2c946683..585b8f5f911 100644
--- a/lawnchair/src/app/lawnchair/qsb/providers/QsbSearchProvider.kt
+++ b/lawnchair/src/app/lawnchair/qsb/providers/QsbSearchProvider.kt
@@ -132,6 +132,7 @@ sealed class QsbSearchProvider(
Presearch,
Bing,
Brave,
+ Yandex,
Startpage,
)
diff --git a/lawnchair/src/app/lawnchair/qsb/providers/Yandex.kt b/lawnchair/src/app/lawnchair/qsb/providers/Yandex.kt
new file mode 100644
index 00000000000..f4ef4aab310
--- /dev/null
+++ b/lawnchair/src/app/lawnchair/qsb/providers/Yandex.kt
@@ -0,0 +1,21 @@
+package app.lawnchair.qsb.providers
+
+import android.content.Intent
+import com.android.launcher3.R
+
+data object Yandex : QsbSearchProvider(
+ id = "yandex",
+ name = R.string.search_provider_yandex,
+ icon = R.drawable.ic_yandex,
+ themedIcon = R.drawable.ic_yandex_tinted,
+ packageName = "com.yandex.searchapp",
+ className = "ru.yandex.searchplugin.MainActivity",
+ supportVoiceIntent = true,
+ website = "https://ya.ru/",
+) {
+
+ override fun handleCreateVoiceIntent(): Intent =
+ Intent(action)
+ .addFlags(INTENT_FLAGS)
+ .setClassName(packageName, "ru.yandex.searchplugin.AssistantActivityAlias")
+}
diff --git a/lawnchair/src/app/lawnchair/search/LawnchairSearchAdapterProvider.kt b/lawnchair/src/app/lawnchair/search/LawnchairSearchAdapterProvider.kt
index dcaa719a889..c51b52d6ab8 100644
--- a/lawnchair/src/app/lawnchair/search/LawnchairSearchAdapterProvider.kt
+++ b/lawnchair/src/app/lawnchair/search/LawnchairSearchAdapterProvider.kt
@@ -7,9 +7,8 @@ import android.view.ViewGroup
import androidx.core.util.contains
import app.lawnchair.allapps.views.SearchItemDecorator
import app.lawnchair.allapps.views.SearchResultView
-import app.lawnchair.allapps.views.SearchResultView.Companion.EXTRA_QUICK_LAUNCH
import app.lawnchair.search.adapter.SearchAdapterItem
-import app.lawnchair.search.adapter.SearchResultActionCallBack
+import app.lawnchair.search.model.SearchResultActionCallBack
import com.android.app.search.LayoutType
import com.android.launcher3.DeviceProfile
import com.android.launcher3.R
@@ -71,7 +70,7 @@ class LawnchairSearchAdapterProvider(
): BaseAllAppsAdapter.ViewHolder {
val view = layoutInflater.inflate(layoutIdMap[viewType], parent, false)
val grid: DeviceProfile = mLauncher.deviceProfile
- val horizontalMargin = if (grid.isTablet) grid.allAppsPadding.left + grid.allAppsPadding.right + 48 else grid.allAppsPadding.left + grid.allAppsPadding.right
+ val horizontalMargin = grid.allAppsPadding.left + grid.allAppsPadding.right
if (viewType != SEARCH_RESULT_ICON) {
val layoutParams = ViewGroup.MarginLayoutParams(view.layoutParams)
@@ -124,14 +123,5 @@ class LawnchairSearchAdapterProvider(
LayoutType.WIDGET_LIVE to SEARCH_RESULT_RECENT_TILE,
LayoutType.CALCULATOR to SEARCH_RESULT_CALCULATOR,
)
-
- fun setFirstItemQuickLaunch(items: List) {
- val hasQuickLaunch = items.any { it.searchTarget.extras.getBoolean(EXTRA_QUICK_LAUNCH, false) }
- if (!hasQuickLaunch) {
- items.firstOrNull()?.searchTarget?.extras?.apply {
- putBoolean(EXTRA_QUICK_LAUNCH, true)
- }
- }
- }
}
}
diff --git a/lawnchair/src/app/lawnchair/search/adapter/GenerateSearchTarget.kt b/lawnchair/src/app/lawnchair/search/adapter/SearchTargetFactory.kt
similarity index 59%
rename from lawnchair/src/app/lawnchair/search/adapter/GenerateSearchTarget.kt
rename to lawnchair/src/app/lawnchair/search/adapter/SearchTargetFactory.kt
index 217fc0d07ae..0b270645963 100644
--- a/lawnchair/src/app/lawnchair/search/adapter/GenerateSearchTarget.kt
+++ b/lawnchair/src/app/lawnchair/search/adapter/SearchTargetFactory.kt
@@ -3,6 +3,7 @@ package app.lawnchair.search.adapter
import android.content.Context
import android.content.Intent
import android.content.pm.PackageManager
+import android.content.pm.ShortcutInfo
import android.graphics.BitmapFactory
import android.graphics.drawable.Icon
import android.net.Uri
@@ -21,34 +22,63 @@ import app.lawnchair.search.algorithms.data.FolderInfo
import app.lawnchair.search.algorithms.data.IFileInfo
import app.lawnchair.search.algorithms.data.RecentKeyword
import app.lawnchair.search.algorithms.data.SettingInfo
-import app.lawnchair.theme.color.ColorTokens
+import app.lawnchair.search.algorithms.data.WebSearchProvider
+import app.lawnchair.theme.color.tokens.ColorTokens
import app.lawnchair.util.createTextBitmap
import app.lawnchair.util.file2Uri
import app.lawnchair.util.mimeCompat
import com.android.app.search.LayoutType
import com.android.launcher3.R
+import com.android.launcher3.model.data.AppInfo
import com.android.launcher3.util.ComponentKey
import com.android.launcher3.util.PackageManagerHelper
import java.io.File
import java.io.IOException
import java.io.InputStream
+import java.security.MessageDigest
import java.util.Locale
+import okio.ByteString
+
+class SearchTargetFactory(
+ private val context: Context,
+) {
+ fun createAppSearchTarget(appInfo: AppInfo, asRow: Boolean = false): SearchTargetCompat {
+ val componentName = appInfo.componentName
+ val user = appInfo.user
+ return SearchTargetCompat.Builder(
+ SearchTargetCompat.RESULT_TYPE_APPLICATION,
+ if (asRow) LayoutType.SMALL_ICON_HORIZONTAL_TEXT else LayoutType.ICON_SINGLE_VERTICAL_TEXT,
+ generateHashKey(ComponentKey(componentName, user).toString()),
+ ).apply {
+ setPackageName(componentName.packageName)
+ setUserHandle(user)
+ setExtras(bundleOf("class" to componentName.className))
+ }.build()
+ }
-class GenerateSearchTarget(private val context: Context) {
-
- private val marketSearchComponent = resolveMarketSearchActivity()
+ fun createShortcutTarget(shortcutInfo: ShortcutInfo): SearchTargetCompat {
+ return SearchTargetCompat.Builder(
+ SearchTargetCompat.RESULT_TYPE_SHORTCUT,
+ LayoutType.SMALL_ICON_HORIZONTAL_TEXT,
+ "shortcut_" + generateHashKey("${shortcutInfo.`package`}|${shortcutInfo.userHandle}|${shortcutInfo.id}"),
+ ).apply {
+ setShortcutInfo(shortcutInfo)
+ setUserHandle(shortcutInfo.userHandle)
+ setExtras(Bundle())
+ }.build()
+ }
- internal fun getSuggestionTarget(suggestion: String): SearchTargetCompat {
- val url = getStartPageUrl(suggestion)
+ fun createWebSuggestionsTarget(suggestion: String, suggestionProvider: String): SearchTargetCompat {
+ val url = WebSearchProvider.fromString(suggestionProvider).getSearchUrl(suggestion)
val browserIntent = Intent(Intent.ACTION_VIEW, Uri.parse(url))
val id = suggestion + url
- val action = SearchActionCompat.Builder(id, suggestion)
- .setIcon(
+ val action = SearchActionCompat.Builder(id, suggestion).apply {
+ setIcon(
Icon.createWithResource(context, R.drawable.ic_allapps_search)
.setTint(ColorTokens.TextColorSecondary.resolveColor(context)),
)
- .setIntent(browserIntent)
- .build()
+ setIntent(browserIntent)
+ }.build()
return createSearchTarget(
id,
action,
@@ -58,7 +88,7 @@ class GenerateSearchTarget(private val context: Context) {
)
}
- internal fun getCalculationTarget(
+ internal fun createCalculatorTarget(
calculation: Calculation,
): SearchTargetCompat {
val result = calculation.result
@@ -75,16 +105,37 @@ class GenerateSearchTarget(private val context: Context) {
val extras = bundleOf()
- return createCalculatorTarget(
+ return createSearchTarget(
id,
action,
+ LayoutType.CALCULATOR,
+ SearchTargetCompat.RESULT_TYPE_CALCULATOR,
+ "",
extras,
)
}
- internal fun getRecentKeywordTarget(recentKeyword: RecentKeyword): SearchTargetCompat {
+ fun createHeaderTarget(header: String, pkg: String = HEADER): SearchTargetCompat {
+ val id = "header_$header"
+ val action = SearchActionCompat.Builder(id, header)
+ .setIcon(
+ Icon.createWithResource(context, R.drawable.ic_allapps_search)
+ .setTint(ColorTokens.TextColorPrimary.resolveColor(context)),
+ )
+ .setIntent(Intent())
+ .build()
+ return createSearchTarget(
+ id,
+ action,
+ LayoutType.TEXT_HEADER,
+ SearchTargetCompat.RESULT_TYPE_SECTION_HEADER,
+ pkg,
+ )
+ }
+
+ fun createSearchHistoryTarget(recentKeyword: RecentKeyword, suggestionProvider: String): SearchTargetCompat {
val value = recentKeyword.getValueByKey("display1") ?: ""
- val url = getStartPageUrl(value)
+ val url = WebSearchProvider.fromString(suggestionProvider).getSearchUrl(value)
val browserIntent = Intent(Intent.ACTION_VIEW, Uri.parse(url))
val id = recentKeyword.data.toString() + url
val action = SearchActionCompat.Builder(id, value)
@@ -103,25 +154,7 @@ class GenerateSearchTarget(private val context: Context) {
)
}
- internal fun getHeaderTarget(header: String, pkg: String = HEADER): SearchTargetCompat {
- val id = "header_$header"
- val action = SearchActionCompat.Builder(id, header)
- .setIcon(
- Icon.createWithResource(context, R.drawable.ic_allapps_search)
- .setTint(ColorTokens.TextColorPrimary.resolveColor(context)),
- )
- .setIntent(Intent())
- .build()
- return createSearchTarget(
- id,
- action,
- LayoutType.TEXT_HEADER,
- SearchTargetCompat.RESULT_TYPE_SECTION_HEADER,
- pkg,
- )
- }
-
- internal fun getSettingSearchItem(info: SettingInfo): SearchTargetCompat? {
+ fun createSettingsTarget(info: SettingInfo): SearchTargetCompat? {
val id = "_${info.id}"
val intent = Intent(info.action)
@@ -134,12 +167,12 @@ class GenerateSearchTarget(private val context: Context) {
return null
}
- if (!hasRequiredPermissions(intent)) {
+ if (!SettingsTarget.hasRequiredPermissions(context, intent)) {
Log.w("SettingSearch", "App does not have required permissions for intent: $intent")
return null
}
- val actionBuilder = SearchActionCompat.Builder(id, formatSettingTitle(info.name))
+ val actionBuilder = SearchActionCompat.Builder(id, SettingsTarget.formatSettingTitle(info.name))
.setIcon(
Icon.createWithResource(context, R.drawable.ic_setting)
.setTint(ColorTokens.Accent1_600.resolveColor(context)),
@@ -156,24 +189,26 @@ class GenerateSearchTarget(private val context: Context) {
)
}
- private fun hasRequiredPermissions(intent: Intent): Boolean {
- val packageManager = context.packageManager
- val resolveInfo = packageManager.resolveActivity(intent, PackageManager.MATCH_DEFAULT_ONLY)
- return resolveInfo?.activityInfo?.exported == true
- }
-
- private fun formatSettingTitle(rawTitle: String?): String {
- return rawTitle?.replace('_', ' ')
- ?.replace("ACTION", "")
- ?.lowercase()
- ?.split(' ')
- ?.joinToString(" ") {
- it.replaceFirstChar { char -> char.uppercase(Locale.ROOT) }
- }.orEmpty()
+ private fun createSearchLinksTarget(
+ id: String,
+ action: SearchActionCompat,
+ pkg: String,
+ extras: Bundle = Bundle(),
+ ): SearchTargetCompat {
+ return SearchTargetCompat.Builder(
+ SearchTargetCompat.RESULT_TYPE_REDIRECTION,
+ LayoutType.ICON_HORIZONTAL_TEXT,
+ generateHashKey(id),
+ )
+ .setPackageName(pkg)
+ .setUserHandle(Process.myUserHandle())
+ .setSearchAction(action)
+ .setExtras(extras)
+ .build()
}
- internal fun getMarketSearchItem(query: String): SearchTargetCompat? {
- if (marketSearchComponent == null) return null
+ internal fun createMarketSearchTarget(query: String): SearchTargetCompat? {
+ val marketSearchComponent = SearchLinksTarget.resolveMarketSearchActivity(context) ?: return null
val id = "marketSearch:$query"
val action = SearchActionCompat.Builder(
id,
@@ -186,27 +221,34 @@ class GenerateSearchTarget(private val context: Context) {
SearchResultView.EXTRA_ICON_COMPONENT_KEY to marketSearchComponent.toString(),
SearchResultView.EXTRA_HIDE_SUBTITLE to true,
)
- return createSearchTarget(id, action, MARKET_STORE, extras)
+ return createSearchLinksTarget(
+ id,
+ action,
+ MARKET_STORE,
+ extras,
+ )
}
- internal fun getStartPageSearchItem(query: String): SearchTargetCompat {
- val url = getStartPageUrl(query)
+ internal fun createWebSearchTarget(query: String, suggestionProvider: String): SearchTargetCompat {
+ val webSearchProvider = WebSearchProvider.fromString(suggestionProvider)
+ val webSearchLabel = context.getString(webSearchProvider.label)
+ val url = webSearchProvider.getSearchUrl(query)
val id = "browser:$query"
val browserIntent = Intent(Intent.ACTION_VIEW, Uri.parse(url))
val action = SearchActionCompat.Builder(
id,
- context.getString(R.string.all_apps_search_startpage_message),
+ context.getString(R.string.all_apps_search_on_web_message, webSearchLabel),
)
- .setIcon(Icon.createWithResource(context, R.drawable.ic_startpage))
+ .setIcon(Icon.createWithResource(context, webSearchProvider.iconRes))
.setIntent(browserIntent)
.build()
val extras = bundleOf(
SearchResultView.EXTRA_HIDE_SUBTITLE to true,
)
- return createSearchTarget(id, action, START_PAGE, extras)
+ return createSearchLinksTarget(id, action, START_PAGE, extras)
}
- internal fun getContactSearchItem(info: ContactInfo): SearchTargetCompat {
+ fun createContactsTarget(info: ContactInfo): SearchTargetCompat {
val id = "contact:${info.contactId}${info.number}"
val contactUri = Uri.withAppendedPath(
ContactsContract.Contacts.CONTENT_URI,
@@ -215,7 +257,7 @@ class GenerateSearchTarget(private val context: Context) {
val contactIntent = Intent(Intent.ACTION_VIEW, contactUri)
val action = SearchActionCompat.Builder(id, info.name)
- .setIcon(displayContactPhoto(context, info.name, Uri.parse(info.uri)))
+ .setIcon(ContactsTarget.displayContactPhoto(context, info.name, Uri.parse(info.uri)))
.setContentDescription(info.contactId)
.setSubtitle(info.number)
.setIntent(contactIntent)
@@ -231,7 +273,7 @@ class GenerateSearchTarget(private val context: Context) {
)
}
- internal fun getFileInfoSearchItem(info: IFileInfo): SearchTargetCompat {
+ fun createFilesTarget(info: IFileInfo): SearchTargetCompat {
val fileUri = when (info) {
is FileInfo -> Uri.withAppendedPath(
MediaStore.Files.getContentUri("external"),
@@ -251,7 +293,7 @@ class GenerateSearchTarget(private val context: Context) {
.setDataAndType(fileUri, mimeType)
val action = SearchActionCompat.Builder(info.path, info.name)
- .setIcon(getPreviewIcon(info))
+ .setIcon(FilesTarget.getPreviewIcon(context, info))
.setIntent(fileIntent)
.build()
@@ -265,7 +307,53 @@ class GenerateSearchTarget(private val context: Context) {
)
}
- private fun displayContactPhoto(context: Context, name: String, contactUri: Uri): Icon {
+ companion object {
+ private const val HASH_ALGORITHM = "SHA-256"
+
+ // TODO find a way to properly provide tag/provide ids to search target
+ private val messageDigest by lazy { MessageDigest.getInstance(HASH_ALGORITHM) }
+
+ private fun generateHashKey(input: String): String =
+ ByteString.of(*messageDigest.digest(input.toByteArray())).hex()
+
+ fun createSearchTarget(
+ id: String,
+ action: SearchActionCompat,
+ layoutType: String,
+ targetCompat: Int,
+ pkg: String,
+ extras: Bundle = Bundle(),
+ ): SearchTargetCompat {
+ return SearchTargetCompat.Builder(
+ targetCompat,
+ layoutType,
+ generateHashKey(id),
+ ).apply {
+ setPackageName(pkg)
+ setUserHandle(Process.myUserHandle())
+ setSearchAction(action)
+ setExtras(extras)
+ }.build()
+ }
+ }
+}
+
+object FilesTarget {
+ fun getPreviewIcon(
+ context: Context,
+ info: IFileInfo,
+ ): Icon {
+ val fileInfo = info as? FileInfo
+ return if (fileInfo?.isImageType == true) {
+ Icon.createWithFilePath(fileInfo.path)
+ } else {
+ Icon.createWithResource(context, fileInfo?.iconRes ?: R.drawable.ic_folder)
+ }
+ }
+}
+
+object ContactsTarget {
+ fun displayContactPhoto(context: Context, name: String, contactUri: Uri): Icon {
var inputStream: InputStream? = null
try {
inputStream = context.contentResolver.openInputStream(contactUri)
@@ -279,30 +367,54 @@ class GenerateSearchTarget(private val context: Context) {
inputStream?.close()
}
- // If contact photo not available, create an icon with the first letter of the name
+ // If contact photo is not available, create an icon with the first letter of the contact's name
val initial = if (name.isNotEmpty()) name[0].uppercaseChar().toString() else "U"
val textBitmap = createTextBitmap(context, initial)
return Icon.createWithBitmap(textBitmap)
}
+}
- private fun getStartPageUrl(query: String): String {
- return "https://www.startpage.com/do/search?segment=startpage.lawnchair&query=$query&cat=web"
- }
-
- private fun resolveMarketSearchActivity(): ComponentKey? {
+object SearchLinksTarget {
+ fun resolveMarketSearchActivity(context: Context): ComponentKey? {
val intent = PackageManagerHelper.getMarketSearchIntent(context, "")
val resolveInfo = context.packageManager.resolveActivity(intent, 0) ?: return null
val packageName = resolveInfo.activityInfo.packageName
val launchIntent = context.packageManager.getLaunchIntentForPackage(packageName) ?: return null
return ComponentKey(launchIntent.component, Process.myUserHandle())
}
+}
- private fun getPreviewIcon(info: IFileInfo): Icon {
- val fileInfo = info as? FileInfo
- return if (fileInfo?.isImageType == true) {
- Icon.createWithFilePath(fileInfo.path)
- } else {
- Icon.createWithResource(context, fileInfo?.iconRes ?: R.drawable.ic_folder)
- }
+object SettingsTarget {
+ fun hasRequiredPermissions(context: Context, intent: Intent): Boolean {
+ val packageManager = context.packageManager
+ val resolveInfo = packageManager.resolveActivity(intent, PackageManager.MATCH_DEFAULT_ONLY)
+ return resolveInfo?.activityInfo?.exported == true
+ }
+
+ fun formatSettingTitle(rawTitle: String?): String {
+ return rawTitle?.replace('_', ' ')
+ ?.replace("ACTION", "")
+ ?.lowercase()
+ ?.split(' ')
+ ?.joinToString(" ") {
+ it.replaceFirstChar { char -> char.uppercase(Locale.ROOT) }
+ }.orEmpty()
}
}
+
+// keys used in `pkg` param
+const val START_PAGE = "startpage"
+const val MARKET_STORE = "marketstore"
+const val WEB_SUGGESTION = "suggestion"
+const val HEADER = "header"
+const val CONTACT = "contact"
+const val FILES = "files"
+const val SPACE = "space"
+const val SPACE_MINI = "space_mini"
+const val LOADING = "loading"
+const val ERROR = "error"
+const val SETTINGS = "setting"
+const val SHORTCUT = "shortcut"
+const val HISTORY = "recent_keyword"
+const val HEADER_JUSTIFY = "header_justify"
+const val CALCULATOR = "calculator"
diff --git a/lawnchair/src/app/lawnchair/search/adapter/SearchTargetUtils.kt b/lawnchair/src/app/lawnchair/search/adapter/SearchTargetUtils.kt
deleted file mode 100644
index 20817f08dd4..00000000000
--- a/lawnchair/src/app/lawnchair/search/adapter/SearchTargetUtils.kt
+++ /dev/null
@@ -1,125 +0,0 @@
-package app.lawnchair.search.adapter
-
-import android.content.pm.ShortcutInfo
-import android.os.Bundle
-import android.os.Process
-import androidx.core.os.bundleOf
-import com.android.app.search.LayoutType
-import com.android.launcher3.model.data.AppInfo
-import com.android.launcher3.util.ComponentKey
-import java.security.MessageDigest
-import okio.ByteString
-
-// We're generate hash key as alt in id, so we can avoid
-// the wrong action when click,
-// TODO remove when we properly manage creating search target
-private fun generateHashKey(input: String): String =
- ByteString.of(*MessageDigest.getInstance("SHA-256").digest(input.toByteArray())).hex()
-
-fun createSearchTarget(appInfo: AppInfo, asRow: Boolean = false): SearchTargetCompat {
- val componentName = appInfo.componentName
- val user = appInfo.user
- return SearchTargetCompat.Builder(
- SearchTargetCompat.RESULT_TYPE_APPLICATION,
- if (asRow) LayoutType.SMALL_ICON_HORIZONTAL_TEXT else LayoutType.ICON_SINGLE_VERTICAL_TEXT,
- generateHashKey(ComponentKey(componentName, user).toString()),
- )
- .setPackageName(componentName.packageName)
- .setUserHandle(user)
- .setExtras(bundleOf("class" to componentName.className))
- .build()
-}
-
-fun createSearchTarget(shortcutInfo: ShortcutInfo): SearchTargetCompat {
- return SearchTargetCompat.Builder(
- SearchTargetCompat.RESULT_TYPE_SHORTCUT,
- LayoutType.SMALL_ICON_HORIZONTAL_TEXT,
- "shortcut_" + generateHashKey("${shortcutInfo.`package`}|${shortcutInfo.userHandle}|${shortcutInfo.id}"),
- )
- .setShortcutInfo(shortcutInfo)
- .setUserHandle(shortcutInfo.userHandle)
- .setExtras(Bundle())
- .build()
-}
-
-fun createSearchTarget(
- id: String,
- action: SearchActionCompat,
- pkg: String,
- extras: Bundle = Bundle(),
-): SearchTargetCompat {
- return SearchTargetCompat.Builder(
- SearchTargetCompat.RESULT_TYPE_REDIRECTION,
- LayoutType.ICON_HORIZONTAL_TEXT,
- generateHashKey(id),
- )
- .setPackageName(pkg)
- .setUserHandle(Process.myUserHandle())
- .setSearchAction(action)
- .setExtras(extras)
- .build()
-}
-
-fun createCalculatorTarget(
- id: String,
- action: SearchActionCompat,
- extras: Bundle = Bundle(),
-): SearchTargetCompat {
- return SearchTargetCompat.Builder(
- SearchTargetCompat.RESULT_TYPE_CALCULATOR,
- LayoutType.CALCULATOR,
- generateHashKey(id),
- )
- .setPackageName("")
- .setUserHandle(Process.myUserHandle())
- .setSearchAction(action)
- .setExtras(extras)
- .build()
-}
-
-fun createSearchTarget(
- id: String,
- action: SearchActionCompat,
- layoutType: String,
- targetCompat: Int,
- pkg: String,
- extras: Bundle = Bundle(),
-): SearchTargetCompat {
- return SearchTargetCompat.Builder(
- targetCompat,
- layoutType,
- generateHashKey(id),
- )
- .setPackageName(pkg)
- .setUserHandle(Process.myUserHandle())
- .setSearchAction(action)
- .setExtras(extras)
- .build()
-}
-
-fun createDividerTarget(): SearchTargetCompat {
- return SearchTargetCompat.Builder(
- SearchTargetCompat.RESULT_TYPE_SHORTCUT,
- LayoutType.DIVIDER,
- "divider",
- )
- .setPackageName("")
- .setUserHandle(Process.myUserHandle())
- .build()
-}
-
-const val START_PAGE = "startpage"
-const val MARKET_STORE = "marketstore"
-const val WEB_SUGGESTION = "suggestion"
-const val HEADER = "header"
-const val CONTACT = "contact"
-const val FILES = "files"
-const val SPACE = "space"
-const val SPACE_MINI = "space_mini"
-const val LOADING = "loading"
-const val ERROR = "error"
-const val SETTINGS = "setting"
-const val SHORTCUT = "shortcut"
-const val HISTORY = "recent_keyword"
-const val HEADER_JUSTIFY = "header_justify"
-const val CALCULATOR = "calculator"
diff --git a/lawnchair/src/app/lawnchair/search/algorithms/LawnchairASISearchAlgorithm.kt b/lawnchair/src/app/lawnchair/search/algorithms/LawnchairASISearchAlgorithm.kt
index ed3898f746c..f4e4b4e5a62 100644
--- a/lawnchair/src/app/lawnchair/search/algorithms/LawnchairASISearchAlgorithm.kt
+++ b/lawnchair/src/app/lawnchair/search/algorithms/LawnchairASISearchAlgorithm.kt
@@ -12,7 +12,6 @@ import androidx.core.os.bundleOf
import app.lawnchair.compat.LawnchairQuickstepCompat
import app.lawnchair.preferences.PreferenceChangeListener
import app.lawnchair.preferences.PreferenceManager
-import app.lawnchair.search.LawnchairSearchAdapterProvider
import app.lawnchair.search.adapter.SearchTargetCompat
import app.lawnchair.util.requireSystemService
import com.android.launcher3.LauncherAppState
@@ -110,8 +109,8 @@ class LawnchairASISearchAlgorithm(context: Context) :
override fun accept(platformTargets: List) {
if (!canceled) {
val targets = platformTargets.map { SearchTargetCompat.wrap(it) }
+ setFirstItemQuickLaunch(targets)
val adapterItems = transformSearchResults(targets)
- LawnchairSearchAdapterProvider.setFirstItemQuickLaunch(adapterItems)
callback.onSearchResult(
query,
ArrayList(adapterItems),
diff --git a/lawnchair/src/app/lawnchair/search/algorithms/LawnchairAppSearchAlgorithm.kt b/lawnchair/src/app/lawnchair/search/algorithms/LawnchairAppSearchAlgorithm.kt
index cf1ec03effa..05eebf1b31e 100644
--- a/lawnchair/src/app/lawnchair/search/algorithms/LawnchairAppSearchAlgorithm.kt
+++ b/lawnchair/src/app/lawnchair/search/algorithms/LawnchairAppSearchAlgorithm.kt
@@ -3,11 +3,9 @@ package app.lawnchair.search.algorithms
import android.content.Context
import android.os.Handler
import app.lawnchair.preferences2.PreferenceManager2
-import app.lawnchair.search.LawnchairSearchAdapterProvider
-import app.lawnchair.search.adapter.GenerateSearchTarget
import app.lawnchair.search.adapter.SPACE
import app.lawnchair.search.adapter.SearchTargetCompat
-import app.lawnchair.search.adapter.createSearchTarget
+import app.lawnchair.search.adapter.SearchTargetFactory
import app.lawnchair.util.isDefaultLauncher
import com.android.launcher3.LauncherAppState
import com.android.launcher3.allapps.BaseAllAppsAdapter
@@ -26,7 +24,9 @@ class LawnchairAppSearchAlgorithm(context: Context) : LawnchairSearchAlgorithm(c
private val appState = LauncherAppState.getInstance(context)
private val resultHandler = Handler(Executors.MAIN_EXECUTOR.looper)
- private val generateSearchTarget = GenerateSearchTarget(context)
+
+ // todo maybe use D.I.?
+ private val searchTargetFactory = SearchTargetFactory(context)
private var hiddenApps: Set = setOf()
@@ -34,21 +34,21 @@ class LawnchairAppSearchAlgorithm(context: Context) : LawnchairSearchAlgorithm(c
private var enableFuzzySearch = false
private var maxResultsCount = 5
- private val pref2 = PreferenceManager2.getInstance(context)
+ private val prefs2 = PreferenceManager2.getInstance(context)
val coroutineScope = CoroutineScope(context = Dispatchers.IO)
init {
- pref2.enableFuzzySearch.onEach(launchIn = coroutineScope) {
+ prefs2.enableFuzzySearch.onEach(launchIn = coroutineScope) {
enableFuzzySearch = it
}
- pref2.hiddenApps.onEach(launchIn = coroutineScope) {
+ prefs2.hiddenApps.onEach(launchIn = coroutineScope) {
hiddenApps = it
}
- pref2.hiddenAppsInSearch.onEach(launchIn = coroutineScope) {
+ prefs2.hiddenAppsInSearch.onEach(launchIn = coroutineScope) {
hiddenAppsInSearch = it
}
- pref2.maxAppSearchResultCount.onEach(launchIn = coroutineScope) {
+ prefs2.maxAppSearchResultCount.onEach(launchIn = coroutineScope) {
maxResultsCount = it
}
}
@@ -85,27 +85,26 @@ class LawnchairAppSearchAlgorithm(context: Context) : LawnchairSearchAlgorithm(c
val searchTargets = mutableListOf()
if (appResults.isNotEmpty()) {
- appResults.mapTo(searchTargets, ::createSearchTarget)
- }
-
- if (appResults.size == 1 && context.isDefaultLauncher()) {
- val singleAppResult = appResults.firstOrNull()
- val shortcuts = singleAppResult?.let { searchUtils.getShortcuts(it, context) }
- if (shortcuts != null) {
- if (shortcuts.isNotEmpty()) {
- searchTargets.add(generateSearchTarget.getHeaderTarget(SPACE))
- searchTargets.add(createSearchTarget(singleAppResult, true))
- searchTargets.addAll(shortcuts.map(::createSearchTarget))
+ appResults.mapTo(searchTargets, searchTargetFactory::createAppSearchTarget)
+
+ if (appResults.size == 1 && context.isDefaultLauncher()) {
+ val singleAppResult = appResults.firstOrNull()
+ val shortcuts = singleAppResult?.let { searchUtils.getShortcuts(it, context) }
+ if (shortcuts != null) {
+ if (shortcuts.isNotEmpty()) {
+ searchTargets.add(searchTargetFactory.createHeaderTarget(SPACE))
+ singleAppResult.let { searchTargets.add(searchTargetFactory.createAppSearchTarget(it, true)) }
+ searchTargets.addAll(shortcuts.map(searchTargetFactory::createShortcutTarget))
+ }
}
}
+ searchTargets.add(searchTargetFactory.createHeaderTarget(SPACE))
}
- searchTargets.add(generateSearchTarget.getHeaderTarget(SPACE))
-
- generateSearchTarget.getMarketSearchItem(query)?.let { searchTargets.add(it) }
+ searchTargetFactory.createMarketSearchTarget(query)?.let { searchTargets.add(it) }
+ setFirstItemQuickLaunch(searchTargets)
val adapterItems = transformSearchResults(searchTargets)
- LawnchairSearchAdapterProvider.setFirstItemQuickLaunch(adapterItems)
return ArrayList(adapterItems)
}
}
diff --git a/lawnchair/src/app/lawnchair/search/algorithms/LawnchairLocalSearchAlgorithm.kt b/lawnchair/src/app/lawnchair/search/algorithms/LawnchairLocalSearchAlgorithm.kt
index be2d2f29e0e..302a71f3fce 100644
--- a/lawnchair/src/app/lawnchair/search/algorithms/LawnchairLocalSearchAlgorithm.kt
+++ b/lawnchair/src/app/lawnchair/search/algorithms/LawnchairLocalSearchAlgorithm.kt
@@ -4,32 +4,30 @@ import android.content.Context
import android.os.Handler
import app.lawnchair.preferences.PreferenceManager
import app.lawnchair.preferences2.PreferenceManager2
-import app.lawnchair.search.LawnchairSearchAdapterProvider
import app.lawnchair.search.adapter.CALCULATOR
import app.lawnchair.search.adapter.CONTACT
import app.lawnchair.search.adapter.ERROR
import app.lawnchair.search.adapter.FILES
-import app.lawnchair.search.adapter.GenerateSearchTarget
import app.lawnchair.search.adapter.HEADER_JUSTIFY
import app.lawnchair.search.adapter.HISTORY
import app.lawnchair.search.adapter.LOADING
import app.lawnchair.search.adapter.SETTINGS
import app.lawnchair.search.adapter.SPACE
-import app.lawnchair.search.adapter.SearchResult
import app.lawnchair.search.adapter.SearchTargetCompat
+import app.lawnchair.search.adapter.SearchTargetFactory
import app.lawnchair.search.adapter.WEB_SUGGESTION
-import app.lawnchair.search.adapter.createSearchTarget
import app.lawnchair.search.algorithms.data.Calculation
import app.lawnchair.search.algorithms.data.ContactInfo
import app.lawnchair.search.algorithms.data.IFileInfo
import app.lawnchair.search.algorithms.data.RecentKeyword
import app.lawnchair.search.algorithms.data.SettingInfo
+import app.lawnchair.search.algorithms.data.WebSearchProvider
import app.lawnchair.search.algorithms.data.calculateEquationFromString
import app.lawnchair.search.algorithms.data.findContactsByName
import app.lawnchair.search.algorithms.data.findSettingsByNameAndAction
import app.lawnchair.search.algorithms.data.getRecentKeyword
-import app.lawnchair.search.algorithms.data.getStartPageSuggestions
import app.lawnchair.search.algorithms.data.queryFilesInMediaStore
+import app.lawnchair.search.model.SearchResult
import app.lawnchair.util.checkAndRequestFilesPermission
import app.lawnchair.util.isDefaultLauncher
import app.lawnchair.util.requestContactPermissionGranted
@@ -45,8 +43,12 @@ import com.android.launcher3.util.Executors
import com.patrykmichalik.opto.core.onEach
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
+import kotlinx.coroutines.SupervisorJob
import kotlinx.coroutines.TimeoutCancellationException
import kotlinx.coroutines.async
+import kotlinx.coroutines.flow.Flow
+import kotlinx.coroutines.flow.channelFlow
+import kotlinx.coroutines.flow.flow
import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext
import kotlinx.coroutines.withTimeoutOrNull
@@ -55,15 +57,16 @@ class LawnchairLocalSearchAlgorithm(context: Context) : LawnchairSearchAlgorithm
private val appState = LauncherAppState.getInstance(context)
private val resultHandler = Handler(Executors.MAIN_EXECUTOR.looper)
- private val generateSearchTarget = GenerateSearchTarget(context)
+ private val searchTargetFactory = SearchTargetFactory(context)
- private var hiddenApps: Set = setOf()
+ private var hiddenApps: Set = emptySet()
private var hiddenAppsInSearch = ""
private var searchApps = true
private var enableFuzzySearch = false
private var useWebSuggestions = true
+ private var webSuggestionsProvider = ""
private val prefs: PreferenceManager = PreferenceManager.getInstance(context)
private val pref2 = PreferenceManager2.getInstance(context)
@@ -76,7 +79,7 @@ class LawnchairLocalSearchAlgorithm(context: Context) : LawnchairSearchAlgorithm
private var maxRecentResultCount = 2
private var maxWebSuggestionDelay = 200
- val coroutineScope = CoroutineScope(context = Dispatchers.IO)
+ val coroutineScope = CoroutineScope(context = Dispatchers.IO + SupervisorJob())
init {
pref2.enableFuzzySearch.onEach(launchIn = coroutineScope) {
@@ -92,6 +95,10 @@ class LawnchairLocalSearchAlgorithm(context: Context) : LawnchairSearchAlgorithm
useWebSuggestions = prefs.searchResultStartPageSuggestion.get()
searchApps = prefs.searchResultApps.get()
+ pref2.webSuggestionProvider.onEach(launchIn = coroutineScope) {
+ webSuggestionsProvider = it.toString()
+ }
+
pref2.maxAppSearchResultCount.onEach(launchIn = coroutineScope) {
maxAppResultsCount = it
}
@@ -101,7 +108,7 @@ class LawnchairLocalSearchAlgorithm(context: Context) : LawnchairSearchAlgorithm
pref2.maxPeopleResultCount.onEach(launchIn = coroutineScope) {
maxPeopleCount = it
}
- pref2.maxSuggestionResultCount.onEach(launchIn = coroutineScope) {
+ pref2.maxWebSuggestionResultCount.onEach(launchIn = coroutineScope) {
maxWebSuggestionsCount = it
}
pref2.maxSettingsEntryResultCount.onEach(launchIn = coroutineScope) {
@@ -121,8 +128,9 @@ class LawnchairLocalSearchAlgorithm(context: Context) : LawnchairSearchAlgorithm
appState.model.enqueueModelUpdateTask(object : BaseModelUpdateTask() {
override fun execute(app: LauncherAppState, dataModel: BgDataModel, apps: AllAppsList) {
coroutineScope.launch(Dispatchers.Main) {
- val results = getResult(apps.data, query)
- callback.onSearchResult(query, results)
+ getAllSearchResults(apps.data, query, prefs).collect { allResults ->
+ callback.onSearchResult(query, ArrayList(allResults))
+ }
}
}
})
@@ -134,99 +142,177 @@ class LawnchairLocalSearchAlgorithm(context: Context) : LawnchairSearchAlgorithm
}
}
- private suspend fun getResult(
+ private fun getAllSearchResults(
apps: MutableList,
query: String,
- ): ArrayList {
- val appResults = if (enableFuzzySearch) {
- searchUtils.fuzzySearch(apps, query)
- } else {
- searchUtils.normalSearch(apps, query)
+ prefs: PreferenceManager,
+ ): Flow> = channelFlow {
+ val allResults = mutableListOf()
+ var appIndex = 0
+
+ launch {
+ getAppSearchResults(apps, query).collect { appResults ->
+ allResults.addAll(appResults)
+ appIndex = appResults.size
+ send(allResults.toList())
+ }
+ }
+
+ launch {
+ getLocalSearchResults(query, prefs).collect { localResults ->
+ // Insert local results at the appropriate position
+ val insertIndex = appIndex
+ if (insertIndex >= 0) {
+ allResults.addAll(insertIndex, localResults)
+ } else {
+ allResults.addAll(localResults)
+ }
+ send(allResults.toList())
+ }
+ }
+
+ launch {
+ getSearchLinks(query).collect { otherResults ->
+ allResults.addAll(otherResults)
+ send(allResults.toList())
+ }
}
+ }
+
+ private fun getAppSearchResults(
+ apps: MutableList,
+ query: String,
+ ): Flow> = flow {
+ val searchTargets = mutableListOf()
+ val appResults = performAppSearch(apps, query)
+
+ parseAppSearchResults(appResults, searchTargets)
+
+ setFirstItemQuickLaunch(searchTargets)
+ emit(transformSearchResults(searchTargets))
+ }
+ private fun getLocalSearchResults(
+ query: String,
+ prefs: PreferenceManager,
+ ): Flow> = flow {
+ val searchTargets = mutableListOf()
val localSearchResults = performDeviceLocalSearch(query, prefs)
+ parseLocalSearchResults(localSearchResults, searchTargets)
+ emit(transformSearchResults(searchTargets))
+ }
+ private fun getSearchLinks(
+ query: String,
+ ): Flow> = flow {
val searchTargets = mutableListOf()
- if (appResults.isNotEmpty() && searchApps) {
- appResults.mapTo(searchTargets, ::createSearchTarget)
+ searchTargets.add(searchTargetFactory.createHeaderTarget(SPACE))
+ if (useWebSuggestions) {
+ withContext(Dispatchers.IO) {
+ searchTargets.add(searchTargetFactory.createWebSearchTarget(query, webSuggestionsProvider))
+ }
}
+ searchTargetFactory.createMarketSearchTarget(query)?.let { searchTargets.add(it) }
+ emit(transformSearchResults(searchTargets))
+ }
- if (appResults.size == 1 && searchApps && context.isDefaultLauncher()) {
- val singleAppResult = appResults.firstOrNull()
- val shortcuts = singleAppResult?.let { searchUtils.getShortcuts(it, context) }
- if (shortcuts != null) {
- if (shortcuts.isNotEmpty()) {
- searchTargets.add(generateSearchTarget.getHeaderTarget(SPACE))
- searchTargets.add(createSearchTarget(singleAppResult, true))
- searchTargets.addAll(shortcuts.map(::createSearchTarget))
+ private fun parseAppSearchResults(
+ appResults: List,
+ searchTargets: MutableList,
+ ) {
+ if (appResults.isNotEmpty()) {
+ appResults.mapTo(searchTargets, searchTargetFactory::createAppSearchTarget)
+
+ if (appResults.size == 1 && context.isDefaultLauncher()) {
+ val singleAppResult = appResults.firstOrNull()
+ val shortcuts = singleAppResult?.let { searchUtils.getShortcuts(it, context) }
+ if (shortcuts != null) {
+ if (shortcuts.isNotEmpty()) {
+ searchTargets.add(searchTargetFactory.createHeaderTarget(SPACE))
+ singleAppResult.let { searchTargets.add(searchTargetFactory.createAppSearchTarget(it, true)) }
+ searchTargets.addAll(shortcuts.map(searchTargetFactory::createShortcutTarget))
+ }
}
}
+ searchTargets.add(searchTargetFactory.createHeaderTarget(SPACE))
}
+ }
+ private fun parseLocalSearchResults(
+ localSearchResults: MutableList,
+ searchTargets: MutableList,
+ ) {
+ val suggestionProvider = webSuggestionsProvider
val suggestions = filterByType(localSearchResults, WEB_SUGGESTION)
if (suggestions.isNotEmpty()) {
- val suggestionsHeader = generateSearchTarget.getHeaderTarget(context.getString(R.string.all_apps_search_result_suggestions))
+ val suggestionsHeader =
+ searchTargetFactory.createHeaderTarget(context.getString(R.string.all_apps_search_result_suggestions))
searchTargets.add(suggestionsHeader)
- searchTargets.addAll(suggestions.map { generateSearchTarget.getSuggestionTarget(it.resultData as String) })
+ searchTargets.addAll(
+ suggestions.map {
+ searchTargetFactory.createWebSuggestionsTarget(it.resultData as String, suggestionProvider)
+ },
+ )
}
val calculator = filterByType(localSearchResults, CALCULATOR).firstOrNull()
val calcData = calculator?.resultData as? Calculation
if (calcData != null && calcData.isValid) {
- val calculatorHeader = generateSearchTarget.getHeaderTarget(context.getString(R.string.all_apps_search_result_calculator))
+ val calculatorHeader =
+ searchTargetFactory.createHeaderTarget(context.getString(R.string.all_apps_search_result_calculator))
searchTargets.add(calculatorHeader)
searchTargets.add(
- generateSearchTarget.getCalculationTarget(calcData),
+ searchTargetFactory.createCalculatorTarget(calcData),
)
}
val contacts = filterByType(localSearchResults, CONTACT)
if (contacts.isNotEmpty()) {
- val contactsHeader = generateSearchTarget.getHeaderTarget(context.getString(R.string.all_apps_search_result_contacts_from_device))
+ val contactsHeader =
+ searchTargetFactory.createHeaderTarget(context.getString(R.string.all_apps_search_result_contacts_from_device))
searchTargets.add(contactsHeader)
- searchTargets.addAll(contacts.map { generateSearchTarget.getContactSearchItem(it.resultData as ContactInfo) })
+ searchTargets.addAll(contacts.map { searchTargetFactory.createContactsTarget(it.resultData as ContactInfo) })
}
val settings = filterByType(localSearchResults, SETTINGS)
if (settings.isNotEmpty()) {
- val settingsHeader = generateSearchTarget.getHeaderTarget(context.getString(R.string.all_apps_search_result_settings_entry_from_device))
+ val settingsHeader =
+ searchTargetFactory.createHeaderTarget(context.getString(R.string.all_apps_search_result_settings_entry_from_device))
searchTargets.add(settingsHeader)
- searchTargets.addAll(settings.mapNotNull { generateSearchTarget.getSettingSearchItem(it.resultData as SettingInfo) })
+ searchTargets.addAll(settings.mapNotNull { searchTargetFactory.createSettingsTarget(it.resultData as SettingInfo) })
}
+ // todo refactor to only show when search is first clicked
val recentKeyword = filterByType(localSearchResults, HISTORY)
if (recentKeyword.isNotEmpty()) {
- val recentKeywordHeader = generateSearchTarget.getHeaderTarget(
+ val recentKeywordHeader = searchTargetFactory.createHeaderTarget(
context.getString(R.string.search_pref_result_history_title),
HEADER_JUSTIFY,
)
searchTargets.add(recentKeywordHeader)
- searchTargets.addAll(recentKeyword.map { generateSearchTarget.getRecentKeywordTarget(it.resultData as RecentKeyword) })
+ searchTargets.addAll(recentKeyword.map { searchTargetFactory.createSearchHistoryTarget(it.resultData as RecentKeyword, suggestionProvider) })
}
val files = filterByType(localSearchResults, FILES)
if (files.isNotEmpty()) {
- val filesHeader = generateSearchTarget.getHeaderTarget(context.getString(R.string.all_apps_search_result_files))
+ val filesHeader =
+ searchTargetFactory.createHeaderTarget(context.getString(R.string.all_apps_search_result_files))
searchTargets.add(filesHeader)
- searchTargets.addAll(files.map { generateSearchTarget.getFileInfoSearchItem(it.resultData as IFileInfo) })
+ searchTargets.addAll(files.map { searchTargetFactory.createFilesTarget(it.resultData as IFileInfo) })
}
-
- searchTargets.add(generateSearchTarget.getHeaderTarget(SPACE))
-
- if (useWebSuggestions) searchTargets.add(generateSearchTarget.getStartPageSearchItem(query))
- generateSearchTarget.getMarketSearchItem(query)?.let { searchTargets.add(it) }
-
- val adapterItems = transformSearchResults(searchTargets)
- LawnchairSearchAdapterProvider.setFirstItemQuickLaunch(adapterItems)
- return ArrayList(adapterItems)
}
- private fun filterByType(results: List, type: String): List {
- return results.filter { it.resultType == type }
+ private fun performAppSearch(
+ apps: MutableList,
+ query: String,
+ ) = if (enableFuzzySearch) {
+ searchUtils.fuzzySearch(apps, query)
+ } else {
+ searchUtils.normalSearch(apps, query)
}
- protected suspend fun performDeviceLocalSearch(query: String, prefs: PreferenceManager): MutableList =
+ private suspend fun performDeviceLocalSearch(query: String, prefs: PreferenceManager): MutableList =
withContext(Dispatchers.IO) {
val results = ArrayList()
@@ -276,7 +362,7 @@ class LawnchairLocalSearchAlgorithm(context: Context) : LawnchairSearchAlgorithm
val timeout = maxWebSuggestionDelay.toLong()
val result = withTimeoutOrNull(timeout) {
if (prefs.searchResultStartPageSuggestion.get()) {
- getStartPageSuggestions(query, maxWebSuggestionsCount).map {
+ WebSearchProvider.fromString(webSuggestionsProvider).getSuggestions(query, maxWebSuggestionsCount).map {
SearchResult(
WEB_SUGGESTION,
it,
@@ -320,4 +406,8 @@ class LawnchairLocalSearchAlgorithm(context: Context) : LawnchairSearchAlgorithm
results
}
+
+ private fun filterByType(results: List, type: String): List {
+ return results.filter { it.resultType == type }
+ }
}
diff --git a/lawnchair/src/app/lawnchair/search/algorithms/LawnchairSearchAlgorithm.kt b/lawnchair/src/app/lawnchair/search/algorithms/LawnchairSearchAlgorithm.kt
index 9e9f73900a7..d9c214ecfc5 100644
--- a/lawnchair/src/app/lawnchair/search/algorithms/LawnchairSearchAlgorithm.kt
+++ b/lawnchair/src/app/lawnchair/search/algorithms/LawnchairSearchAlgorithm.kt
@@ -4,7 +4,6 @@ import android.content.Context
import app.lawnchair.LawnchairApp
import app.lawnchair.allapps.views.SearchItemBackground
import app.lawnchair.allapps.views.SearchResultView.Companion.EXTRA_QUICK_LAUNCH
-import app.lawnchair.preferences.PreferenceManager
import app.lawnchair.preferences2.PreferenceManager2
import app.lawnchair.search.LawnchairSearchAdapterProvider
import app.lawnchair.search.adapter.SearchAdapterItem
@@ -71,6 +70,7 @@ sealed class LawnchairSearchAlgorithm(
.removeDuplicateDividers()
.toList()
+ val appAndShortcutIndices = findAppAndShorcutIndices(filtered)
val smallIconIndices = findIndices(filtered, SMALL_ICON_HORIZONTAL_TEXT)
val iconRowIndices = findIndices(filtered, ICON_HORIZONTAL_TEXT)
val peopleTileIndices = findIndices(filtered, PEOPLE_TILE)
@@ -84,34 +84,62 @@ sealed class LawnchairSearchAlgorithm(
val isFirst = index == 0 || filtered[index - 1].isDivider
val isLast = index == filtered.lastIndex || filtered[index + 1].isDivider
- if (target.extras.getBoolean(EXTRA_QUICK_LAUNCH, false)) {
+ // todo make quick launch work on non-app results
+ if (
+ (target.isApp && target.layoutType == SMALL_ICON_HORIZONTAL_TEXT) ||
+ target.isShortcut
+ ) {
+ SearchAdapterItem.createAdapterItem(target, getGroupedBackground(index, appAndShortcutIndices))
+ } else if (target.layoutType == ICON_SINGLE_VERTICAL_TEXT && target.extras.getBoolean(EXTRA_QUICK_LAUNCH, false)) {
SearchAdapterItem.createAdapterItem(target, normalBackground)
+ } else {
+ val background = getBackground(
+ target.layoutType,
+ index,
+ isFirst,
+ isLast,
+ smallIconIndices,
+ iconRowIndices,
+ peopleTileIndices,
+ suggestionIndices,
+ fileIndices,
+ settingIndices,
+ recentIndices,
+ calculator,
+ )
+ SearchAdapterItem.createAdapterItem(target, background)
}
+ }
+ }
- val background = getBackground(
- target.layoutType,
- index,
- isFirst,
- isLast,
- smallIconIndices,
- iconRowIndices,
- peopleTileIndices,
- suggestionIndices,
- fileIndices,
- settingIndices,
- recentIndices,
- calculator,
- )
- SearchAdapterItem.createAdapterItem(target, background)
+ protected fun setFirstItemQuickLaunch(searchTargets: List) {
+ val hasQuickLaunch = searchTargets.any { it.extras.getBoolean(EXTRA_QUICK_LAUNCH, false) }
+ if (!hasQuickLaunch) {
+ searchTargets.firstOrNull()?.extras?.apply {
+ putBoolean(EXTRA_QUICK_LAUNCH, true)
+ }
}
}
private fun findIndices(filtered: List, layoutType: String): List {
return filtered.indices.filter {
- filtered[it].layoutType == layoutType
+ filtered[it].layoutType == layoutType && !filtered[it].isApp
}
}
+ private fun findAppAndShorcutIndices(filtered: List): List {
+ val appAndShortcutIndices =
+ filtered.indices.filter {
+ (filtered[it].isApp || filtered[it].isShortcut) &&
+ (
+ filtered[it].layoutType == ICON_HORIZONTAL_TEXT ||
+ filtered[it].layoutType == SMALL_ICON_HORIZONTAL_TEXT
+ )
+ }
+
+ return appAndShortcutIndices
+ }
+
private fun getBackground(
layoutType: String,
index: Int,
@@ -160,12 +188,11 @@ sealed class LawnchairSearchAlgorithm(
if (!Utilities.ATLEAST_S) return false
if (!LawnchairApp.isRecentsEnabled) return false
- val prefs = PreferenceManager.getInstance(context)
if (!ranCompatibilityCheck) {
ranCompatibilityCheck = true
LawnchairASISearchAlgorithm.checkSearchCompatibility(context)
}
- return prefs.deviceSearch.get()
+ return true
}
fun create(context: Context): LawnchairSearchAlgorithm {
@@ -173,13 +200,17 @@ sealed class LawnchairSearchAlgorithm(
val searchAlgorithm = prefs.searchAlgorithm.firstBlocking()
return when {
- searchAlgorithm == ASI_SEARCH && isASISearchEnabled(context) -> LawnchairASISearchAlgorithm(context)
+ searchAlgorithm == ASI_SEARCH && isASISearchEnabled(context) -> LawnchairASISearchAlgorithm(
+ context,
+ )
+
searchAlgorithm == LOCAL_SEARCH -> LawnchairLocalSearchAlgorithm(context)
else -> LawnchairAppSearchAlgorithm(context)
}
}
}
}
+
private fun Sequence.removeDuplicateDividers(): Sequence {
var previousWasDivider = true
return filter { item ->
diff --git a/lawnchair/src/app/lawnchair/search/algorithms/data/Web.kt b/lawnchair/src/app/lawnchair/search/algorithms/data/Web.kt
index 8636f0be980..e3e66b96191 100644
--- a/lawnchair/src/app/lawnchair/search/algorithms/data/Web.kt
+++ b/lawnchair/src/app/lawnchair/search/algorithms/data/Web.kt
@@ -1,7 +1,10 @@
package app.lawnchair.search.algorithms.data
import android.util.Log
+import androidx.annotation.DrawableRes
+import androidx.annotation.StringRes
import app.lawnchair.util.kotlinxJson
+import com.android.launcher3.R
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.withContext
import okhttp3.MediaType.Companion.toMediaType
@@ -14,47 +17,266 @@ import retrofit2.create
import retrofit2.http.GET
import retrofit2.http.Query
-private val retrofit = Retrofit.Builder()
- .baseUrl("https://www.startpage.com/")
- .addConverterFactory(kotlinxJson.asConverterFactory("application/json".toMediaType()))
- .build()
+/**
+ * A class to get the current web search provider
+ */
+sealed class WebSearchProvider {
-val startPageService: StartPageService = retrofit.create()
+ /**
+ * Human-readable label used by the preference UI
+ */
+ @get:StringRes
+ abstract val label: Int
-suspend fun getStartPageSuggestions(query: String, max: Int): List = withContext(Dispatchers.IO) {
- if (query.isEmpty() || query.isBlank() || max <= 0) {
- return@withContext emptyList()
+ /**
+ * Icon resource used by the drawer search bar
+ */
+ @get:DrawableRes
+ abstract val iconRes: Int
+
+ /**
+ * Base url used for mapping
+ */
+ abstract val baseUrl: String
+
+ /**
+ * [Retrofit] instance used for searching.
+ */
+ protected val retrofit: Retrofit by lazy {
+ Retrofit.Builder()
+ .baseUrl(baseUrl)
+ .addConverterFactory(kotlinxJson.asConverterFactory("application/json".toMediaType()))
+ .build()
}
- try {
- val response: Response = startPageService.getStartPageSuggestions(
- query = query,
- segment = "startpage.lawnchair",
- partner = "lawnchair",
- format = "opensearch",
- )
+ /**
+ * The search service to use.
+ */
+ protected abstract val service: GenericSearchService
+
+ /**
+ * Suspending function to get the list of suggestions from the current suggestion
+ * @param query The input text
+ * @param maxSuggestions The maximum number of items
+ * @return The list of suggestions
+ */
+ abstract suspend fun getSuggestions(query: String, maxSuggestions: Int): List
- if (response.isSuccessful) {
- val responseBody = response.body()?.string()
- return@withContext JSONArray(responseBody).optJSONArray(1)?.let { array ->
- (0 until array.length()).take(max).map { array.getString(it) }
- } ?: emptyList()
- } else {
- Log.d("Failed to retrieve suggestions", ": ${response.code()}")
- return@withContext emptyList()
+ /**
+ * Function to get the search URL for the current provider
+ * @param query The input text
+ */
+ abstract fun getSearchUrl(query: String): String
+
+ companion object {
+ fun fromString(value: String): WebSearchProvider = when (value) {
+ "google" -> Google
+ "duckduckgo" -> DuckDuckGo
+ else -> StartPage
}
- } catch (e: Exception) {
- Log.e("Exception", "Error during suggestion retrieval: ${e.message}")
- return@withContext emptyList()
+
+ /**
+ * The list of available web search providers
+ */
+ fun values() = listOf(
+ Google,
+ StartPage,
+ DuckDuckGo,
+ )
}
}
-interface StartPageService {
+/**
+ * A popular search engine
+ */
+data object Google : WebSearchProvider() {
+ override val label = R.string.search_provider_google
+
+ override val iconRes = R.drawable.ic_super_g_color
+
+ override val baseUrl = "https://www.google.com/"
+
+ override val service: GoogleService
+ get() = retrofit.create()
+
+ override suspend fun getSuggestions(query: String, maxSuggestions: Int): List =
+ withContext(Dispatchers.IO) {
+ if (query.isBlank() || maxSuggestions <= 0) {
+ return@withContext emptyList()
+ }
+
+ try {
+ val response: Response = service.getSuggestions(query = query)
+
+ if (response.isSuccessful) {
+ val responseBody = response.body()?.string() ?: return@withContext emptyList()
+
+ val jsonPayload = Regex("\\((.*)\\)").find(responseBody)?.groupValues?.get(1)
+
+ // Manual JSON parsing
+ val jsonArray = JSONArray(jsonPayload)
+ val suggestionsArray = jsonArray.getJSONArray(1) // Get the suggestions array
+ val suggestionsList = mutableListOf()
+ for (i in 0 until suggestionsArray.length().coerceAtMost(maxSuggestions)) {
+ suggestionsList.add(suggestionsArray.getString(i))
+ }
+ return@withContext suggestionsList
+ } else {
+ Log.w(
+ "GoogleSearchProvider",
+ "Failed to retrieve suggestions: ${response.code()}",
+ )
+ return@withContext emptyList()
+ }
+ } catch (e: Exception) {
+ Log.e("GoogleSearchProvider", "Error during suggestion retrieval: ${e.message}")
+ return@withContext emptyList()
+ }
+ }
+
+ override fun getSearchUrl(query: String) = "https://google.com/search?q=$query"
+
+ override fun toString() = "google"
+}
+
+/**
+ * A Google-like search engine.
+ */
+data object StartPage : WebSearchProvider() {
+ override val label = R.string.search_provider_startpage
+
+ override val iconRes = R.drawable.ic_startpage
+
+ override val baseUrl = "https://www.startpage.com"
+
+ override val service: StartPageService = retrofit.create()
+
+ override suspend fun getSuggestions(query: String, maxSuggestions: Int): List =
+ withContext(Dispatchers.IO) {
+ if (query.isBlank() || maxSuggestions <= 0) {
+ return@withContext emptyList()
+ }
+
+ try {
+ val response: Response = service.getSuggestions(
+ query = query,
+ segment = "startpage.lawnchair",
+ partner = "lawnchair",
+ format = "opensearch",
+ )
+
+ if (response.isSuccessful) {
+ val responseBody = response.body()?.string()
+ return@withContext JSONArray(responseBody).optJSONArray(1)?.let { array ->
+ (0 until array.length()).take(maxSuggestions).map { array.getString(it) }
+ } ?: emptyList()
+ } else {
+ Log.w(
+ "StartPageSearchProvidr",
+ "Failed to retrieve suggestions: ${response.code()}",
+ )
+ return@withContext emptyList()
+ }
+ } catch (e: Exception) {
+ Log.e("StartPageSearchProvider", "Error during suggestion retrieval: ${e.message}")
+ return@withContext emptyList()
+ }
+ }
+
+ override fun getSearchUrl(query: String) = "https://www.startpage.com/do/search?segment=startpage.lawnchair&query=$query&cat=web"
+
+ override fun toString() = "startpage"
+}
+
+/**
+ * An fast, alternative engine to Google.
+ */
+data object DuckDuckGo : WebSearchProvider() {
+ override val label = R.string.search_provider_duckduckgo
+
+ override val iconRes = R.drawable.ic_duckduckgo
+
+ override val baseUrl = "https://ac.duckduckgo.com/"
+
+ override val service: DuckDuckGoService by lazy { retrofit.create() }
+
+ override suspend fun getSuggestions(query: String, maxSuggestions: Int): List =
+ withContext(Dispatchers.IO) {
+ if (query.isBlank() || maxSuggestions <= 0) {
+ return@withContext emptyList()
+ }
+
+ try {
+ val response: Response = service.getSuggestions(query = query)
+
+ if (response.isSuccessful) {
+ val responseBody = response.body()?.string() ?: return@withContext emptyList()
+
+ val jsonArray = JSONArray(responseBody)
+ val suggestionsArray =
+ jsonArray.optJSONArray(1) ?: return@withContext emptyList()
+
+ return@withContext (
+ 0 until suggestionsArray.length()
+ .coerceAtMost(maxSuggestions)
+ )
+ .map { suggestionsArray.getString(it) }
+ } else {
+ Log.w(
+ "DuckDuckGoSearchProvider",
+ "Failed to retrieve suggestions: ${response.code()}",
+ )
+ return@withContext emptyList()
+ }
+ } catch (e: Exception) {
+ Log.e("DuckDuckGoSearchProvider", "Error during suggestion retrieval", e)
+ return@withContext emptyList()
+ }
+ }
+
+ override fun getSearchUrl(query: String) = "https://duckduckgo.com/$query&cat=web"
+
+ override fun toString() = "duckduckgo"
+}
+
+/**
+ * Provides an interface for getting search suggestions from the web.
+ */
+interface GenericSearchService
+
+/**
+ * Web suggestions for [WebSearchProvider.Google]
+ */
+interface GoogleService : GenericSearchService {
+ @GET("complete/search")
+ suspend fun getSuggestions(
+ @Query("client") client: String = "firefox",
+ @Query("q") query: String,
+ @Query("callback") callback: String = "json",
+ ): Response
+}
+
+/**
+ * Web suggestions for [WebSearchProvider.StartPage].
+ */
+interface StartPageService : GenericSearchService {
@GET("suggestions")
- suspend fun getStartPageSuggestions(
+ suspend fun getSuggestions(
@Query("q") query: String,
@Query("segment") segment: String,
@Query("partner") partner: String,
@Query("format") format: String,
): Response
}
+
+/**
+ * Web suggestions for [WebSearchProvider.DuckDuckGo].
+ */
+interface DuckDuckGoService : GenericSearchService {
+ @GET("ac/")
+ suspend fun getSuggestions(
+ @Query("q") query: String,
+ @Query("type") type: String = "list",
+ @Query("callback") callback: String = "jsonCallback",
+ ): Response
+}
diff --git a/lawnchair/src/app/lawnchair/search/adapter/SearchResult.kt b/lawnchair/src/app/lawnchair/search/model/SearchResult.kt
similarity index 68%
rename from lawnchair/src/app/lawnchair/search/adapter/SearchResult.kt
rename to lawnchair/src/app/lawnchair/search/model/SearchResult.kt
index daf90504a32..8ff69b389d5 100644
--- a/lawnchair/src/app/lawnchair/search/adapter/SearchResult.kt
+++ b/lawnchair/src/app/lawnchair/search/model/SearchResult.kt
@@ -1,4 +1,4 @@
-package app.lawnchair.search.adapter
+package app.lawnchair.search.model
data class SearchResult(
val resultType: String,
diff --git a/lawnchair/src/app/lawnchair/search/adapter/SearchResultActionCallBack.kt b/lawnchair/src/app/lawnchair/search/model/SearchResultActionCallBack.kt
similarity index 61%
rename from lawnchair/src/app/lawnchair/search/adapter/SearchResultActionCallBack.kt
rename to lawnchair/src/app/lawnchair/search/model/SearchResultActionCallBack.kt
index 79f6224ebcb..9d6718d2d25 100644
--- a/lawnchair/src/app/lawnchair/search/adapter/SearchResultActionCallBack.kt
+++ b/lawnchair/src/app/lawnchair/search/model/SearchResultActionCallBack.kt
@@ -1,4 +1,4 @@
-package app.lawnchair.search.adapter
+package app.lawnchair.search.model
interface SearchResultActionCallBack {
fun action()
diff --git a/lawnchair/src/app/lawnchair/smartspace/SmartspacerView.kt b/lawnchair/src/app/lawnchair/smartspace/SmartspacerView.kt
index abfd79ed306..4445a35929a 100644
--- a/lawnchair/src/app/lawnchair/smartspace/SmartspacerView.kt
+++ b/lawnchair/src/app/lawnchair/smartspace/SmartspacerView.kt
@@ -8,6 +8,8 @@ import android.util.AttributeSet
import android.view.View
import app.lawnchair.LawnchairLauncher
import app.lawnchair.launcher
+import app.lawnchair.preferences2.PreferenceManager2
+import app.lawnchair.preferences2.subscribeBlocking
import app.lawnchair.ui.preferences.PreferenceActivity
import app.lawnchair.ui.preferences.navigation.Routes
import com.android.launcher3.R
@@ -17,10 +19,22 @@ import com.kieronquinn.app.smartspacer.sdk.client.R as SmartspacerR
import com.kieronquinn.app.smartspacer.sdk.client.views.BcSmartspaceView
import com.kieronquinn.app.smartspacer.sdk.client.views.popup.Popup
import com.kieronquinn.app.smartspacer.sdk.client.views.popup.PopupFactory
+import com.kieronquinn.app.smartspacer.sdk.model.SmartspaceConfig
import com.kieronquinn.app.smartspacer.sdk.model.SmartspaceTarget
+import com.kieronquinn.app.smartspacer.sdk.model.UiSurface
+import kotlinx.coroutines.CoroutineScope
+import kotlinx.coroutines.Dispatchers
class SmartspacerView(context: Context, attrs: AttributeSet?) : BcSmartspaceView(context, attrs) {
+ private val prefs2 = PreferenceManager2.getInstance(context)
+ private val coroutineScope = CoroutineScope(Dispatchers.Default)
+ private var targetCount = 5
+
init {
+ prefs2.smartspacerMaxCount.subscribeBlocking(coroutineScope) {
+ targetCount = it
+ }
+
popupFactory = object : PopupFactory {
override fun createPopup(
context: Context,
@@ -54,6 +68,12 @@ class SmartspacerView(context: Context, attrs: AttributeSet?) : BcSmartspaceView
}
}
+ override val config = SmartspaceConfig(
+ targetCount,
+ UiSurface.HOMESCREEN,
+ context.packageName,
+ )
+
private fun getDismissOption(
target: SmartspaceTarget,
dismissAction: ((SmartspaceTarget) -> Unit)?,
diff --git a/lawnchair/src/app/lawnchair/smartspace/model/SmartspaceMode.kt b/lawnchair/src/app/lawnchair/smartspace/model/SmartspaceMode.kt
index b6917909220..332a55dcdae 100644
--- a/lawnchair/src/app/lawnchair/smartspace/model/SmartspaceMode.kt
+++ b/lawnchair/src/app/lawnchair/smartspace/model/SmartspaceMode.kt
@@ -21,7 +21,7 @@ sealed class SmartspaceMode(
}
/**
- * @return The list of all time format options.
+ * @return The list of all smartspace options
*/
fun values() = persistentListOf(
LawnchairSmartspace,
diff --git a/lawnchair/src/app/lawnchair/theme/ColorSchemeUtils.kt b/lawnchair/src/app/lawnchair/theme/ColorSchemeUtils.kt
index 2c4fe014025..d4e91baa1ad 100644
--- a/lawnchair/src/app/lawnchair/theme/ColorSchemeUtils.kt
+++ b/lawnchair/src/app/lawnchair/theme/ColorSchemeUtils.kt
@@ -1,13 +1,96 @@
package app.lawnchair.theme
+import androidx.annotation.FloatRange
import androidx.compose.material3.ColorScheme
import androidx.compose.material3.darkColorScheme
import androidx.compose.material3.lightColorScheme
import androidx.compose.runtime.Composable
import androidx.compose.runtime.remember
+import androidx.compose.ui.graphics.Color
+import androidx.compose.ui.graphics.colorspace.ColorSpaces
+import androidx.core.math.MathUtils
+import kotlin.math.pow
+import kotlin.math.roundToInt
+
+/**
+ * Set the luminance(tone) of this color. Chroma may decrease because chroma has a different maximum
+ * for any given hue and luminance.
+ *
+ * @param newLuminance 0 <= newLuminance <= 100; invalid values are corrected.
+ */
+internal fun Color.setLuminance(@FloatRange(from = 0.0, to = 100.0) newLuminance: Float): Color {
+ if ((newLuminance < 0.0001) or (newLuminance > 99.9999)) {
+ // aRGBFromLstar() from monet ColorUtil.java
+ val y = 100 * labInvf((newLuminance + 16) / 116)
+ val component = delinearized(y)
+ return Color(
+ /* red = */
+ component,
+ /* green = */
+ component,
+ /* blue = */
+ component,
+ )
+ }
+
+ val sLAB = this.convert(ColorSpaces.CieLab)
+ return Color(
+ /* luminance = */
+ newLuminance,
+ /* a = */
+ sLAB.component2(),
+ /* b = */
+ sLAB.component3(),
+ colorSpace = ColorSpaces.CieLab,
+ )
+ .convert(ColorSpaces.Srgb)
+}
+
+/** Helper method from monet ColorUtils.java */
+private fun labInvf(ft: Float): Float {
+ val e = 216f / 24389f
+ val kappa = 24389f / 27f
+ val ft3 = ft * ft * ft
+ return if (ft3 > e) {
+ ft3
+ } else {
+ (116 * ft - 16) / kappa
+ }
+}
+
+/**
+ * Helper method from monet ColorUtils.java
+ *
+ * Delinearizes an RGB component.
+ *
+ * @param rgbComponent 0.0 <= rgb_component <= 100.0, represents linear R/G/B channel
+ * @return 0 <= output <= 255, color channel converted to regular RGB space
+ */
+private fun delinearized(rgbComponent: Float): Int {
+ val normalized = rgbComponent / 100
+ val delinearized =
+ if (normalized <= 0.0031308) {
+ normalized * 12.92
+ } else {
+ 1.055 * normalized.toDouble().pow(1.0 / 2.4) - 0.055
+ }
+ return MathUtils.clamp((delinearized * 255.0).roundToInt(), 0, 255)
+}
@Composable
fun dev.kdrag0n.monet.theme.ColorScheme.toM3ColorScheme(isDark: Boolean): ColorScheme = remember(this, isDark) {
+ val neutralVariant4 = neutralVariant(40).setLuminance(4f)
+ val neutralVariant6 = neutralVariant(40).setLuminance(6f)
+ val neutralVariant12 = neutralVariant(40).setLuminance(12f)
+ val neutralVariant17 = neutralVariant(40).setLuminance(17f)
+ val neutralVariant22 = neutralVariant(40).setLuminance(22f)
+ val neutralVariant24 = neutralVariant(40).setLuminance(24f)
+ val neutralVariant87 = neutralVariant(40).setLuminance(87f)
+ val neutralVariant92 = neutralVariant(40).setLuminance(92f)
+ val neutralVariant94 = neutralVariant(40).setLuminance(94f)
+ val neutralVariant96 = neutralVariant(40).setLuminance(96f)
+ val neutralVariant98 = neutralVariant(40).setLuminance(98f)
+
if (isDark) {
darkColorScheme(
primary = primary(80),
@@ -21,9 +104,9 @@ fun dev.kdrag0n.monet.theme.ColorScheme.toM3ColorScheme(isDark: Boolean): ColorS
onSecondaryContainer = secondary(90),
tertiary = tertiary(80),
onTertiary = tertiary(20),
- background = neutral(10),
+ background = neutralVariant6,
onBackground = neutral(90),
- surface = neutral(10),
+ surface = neutralVariant6,
onSurface = neutral(90),
surfaceVariant = neutralVariant(30),
onSurfaceVariant = neutralVariant(80),
@@ -32,9 +115,15 @@ fun dev.kdrag0n.monet.theme.ColorScheme.toM3ColorScheme(isDark: Boolean): ColorS
outline = neutralVariant(60),
outlineVariant = neutralVariant(30),
scrim = neutral(0),
- surfaceContainer = neutral(20),
- surfaceContainerLow = neutral(20),
- surfaceContainerHighest = neutral(30),
+
+ surfaceBright = neutralVariant24,
+ surfaceDim = neutralVariant6,
+ surfaceContainerHighest = neutralVariant22,
+ surfaceContainerHigh = neutralVariant17,
+ surfaceContainer = neutralVariant12,
+ surfaceContainerLow = neutralVariant(10),
+ surfaceContainerLowest = neutralVariant4,
+ surfaceTint = primary(80),
)
} else {
lightColorScheme(
@@ -47,12 +136,14 @@ fun dev.kdrag0n.monet.theme.ColorScheme.toM3ColorScheme(isDark: Boolean): ColorS
onSecondary = secondary(100),
secondaryContainer = secondary(90),
onSecondaryContainer = secondary(10),
+ tertiary = tertiary(40),
+ onTertiary = tertiary(100),
tertiaryContainer = tertiary(90),
onTertiaryContainer = tertiary(10),
- background = neutral(99),
- onBackground = neutral(10),
- surface = neutral(99),
- onSurface = neutral(10),
+ background = neutralVariant98,
+ onBackground = neutralVariant(10),
+ surface = neutralVariant98,
+ onSurface = neutralVariant(10),
surfaceVariant = neutralVariant(90),
onSurfaceVariant = neutralVariant(30),
inverseSurface = neutral(20),
@@ -60,10 +151,15 @@ fun dev.kdrag0n.monet.theme.ColorScheme.toM3ColorScheme(isDark: Boolean): ColorS
outline = neutralVariant(50),
outlineVariant = neutralVariant(80),
scrim = neutral(0),
- // Temporary colors until we fully migrate to material-color-utilities
- surfaceContainer = neutral(90),
- surfaceContainerLow = neutral(95),
- surfaceContainerHighest = neutral(90),
+
+ surfaceBright = neutralVariant98,
+ surfaceDim = neutralVariant87,
+ surfaceContainerHighest = neutralVariant(90),
+ surfaceContainerHigh = neutralVariant92,
+ surfaceContainer = neutralVariant94,
+ surfaceContainerLow = neutralVariant96,
+ surfaceContainerLowest = neutralVariant(100),
+ surfaceTint = primary(40),
)
}
}
diff --git a/lawnchair/src/app/lawnchair/theme/ThemeProvider.kt b/lawnchair/src/app/lawnchair/theme/ThemeProvider.kt
index 8602288994f..cf00e3a9c2f 100644
--- a/lawnchair/src/app/lawnchair/theme/ThemeProvider.kt
+++ b/lawnchair/src/app/lawnchair/theme/ThemeProvider.kt
@@ -7,17 +7,18 @@ import android.content.IntentFilter
import android.os.Handler
import android.os.Looper
import android.os.PatternMatcher
-import android.util.SparseArray
import androidx.core.graphics.ColorUtils
import app.lawnchair.preferences2.PreferenceManager2
import app.lawnchair.theme.color.AndroidColor
import app.lawnchair.theme.color.ColorOption
+import app.lawnchair.theme.color.ColorStyle
import app.lawnchair.theme.color.MonetColorSchemeCompat
import app.lawnchair.theme.color.SystemColorScheme
import app.lawnchair.ui.theme.getSystemAccent
import app.lawnchair.wallpaper.WallpaperManagerCompat
import com.android.launcher3.Utilities
import com.android.launcher3.util.MainThreadInitializedObject
+import com.android.systemui.monet.Style
import com.patrykmichalik.opto.core.firstBlocking
import com.patrykmichalik.opto.core.onEach
import dev.kdrag0n.colorkt.Color
@@ -31,14 +32,16 @@ class ThemeProvider(private val context: Context) {
private val preferenceManager2 = PreferenceManager2.getInstance(context)
private val wallpaperManager = WallpaperManagerCompat.INSTANCE.get(context)
private val coroutineScope = CoroutineScope(Dispatchers.Default)
+
private var accentColor: ColorOption = preferenceManager2.accentColor.firstBlocking()
+ private var colorStyle: ColorStyle = preferenceManager2.colorStyle.firstBlocking()
- private val colorSchemeMap = SparseArray()
+ private val colorSchemeMap = HashMap, ColorScheme>()
private val listeners = mutableListOf()
init {
if (Utilities.ATLEAST_S) {
- colorSchemeMap.append(0, SystemColorScheme(context))
+ colorSchemeMap[Pair(0, Style.TONAL_SPOT)] = SystemColorScheme(context)
registerOverlayChangedListener()
}
wallpaperManager.addOnChangeListener(object : WallpaperManagerCompat.OnColorsChangedListener {
@@ -52,6 +55,10 @@ class ThemeProvider(private val context: Context) {
accentColor = it
notifyColorSchemeChanged()
}
+ preferenceManager2.colorStyle.onEach(launchIn = coroutineScope) {
+ colorStyle = it
+ notifyColorSchemeChanged()
+ }
}
private fun registerOverlayChangedListener() {
@@ -61,7 +68,7 @@ class ThemeProvider(private val context: Context) {
context.registerReceiver(
object : BroadcastReceiver() {
override fun onReceive(context: Context, intent: Intent) {
- colorSchemeMap.append(0, SystemColorScheme(context))
+ colorSchemeMap[Pair(0, Style.TONAL_SPOT)] = SystemColorScheme(context)
if (accentColor is ColorOption.SystemAccent) {
notifyColorSchemeChanged()
}
@@ -77,22 +84,26 @@ class ThemeProvider(private val context: Context) {
is ColorOption.SystemAccent -> systemColorScheme
is ColorOption.WallpaperPrimary -> {
val wallpaperPrimary = wallpaperManager.wallpaperColors?.primaryColor
- getColorScheme(wallpaperPrimary ?: ColorOption.LawnchairBlue.color)
+ getColorScheme(wallpaperPrimary ?: ColorOption.LawnchairBlue.color, colorStyle.style)
}
- is ColorOption.CustomColor -> getColorScheme(accentColor.color)
- else -> getColorScheme(ColorOption.LawnchairBlue.color)
+ is ColorOption.CustomColor -> getColorScheme(accentColor.color, colorStyle.style)
+ else -> getColorScheme(ColorOption.LawnchairBlue.color, colorStyle.style)
}
private val systemColorScheme get() = when {
- Utilities.ATLEAST_S -> getColorScheme(0)
- else -> getColorScheme(context.getSystemAccent(darkTheme = false))
+ Utilities.ATLEAST_S -> getColorScheme(0, colorStyle.style)
+ else -> getColorScheme(context.getSystemAccent(darkTheme = false), colorStyle.style)
}
- private fun getColorScheme(colorInt: Int): ColorScheme {
- var colorScheme = colorSchemeMap[colorInt]
+ private fun getColorScheme(
+ colorInt: Int,
+ colorStyle: Style,
+ ): ColorScheme {
+ val key = Pair(colorInt, colorStyle)
+ var colorScheme = colorSchemeMap[key]
if (colorScheme == null) {
- colorScheme = MonetColorSchemeCompat(colorInt)
- colorSchemeMap.append(colorInt, colorScheme)
+ colorScheme = MonetColorSchemeCompat(colorInt, colorStyle)
+ colorSchemeMap[key] = colorScheme
}
return colorScheme
}
diff --git a/lawnchair/src/app/lawnchair/theme/color/ColorStyles.kt b/lawnchair/src/app/lawnchair/theme/color/ColorStyles.kt
new file mode 100644
index 00000000000..a00b361a6f1
--- /dev/null
+++ b/lawnchair/src/app/lawnchair/theme/color/ColorStyles.kt
@@ -0,0 +1,62 @@
+package app.lawnchair.theme.color
+
+import androidx.annotation.StringRes
+import com.android.launcher3.R
+import com.android.systemui.monet.Style
+
+sealed class ColorStyle(
+ val style: Style,
+ @StringRes val nameResourceId: Int,
+) {
+ companion object {
+ fun fromString(value: String): ColorStyle = when (value) {
+ "spritz" -> Spritz
+ "vibrant" -> Vibrant
+ "expressive" -> Expressive
+ "rainbow" -> Rainbow
+ "fruit_salad" -> FruitSalad
+ "content" -> Content
+ "monochromatic" -> Monochromatic
+ else -> TonalSpot // TonalSpot is the default scheme
+ }
+
+ /**
+ * @return The list of all color styles modes.
+ */
+ fun values() = listOf(
+ Spritz,
+ TonalSpot,
+ Vibrant,
+ Expressive,
+ Rainbow,
+ FruitSalad,
+ Content,
+ Monochromatic,
+ )
+ }
+}
+
+object Spritz : ColorStyle(Style.SPRITZ, R.string.color_style_spritz) {
+ override fun toString() = "spritz"
+}
+object TonalSpot : ColorStyle(Style.TONAL_SPOT, R.string.color_style_tonal_spot) {
+ override fun toString() = "tonal_spot"
+}
+object Vibrant : ColorStyle(Style.VIBRANT, R.string.color_style_vibrant) {
+ override fun toString() = "vibrant"
+}
+object Expressive : ColorStyle(Style.EXPRESSIVE, R.string.color_style_expressive) {
+ override fun toString() = "expressive"
+}
+object Rainbow : ColorStyle(Style.RAINBOW, R.string.color_style_rainbow) {
+ override fun toString() = "rainbow"
+}
+object FruitSalad : ColorStyle(Style.FRUIT_SALAD, R.string.color_style_fruit_salad) {
+ override fun toString() = "fruit_salad"
+}
+object Content : ColorStyle(Style.CONTENT, R.string.color_style_content) {
+ override fun toString() = "content"
+}
+object Monochromatic : ColorStyle(Style.MONOCHROMATIC, R.string.color_style_monochromatic) {
+ override fun toString() = "monochromatic"
+}
diff --git a/lawnchair/src/app/lawnchair/theme/color/ColorUtils.kt b/lawnchair/src/app/lawnchair/theme/color/ColorUtils.kt
index 41d58693f04..8ccf27216e8 100644
--- a/lawnchair/src/app/lawnchair/theme/color/ColorUtils.kt
+++ b/lawnchair/src/app/lawnchair/theme/color/ColorUtils.kt
@@ -1,6 +1,7 @@
package app.lawnchair.theme.color
import android.content.Context
+import app.lawnchair.theme.color.tokens.ColorTokens
fun generateColor(context: Context): Int {
val accentColors = listOf(
diff --git a/lawnchair/src/app/lawnchair/theme/color/MonetColorSchemeCompat.kt b/lawnchair/src/app/lawnchair/theme/color/MonetColorSchemeCompat.kt
index f8b9fef5c7c..6c3c880e301 100644
--- a/lawnchair/src/app/lawnchair/theme/color/MonetColorSchemeCompat.kt
+++ b/lawnchair/src/app/lawnchair/theme/color/MonetColorSchemeCompat.kt
@@ -2,20 +2,27 @@ package app.lawnchair.theme.color
import androidx.annotation.ColorInt
import com.android.systemui.monet.ColorScheme as MonetColorScheme
+import com.android.systemui.monet.Style
import dev.kdrag0n.colorkt.Color
import dev.kdrag0n.monet.theme.ColorScheme
import dev.kdrag0n.monet.theme.ColorSwatch
-class MonetColorSchemeCompat(@ColorInt private val seedColor: Int) : ColorScheme() {
+class MonetColorSchemeCompat(
+ @ColorInt private val seedColor: Int,
+ val style: Style = Style.TONAL_SPOT,
+) : ColorScheme() {
- private val scheme = MonetColorScheme(seedColor, darkTheme = false)
+ private val scheme = MonetColorScheme(
+ seedColor,
+ style,
+ )
- override val neutral1: ColorSwatch = mapColors(scheme.neutral1)
- override val neutral2: ColorSwatch = mapColors(scheme.neutral2)
+ override val neutral1: ColorSwatch = mapColors(scheme.neutral1.allShades)
+ override val neutral2: ColorSwatch = mapColors(scheme.neutral2.allShades)
- override val accent1: ColorSwatch = mapColors(scheme.accent1)
- override val accent2: ColorSwatch = mapColors(scheme.accent2)
- override val accent3: ColorSwatch = mapColors(scheme.accent3)
+ override val accent1: ColorSwatch = mapColors(scheme.accent1.allShades)
+ override val accent2: ColorSwatch = mapColors(scheme.accent2.allShades)
+ override val accent3: ColorSwatch = mapColors(scheme.accent3.allShades)
private fun mapColors(colors: List): Map {
val paletteSize = colors.size
diff --git a/lawnchair/src/app/lawnchair/theme/color/ColorStateListToken.kt b/lawnchair/src/app/lawnchair/theme/color/tokens/ColorStateListToken.kt
similarity index 96%
rename from lawnchair/src/app/lawnchair/theme/color/ColorStateListToken.kt
rename to lawnchair/src/app/lawnchair/theme/color/tokens/ColorStateListToken.kt
index b9120a96f5e..a33aef09ac8 100644
--- a/lawnchair/src/app/lawnchair/theme/color/ColorStateListToken.kt
+++ b/lawnchair/src/app/lawnchair/theme/color/tokens/ColorStateListToken.kt
@@ -1,4 +1,4 @@
-package app.lawnchair.theme.color
+package app.lawnchair.theme.color.tokens
import android.content.Context
import android.content.res.ColorStateList
diff --git a/lawnchair/src/app/lawnchair/theme/color/ColorStateListTokens.kt b/lawnchair/src/app/lawnchair/theme/color/tokens/ColorStateListTokens.kt
similarity index 86%
rename from lawnchair/src/app/lawnchair/theme/color/ColorStateListTokens.kt
rename to lawnchair/src/app/lawnchair/theme/color/tokens/ColorStateListTokens.kt
index bebd10ab761..ffb3ba9d705 100644
--- a/lawnchair/src/app/lawnchair/theme/color/ColorStateListTokens.kt
+++ b/lawnchair/src/app/lawnchair/theme/color/tokens/ColorStateListTokens.kt
@@ -1,12 +1,13 @@
-package app.lawnchair.theme.color
+package app.lawnchair.theme.color.tokens
+import android.R
import android.content.res.ColorStateList
object ColorStateListTokens {
val AllAppsTabTextLight = NewColorStateList { context, scheme, uiColorMode ->
val states = arrayOf(
- intArrayOf(android.R.attr.state_selected),
+ intArrayOf(R.attr.state_selected),
intArrayOf(),
)
val colors = intArrayOf(
@@ -18,7 +19,7 @@ object ColorStateListTokens {
val AllAppsTabTextDark = NewColorStateList { context, scheme, uiColorMode ->
val states = arrayOf(
- intArrayOf(android.R.attr.state_selected),
+ intArrayOf(R.attr.state_selected),
intArrayOf(),
)
val colors = intArrayOf(
diff --git a/lawnchair/src/app/lawnchair/theme/color/ColorToken.kt b/lawnchair/src/app/lawnchair/theme/color/tokens/ColorToken.kt
similarity index 98%
rename from lawnchair/src/app/lawnchair/theme/color/ColorToken.kt
rename to lawnchair/src/app/lawnchair/theme/color/tokens/ColorToken.kt
index 5fe78241196..6610b9f265d 100644
--- a/lawnchair/src/app/lawnchair/theme/color/ColorToken.kt
+++ b/lawnchair/src/app/lawnchair/theme/color/tokens/ColorToken.kt
@@ -1,4 +1,4 @@
-package app.lawnchair.theme.color
+package app.lawnchair.theme.color.tokens
import android.content.Context
import android.util.Log
@@ -6,6 +6,7 @@ import androidx.core.graphics.ColorUtils
import app.lawnchair.theme.ResourceToken
import app.lawnchair.theme.ThemeProvider
import app.lawnchair.theme.UiColorMode
+import app.lawnchair.theme.color.AndroidColor
import app.lawnchair.theme.toAndroidColor
import com.android.launcher3.R
import com.android.launcher3.util.Themes
diff --git a/lawnchair/src/app/lawnchair/theme/color/ColorTokenUtils.kt b/lawnchair/src/app/lawnchair/theme/color/tokens/ColorTokenUtils.kt
similarity index 93%
rename from lawnchair/src/app/lawnchair/theme/color/ColorTokenUtils.kt
rename to lawnchair/src/app/lawnchair/theme/color/tokens/ColorTokenUtils.kt
index 3bb97a33ec6..12e8dcfdeee 100644
--- a/lawnchair/src/app/lawnchair/theme/color/ColorTokenUtils.kt
+++ b/lawnchair/src/app/lawnchair/theme/color/tokens/ColorTokenUtils.kt
@@ -1,4 +1,4 @@
-package app.lawnchair.theme.color
+package app.lawnchair.theme.color.tokens
import android.content.Context
import app.lawnchair.preferences.PreferenceManager
diff --git a/lawnchair/src/app/lawnchair/theme/color/ColorTokens.kt b/lawnchair/src/app/lawnchair/theme/color/tokens/ColorTokens.kt
similarity index 86%
rename from lawnchair/src/app/lawnchair/theme/color/ColorTokens.kt
rename to lawnchair/src/app/lawnchair/theme/color/tokens/ColorTokens.kt
index 6e17f5d08ff..c0ce897a8fd 100644
--- a/lawnchair/src/app/lawnchair/theme/color/ColorTokens.kt
+++ b/lawnchair/src/app/lawnchair/theme/color/tokens/ColorTokens.kt
@@ -1,4 +1,4 @@
-package app.lawnchair.theme.color
+package app.lawnchair.theme.color.tokens
import androidx.compose.runtime.Composable
import androidx.compose.ui.graphics.Color
@@ -22,6 +22,7 @@ object ColorTokens {
val Neutral2_200 = SwatchColorToken(Swatch.Neutral2, Shade.S200)
val Neutral2_300 = SwatchColorToken(Swatch.Neutral2, Shade.S300)
val Neutral2_500 = SwatchColorToken(Swatch.Neutral2, Shade.S500)
+ val Neutral2_600 = SwatchColorToken(Swatch.Neutral2, Shade.S600)
val Neutral2_700 = SwatchColorToken(Swatch.Neutral2, Shade.S700)
val Neutral2_800 = SwatchColorToken(Swatch.Neutral2, Shade.S800)
val Neutral2_900 = SwatchColorToken(Swatch.Neutral2, Shade.S900)
@@ -35,6 +36,8 @@ object ColorTokens {
val Accent1_500 = SwatchColorToken(Swatch.Accent1, Shade.S500)
val Accent1_600 = SwatchColorToken(Swatch.Accent1, Shade.S600)
val Accent1_700 = SwatchColorToken(Swatch.Accent1, Shade.S700)
+ val Accent1_900 = SwatchColorToken(Swatch.Accent1, Shade.S900)
+
val Accent2_50 = SwatchColorToken(Swatch.Accent2, Shade.S50)
val Accent2_100 = SwatchColorToken(Swatch.Accent2, Shade.S100)
val Accent2_300 = SwatchColorToken(Swatch.Accent2, Shade.S300)
@@ -42,11 +45,13 @@ object ColorTokens {
val Accent2_600 = SwatchColorToken(Swatch.Accent2, Shade.S600)
val Accent2_800 = SwatchColorToken(Swatch.Accent2, Shade.S800)
+ val Accent3_10 = SwatchColorToken(Swatch.Accent3, Shade.S10)
val Accent3_50 = SwatchColorToken(Swatch.Accent3, Shade.S50)
val Accent3_100 = SwatchColorToken(Swatch.Accent3, Shade.S100)
val Accent3_200 = SwatchColorToken(Swatch.Accent3, Shade.S200)
val Accent3_400 = SwatchColorToken(Swatch.Accent3, Shade.S400)
val Accent3_600 = SwatchColorToken(Swatch.Accent3, Shade.S600)
+ val Accent3_800 = SwatchColorToken(Swatch.Accent3, Shade.S800)
val SurfaceLight = Neutral1_500.setLStar(98.0)
val SurfaceDark = Neutral1_800
@@ -70,16 +75,20 @@ object ColorTokens {
@JvmField val TextColorSecondary = DayNightColorToken(StaticColorToken(0xde000000), Neutral2_200)
- @JvmField val AllAppsHeaderProtectionColor = DayNightColorToken(Neutral1_100, Neutral1_700)
+ @JvmField val AllAppsHeaderProtectionColor = DayNightColorToken(Neutral1_100, Neutral2_600.setLStar(15.0))
@JvmField val AllAppsScrimColor = ColorBackground
- @JvmField val AllAppsTabBackgroundSelected = DayNightColorToken(Accent1_500, Accent2_500)
+ @JvmField val AllAppsTabBackground = DayNightColorToken(Neutral2_600.setLStar(90.0), Neutral2_600.setLStar(22.0))
+
+ @JvmField val AllAppsTabBackgroundSelected = DayNightColorToken(Accent1_600, Accent1_600.setLStar(80.0))
@JvmField val FocusHighlight = DayNightColorToken(Neutral1_0, Neutral1_700)
@JvmField val GroupHighlight = Surface
+ @JvmField val OverviewScrimColor = DayNightColorToken(Neutral2_500.setLStar(87.0), Neutral1_800)
+
@JvmField val OverviewScrim = DayNightColorToken(Neutral2_500.setLStar(87.0), Neutral1_800)
.withPreferences { prefs ->
val translucent = prefs.recentsTranslucentBackground.get()
@@ -87,7 +96,7 @@ object ColorTokens {
if (translucent) setAlpha(translucentIntensity) else this
}
- @JvmField val SearchboxHighlight = DayNightColorToken(SurfaceVariantLight, Neutral1_800)
+ @JvmField val SearchboxHighlight = DayNightColorToken(Neutral2_600.setLStar(98.0), Neutral1_800)
@JvmField val FolderDotColor = Accent3_100
@@ -127,8 +136,14 @@ object ColorTokens {
@JvmField val WorkspaceAccentColor = DarkTextColorToken(Accent1_100, Accent2_600)
+ @JvmField val DropTargetHoverTextColor = DarkTextColorToken(Accent1_900, Accent1_100)
+
@JvmField val WidgetListRowColor = DayNightColorToken(Neutral1_10, Neutral2_800)
+ @JvmField val SurfaceDimColor = DayNightColorToken(Neutral2_600.setLStar(87.0), Neutral2_600.setLStar(6.0))
+
+ @JvmField val SurfaceBrightColor = DayNightColorToken(Neutral2_600.setLStar(98.0), Neutral2_600.setLStar(24.0))
+
val SwitchThumbOn = Accent1_100
val SwitchThumbOff = DayNightColorToken(Neutral2_300, Neutral1_400)
val SwitchThumbDisabled = DayNightColorToken(Neutral2_100, Neutral1_700)
diff --git a/lawnchair/src/app/lawnchair/theme/drawable/DrawableToken.kt b/lawnchair/src/app/lawnchair/theme/drawable/DrawableToken.kt
index 48182945f79..12ee52800c8 100644
--- a/lawnchair/src/app/lawnchair/theme/drawable/DrawableToken.kt
+++ b/lawnchair/src/app/lawnchair/theme/drawable/DrawableToken.kt
@@ -10,7 +10,7 @@ import androidx.annotation.DrawableRes
import androidx.appcompat.content.res.AppCompatResources
import app.lawnchair.theme.ResourceToken
import app.lawnchair.theme.UiColorMode
-import app.lawnchair.theme.color.ColorToken
+import app.lawnchair.theme.color.tokens.ColorToken
import com.android.launcher3.util.Themes
import dev.kdrag0n.monet.theme.ColorScheme
diff --git a/lawnchair/src/app/lawnchair/theme/drawable/DrawableTokens.kt b/lawnchair/src/app/lawnchair/theme/drawable/DrawableTokens.kt
index aaa0439b575..473ce365d5e 100644
--- a/lawnchair/src/app/lawnchair/theme/drawable/DrawableTokens.kt
+++ b/lawnchair/src/app/lawnchair/theme/drawable/DrawableTokens.kt
@@ -7,7 +7,7 @@ import android.graphics.drawable.LayerDrawable
import android.graphics.drawable.RippleDrawable
import android.graphics.drawable.StateListDrawable
import androidx.appcompat.content.res.AppCompatResources
-import app.lawnchair.theme.color.ColorTokens
+import app.lawnchair.theme.color.tokens.ColorTokens
import com.android.launcher3.R
object DrawableTokens {
diff --git a/lawnchair/src/app/lawnchair/ui/preferences/PreferenceActivity.kt b/lawnchair/src/app/lawnchair/ui/preferences/PreferenceActivity.kt
index 19bf9f12be0..d1d71aaf63d 100644
--- a/lawnchair/src/app/lawnchair/ui/preferences/PreferenceActivity.kt
+++ b/lawnchair/src/app/lawnchair/ui/preferences/PreferenceActivity.kt
@@ -16,9 +16,7 @@
package app.lawnchair.ui.preferences
-import android.app.Activity
import android.content.Context
-import android.content.ContextWrapper
import android.content.Intent
import android.graphics.Color
import android.os.Bundle
@@ -73,12 +71,6 @@ class PreferenceActivity : AppCompatActivity() {
}
}
-fun Context.findActivity(): Activity? = when (this) {
- is Activity -> this
- is ContextWrapper -> baseContext.findActivity()
- else -> null
-}
-
/**
* The default light scrim, as defined by androidx and the platform:
* https://cs.android.com/androidx/platform/frameworks/support/+/androidx-main:activity/activity/src/main/java/androidx/activity/EdgeToEdge.kt;l=35-38;drc=27e7d52e8604a080133e8b842db10c89b4482598
diff --git a/lawnchair/src/app/lawnchair/ui/preferences/about/About.kt b/lawnchair/src/app/lawnchair/ui/preferences/about/About.kt
index 266f44629a9..085f5512c22 100644
--- a/lawnchair/src/app/lawnchair/ui/preferences/about/About.kt
+++ b/lawnchair/src/app/lawnchair/ui/preferences/about/About.kt
@@ -149,7 +149,7 @@ private val product = listOf(
name = "Yasan Glass",
role = Role.Development,
photoUrl = "https://avatars.githubusercontent.com/u/41836211",
- socialUrl = "https:/yasan.glass",
+ socialUrl = "https://yasan.glass",
),
)
@@ -216,7 +216,7 @@ fun About(
PreferenceLayout(
label = stringResource(id = R.string.about_label),
modifier = modifier,
- backArrowVisible = LocalIsExpandedScreen.current,
+ backArrowVisible = !LocalIsExpandedScreen.current,
horizontalAlignment = Alignment.CenterHorizontally,
) {
Column(
@@ -298,8 +298,19 @@ fun About(
}
},
)
+ ClickablePreference(
+ label = stringResource(id = R.string.donate),
+ onClick = {
+ val webpage = Uri.parse(OPENCOLLECTIVE_FUNDING_URL)
+ val intent = Intent(Intent.ACTION_VIEW, webpage)
+ if (intent.resolveActivity(context.packageManager) != null) {
+ context.startActivity(intent)
+ }
+ },
+ )
}
}
}
+private const val OPENCOLLECTIVE_FUNDING_URL = "https://opencollective.com/lawnchair"
private const val CROWDIN_URL = "https://lawnchair.crowdin.com/lawnchair"
diff --git a/lawnchair/src/app/lawnchair/ui/preferences/components/AnnouncementPreference.kt b/lawnchair/src/app/lawnchair/ui/preferences/components/AnnouncementPreference.kt
index 1c9a0d98855..f0931605464 100644
--- a/lawnchair/src/app/lawnchair/ui/preferences/components/AnnouncementPreference.kt
+++ b/lawnchair/src/app/lawnchair/ui/preferences/components/AnnouncementPreference.kt
@@ -7,29 +7,32 @@ import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.Spacer
+import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.height
-import androidx.compose.foundation.layout.offset
import androidx.compose.foundation.layout.padding
-import androidx.compose.foundation.layout.size
import androidx.compose.foundation.layout.width
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.automirrored.rounded.Launch
-import androidx.compose.material.icons.rounded.Close
import androidx.compose.material.icons.rounded.NewReleases
import androidx.compose.material3.Icon
-import androidx.compose.material3.IconButton
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Surface
+import androidx.compose.material3.SwipeToDismissBox
+import androidx.compose.material3.SwipeToDismissBoxValue
import androidx.compose.material3.Text
+import androidx.compose.material3.rememberSwipeToDismissBoxState
+import androidx.compose.material3.surfaceColorAtElevation
import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
-import androidx.compose.runtime.remember
+import androidx.compose.runtime.saveable.rememberSaveable
import androidx.compose.runtime.setValue
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
+import androidx.compose.ui.draw.alpha
import androidx.compose.ui.platform.LocalContext
+import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
@@ -40,6 +43,7 @@ import app.lawnchair.ui.preferences.data.liveinfo.liveInformationManager
import app.lawnchair.ui.preferences.data.liveinfo.model.Announcement
import app.lawnchair.ui.util.addIf
import com.android.launcher3.BuildConfig
+import com.android.launcher3.R
import kotlinx.collections.immutable.ImmutableList
@Composable
@@ -66,7 +70,7 @@ fun AnnouncementPreference(
modifier = modifier,
) {
announcements.forEachIndexed { index, announcement ->
- var show by remember { mutableStateOf(true) }
+ var show by rememberSaveable { mutableStateOf(true) }
AnnouncementItem(show, announcement) { show = false }
if (index != announcements.lastIndex && show && (!announcement.test || BuildConfig.DEBUG)) {
Spacer(modifier = Modifier.height(16.dp))
@@ -103,13 +107,60 @@ private fun AnnouncementItemContent(
modifier: Modifier = Modifier,
onClose: () -> Unit,
) {
- Surface(
- modifier = modifier
- .padding(16.dp, 0.dp, 16.dp, 0.dp),
- shape = MaterialTheme.shapes.large,
- color = MaterialTheme.colorScheme.surfaceVariant,
+ val state = rememberSwipeToDismissBoxState(
+ confirmValueChange = {
+ when (it) {
+ SwipeToDismissBoxValue.StartToEnd -> {
+ onClose()
+ }
+ SwipeToDismissBoxValue.EndToStart -> return@rememberSwipeToDismissBoxState false
+ SwipeToDismissBoxValue.Settled -> return@rememberSwipeToDismissBoxState false
+ }
+ return@rememberSwipeToDismissBoxState true
+ },
+ )
+
+ SwipeToDismissBox(
+ state = state,
+ enableDismissFromEndToStart = false,
+ backgroundContent = {
+ Surface(
+ modifier = modifier
+ .alpha(
+ if (state.dismissDirection != SwipeToDismissBoxValue.StartToEnd) 1f else calculateAlpha(state.progress),
+ )
+ .fillMaxSize()
+ .padding(16.dp, 0.dp, 16.dp, 0.dp),
+ shape = MaterialTheme.shapes.large,
+ color = MaterialTheme.colorScheme.surfaceColorAtElevation(1.dp),
+ ) {
+ PreferenceTemplate(
+ {},
+ description = {
+ Text(stringResource(R.string.accessibility_close))
+ },
+ )
+ }
+ },
) {
- AnnouncementPreferenceItemContent(text = text, url = url, onClose = onClose)
+ Surface(
+ modifier = modifier
+ .alpha(
+ if (state.dismissDirection != SwipeToDismissBoxValue.StartToEnd) 1f else calculateAlpha(state.progress),
+ )
+ .padding(16.dp, 0.dp, 16.dp, 0.dp),
+ shape = MaterialTheme.shapes.large,
+ color = MaterialTheme.colorScheme.surfaceVariant,
+ ) {
+ AnnouncementPreferenceItemContent(text = text, url = url)
+ }
+ }
+}
+
+private fun calculateAlpha(progress: Float): Float {
+ return when {
+ progress < 0.5f -> 1f // Fully opaque until halfway
+ else -> 1f - (progress - 0.5f) * 2 // Fade out linearly from halfway to the end
}
}
@@ -118,7 +169,6 @@ private fun AnnouncementPreferenceItemContent(
text: String,
url: String?,
modifier: Modifier = Modifier,
- onClose: (() -> Unit)?,
) {
val context = LocalContext.current
val hasLink = !url.isNullOrBlank()
@@ -165,19 +215,6 @@ private fun AnnouncementPreferenceItemContent(
}
Spacer(modifier = Modifier.width(8.dp))
-
- if (onClose != null) {
- IconButton(
- onClick = onClose,
- modifier = Modifier.size(16.dp).offset(x = (8).dp, y = (-16).dp),
- ) {
- Icon(
- imageVector = Icons.Rounded.Close,
- tint = MaterialTheme.colorScheme.surfaceTint,
- contentDescription = null,
- )
- }
- }
}
},
)
@@ -189,7 +226,6 @@ private fun InfoPreferenceWithoutLinkPreview() {
AnnouncementPreferenceItemContent(
text = "Very important announcement ",
url = "",
- onClose = null,
)
}
@@ -199,6 +235,5 @@ private fun InfoPreferenceWithLinkPreview() {
AnnouncementPreferenceItemContent(
text = "Very important announcement with a very important link",
url = "https://lawnchair.app/",
- onClose = null,
)
}
diff --git a/lawnchair/src/app/lawnchair/ui/preferences/components/QuickActionsPreferences.kt b/lawnchair/src/app/lawnchair/ui/preferences/components/QuickActionsPreferences.kt
new file mode 100644
index 00000000000..3be4eaac38a
--- /dev/null
+++ b/lawnchair/src/app/lawnchair/ui/preferences/components/QuickActionsPreferences.kt
@@ -0,0 +1,286 @@
+package app.lawnchair.ui.preferences.components
+
+import android.view.HapticFeedbackConstants
+import androidx.compose.animation.AnimatedVisibility
+import androidx.compose.foundation.clickable
+import androidx.compose.foundation.interaction.MutableInteractionSource
+import androidx.compose.foundation.layout.Column
+import androidx.compose.foundation.layout.fillMaxHeight
+import androidx.compose.foundation.layout.height
+import androidx.compose.foundation.layout.padding
+import androidx.compose.foundation.layout.width
+import androidx.compose.material.icons.Icons
+import androidx.compose.material.icons.rounded.DragHandle
+import androidx.compose.material3.Card
+import androidx.compose.material3.CardDefaults
+import androidx.compose.material3.HorizontalDivider
+import androidx.compose.material3.Icon
+import androidx.compose.material3.IconButton
+import androidx.compose.material3.MaterialTheme
+import androidx.compose.material3.Surface
+import androidx.compose.material3.Switch
+import androidx.compose.material3.Text
+import androidx.compose.material3.ripple
+import androidx.compose.runtime.Composable
+import androidx.compose.runtime.key
+import androidx.compose.runtime.mutableIntStateOf
+import androidx.compose.runtime.mutableStateOf
+import androidx.compose.runtime.remember
+import androidx.compose.ui.Modifier
+import androidx.compose.ui.graphics.Color
+import androidx.compose.ui.platform.LocalView
+import androidx.compose.ui.res.stringResource
+import androidx.compose.ui.semantics.CustomAccessibilityAction
+import androidx.compose.ui.semantics.customActions
+import androidx.compose.ui.semantics.semantics
+import androidx.compose.ui.unit.dp
+import app.lawnchair.preferences.PreferenceAdapter
+import app.lawnchair.ui.preferences.components.controls.ClickablePreference
+import app.lawnchair.ui.preferences.components.layout.ExpandAndShrink
+import app.lawnchair.ui.preferences.components.layout.PreferenceGroup
+import app.lawnchair.ui.preferences.components.layout.PreferenceGroupHeading
+import app.lawnchair.ui.preferences.components.layout.PreferenceTemplate
+import com.android.launcher3.R
+import com.android.launcher3.Utilities
+import sh.calvin.reorderable.ReorderableColumn
+import sh.calvin.reorderable.ReorderableScope
+
+data class RecentsQuickAction(
+ val id: Int,
+ val label: String,
+ val adapter: PreferenceAdapter,
+ val description: String? = null,
+)
+
+fun sortListByIdOrder(list: List, order: String): List {
+ val orderList = order.split(",").map { it.toInt() }
+ return list.sortedBy { orderList.indexOf(it.id) }
+}
+
+private const val DEFAULT_ORDER = "0,1,2,3,4"
+
+@Composable
+fun QuickActionsPreferences(
+ adapter: PreferenceAdapter,
+ items: List,
+ modifier: Modifier = Modifier,
+) {
+ QuickActionsPreferences(
+ order = adapter.state.value,
+ onOrderChange = adapter::onChange,
+ items = items,
+ modifier = modifier,
+ )
+}
+
+@Composable
+fun QuickActionsPreferences(
+ order: String,
+ onOrderChange: (String) -> Unit,
+ items: List,
+ modifier: Modifier = Modifier,
+) {
+ var orderedItems = sortListByIdOrder(items, order)
+
+ val isAnyDragging = remember { mutableStateOf(false) }
+ val lastItemIdIndex = remember { mutableIntStateOf(4) }
+
+ val view = LocalView.current
+
+ Column(modifier) {
+ PreferenceGroupHeading(
+ stringResource(id = R.string.recents_actions_label),
+ )
+ Surface(
+ modifier = Modifier.padding(horizontal = 16.dp),
+ shape = MaterialTheme.shapes.large,
+ tonalElevation = if (!isAnyDragging.value) 1.dp else 0.dp,
+ ) {
+ ReorderableColumn(
+ modifier = Modifier,
+ list = orderedItems,
+ onSettle = { fromIndex, toIndex ->
+ orderedItems = orderedItems.toMutableList().apply {
+ add(toIndex, removeAt(fromIndex))
+ }.toList().also { items ->
+ onOrderChange(
+ items.map { it.id }.joinToString(separator = ","),
+ )
+ isAnyDragging.value = false
+ lastItemIdIndex.intValue = items.last().id
+ }
+ },
+ onMove = {
+ isAnyDragging.value = true
+ if (Utilities.ATLEAST_U) {
+ view.performHapticFeedback(HapticFeedbackConstants.SEGMENT_FREQUENT_TICK)
+ }
+ },
+ ) { index, item, isDragging ->
+ key(item.id) {
+ val scope = this
+
+ val interactionSource = remember { MutableInteractionSource() }
+
+ Card(
+ elevation = if (isDragging) {
+ CardDefaults.elevatedCardElevation()
+ } else {
+ CardDefaults.cardElevation(
+ 0.dp,
+ )
+ },
+ colors = if (isDragging) {
+ CardDefaults.elevatedCardColors()
+ } else {
+ CardDefaults.cardColors(
+ Color.Transparent,
+ )
+ },
+ modifier = Modifier
+ .semantics {
+ customActions = listOf(
+ CustomAccessibilityAction(
+ label = "Move up",
+ action = {
+ if (index > 0) {
+ orderedItems =
+ orderedItems
+ .toMutableList()
+ .apply {
+ add(index - 1, removeAt(index))
+ }
+ true
+ } else {
+ false
+ }
+ },
+ ),
+ CustomAccessibilityAction(
+ label = "Move down",
+ action = {
+ if (index < orderedItems.size - 1) {
+ orderedItems =
+ orderedItems
+ .toMutableList()
+ .apply {
+ add(index + 1, removeAt(index))
+ }
+ true
+ } else {
+ false
+ }
+ },
+ ),
+ )
+ },
+ ) {
+ DraggableSwitchPreference(
+ checked = item.adapter.state.value,
+ onCheckedChange = item.adapter::onChange,
+ label = item.label,
+ description = item.description,
+ interactionSource = interactionSource,
+ dragIndicator = {
+ DragHandle(
+ interactionSource = interactionSource,
+ scope = scope,
+ )
+ },
+ )
+ AnimatedVisibility(visible = !isAnyDragging.value) {
+ if (index != lastItemIdIndex.intValue) {
+ HorizontalDivider()
+ }
+ }
+ }
+ }
+ }
+ }
+
+ ExpandAndShrink(visible = order != DEFAULT_ORDER) {
+ PreferenceGroup {
+ ClickablePreference(label = stringResource(id = R.string.action_reset)) {
+ onOrderChange(DEFAULT_ORDER)
+ }
+ }
+ }
+ }
+}
+
+@Composable
+fun DraggableSwitchPreference(
+ checked: Boolean,
+ onCheckedChange: (Boolean) -> Unit,
+ label: String,
+ interactionSource: MutableInteractionSource,
+ dragIndicator: @Composable () -> Unit,
+ modifier: Modifier = Modifier,
+ enabled: Boolean = true,
+ description: String? = null,
+) {
+ PreferenceTemplate(
+ modifier = modifier.clickable(
+ enabled = enabled,
+ onClick = {
+ onCheckedChange(!checked)
+ },
+ interactionSource = interactionSource,
+ indication = ripple(),
+ ),
+ contentModifier = Modifier
+ .fillMaxHeight()
+ .padding(vertical = 16.dp)
+ .padding(start = 16.dp),
+ title = { Text(text = label) },
+ description = { description?.let { Text(text = it) } },
+ startWidget = {
+ dragIndicator()
+ },
+ endWidget = {
+ Switch(
+ modifier = Modifier
+ .padding(all = 16.dp)
+ .height(24.dp),
+ checked = checked,
+ onCheckedChange = onCheckedChange,
+ enabled = enabled,
+ )
+ },
+ enabled = enabled,
+ applyPaddings = false,
+ )
+}
+
+@Composable
+private fun DragHandle(
+ scope: ReorderableScope,
+ interactionSource: MutableInteractionSource,
+ modifier: Modifier = Modifier,
+) {
+ val view = LocalView.current
+ IconButton(
+ modifier = with(scope) {
+ modifier.longPressDraggableHandle(
+ onDragStarted = {
+ if (Utilities.ATLEAST_U) {
+ view.performHapticFeedback(HapticFeedbackConstants.DRAG_START)
+ }
+ },
+ onDragStopped = {
+ if (Utilities.ATLEAST_R) {
+ view.performHapticFeedback(HapticFeedbackConstants.GESTURE_END)
+ }
+ },
+ )
+ },
+ onClick = {},
+ interactionSource = interactionSource,
+ ) {
+ Icon(
+ imageVector = Icons.Rounded.DragHandle,
+ contentDescription = "Drag indicator",
+ modifier = Modifier.width(24.dp),
+ )
+ }
+}
diff --git a/lawnchair/src/app/lawnchair/ui/preferences/components/WebSearchProvider.kt b/lawnchair/src/app/lawnchair/ui/preferences/components/WebSearchProvider.kt
new file mode 100644
index 00000000000..424f14d0f4e
--- /dev/null
+++ b/lawnchair/src/app/lawnchair/ui/preferences/components/WebSearchProvider.kt
@@ -0,0 +1,98 @@
+package app.lawnchair.ui.preferences.components
+
+import androidx.compose.foundation.layout.Arrangement
+import androidx.compose.foundation.layout.Row
+import androidx.compose.foundation.layout.fillMaxHeight
+import androidx.compose.foundation.layout.fillMaxWidth
+import androidx.compose.foundation.layout.padding
+import androidx.compose.material3.Text
+import androidx.compose.runtime.Composable
+import androidx.compose.runtime.remember
+import androidx.compose.ui.Modifier
+import androidx.compose.ui.res.stringResource
+import androidx.compose.ui.unit.dp
+import app.lawnchair.preferences.PreferenceAdapter
+import app.lawnchair.search.algorithms.data.WebSearchProvider
+import app.lawnchair.ui.preferences.components.controls.ListPreferenceEntry
+import app.lawnchair.ui.preferences.components.layout.Chip
+import app.lawnchair.ui.preferences.components.layout.PreferenceTemplate
+import com.android.launcher3.R
+import kotlinx.collections.immutable.ImmutableList
+import kotlinx.collections.immutable.toPersistentList
+
+@Composable
+fun WebSearchProvider(
+ adapter: PreferenceAdapter,
+ modifier: Modifier = Modifier,
+) {
+ val entries = remember {
+ WebSearchProvider.values().map { mode ->
+ ListPreferenceEntry(
+ value = mode,
+ label = { stringResource(id = mode.label) },
+ )
+ }.toPersistentList()
+ }
+
+ ListPreferenceChips(
+ adapter = adapter,
+ entries = entries,
+ label = stringResource(R.string.allapps_web_suggestion_provider_label),
+ modifier = modifier,
+ )
+}
+
+@Composable
+fun ListPreferenceChips(
+ adapter: PreferenceAdapter,
+ entries: ImmutableList>,
+ label: String,
+ modifier: Modifier = Modifier,
+ enabled: Boolean = true,
+) {
+ ListPreferenceChips(
+ entries = entries,
+ value = adapter.state.value,
+ onValueChange = adapter::onChange,
+ label = label,
+ modifier = modifier,
+ enabled = enabled,
+ )
+}
+
+@Composable
+fun ListPreferenceChips(
+ entries: ImmutableList>,
+ value: T,
+ onValueChange: (T) -> Unit,
+ label: String,
+ modifier: Modifier = Modifier,
+ enabled: Boolean = true,
+) {
+ PreferenceTemplate(
+ modifier = modifier,
+ contentModifier = Modifier
+ .fillMaxHeight()
+ .padding(vertical = 16.dp)
+ .padding(start = 16.dp),
+ title = { Text(text = label) },
+ description = {
+ Row(
+ horizontalArrangement = Arrangement.spacedBy(space = 8.dp),
+ modifier = Modifier
+ .fillMaxWidth()
+ .padding(top = 8.dp),
+ ) {
+ entries.forEach { item ->
+ Chip(
+ label = item.label(),
+ selected = item.value == value,
+ onClick = { onValueChange(item.value) },
+ )
+ }
+ }
+ },
+ enabled = enabled,
+ applyPaddings = false,
+ )
+}
diff --git a/lawnchair/src/app/lawnchair/ui/preferences/components/colorpreference/ColorPreferenceModelList.kt b/lawnchair/src/app/lawnchair/ui/preferences/components/colorpreference/ColorPreferenceModelList.kt
index e2e2f49c945..222c23431fe 100644
--- a/lawnchair/src/app/lawnchair/ui/preferences/components/colorpreference/ColorPreferenceModelList.kt
+++ b/lawnchair/src/app/lawnchair/ui/preferences/components/colorpreference/ColorPreferenceModelList.kt
@@ -17,6 +17,13 @@ class ColorPreferenceModelList(context: Context) {
dynamicEntries = dynamicColors,
),
)
+ registerModel(
+ ColorPreferenceModel(
+ prefObject = prefs.strokeColorStyle,
+ labelRes = R.string.qsb_hotseat_stroke_color,
+ dynamicEntries = dynamicColors,
+ ),
+ )
registerModel(
ColorPreferenceModel(
prefObject = prefs.notificationDotColor,
diff --git a/lawnchair/src/app/lawnchair/ui/preferences/components/colorpreference/ColorSelectionPreference.kt b/lawnchair/src/app/lawnchair/ui/preferences/components/colorpreference/ColorSelectionPreference.kt
index bcc6e316745..cb9847ef73b 100644
--- a/lawnchair/src/app/lawnchair/ui/preferences/components/colorpreference/ColorSelectionPreference.kt
+++ b/lawnchair/src/app/lawnchair/ui/preferences/components/colorpreference/ColorSelectionPreference.kt
@@ -54,8 +54,8 @@ fun ColorSelection(
}
val defaultTabIndex = when {
dynamicEntries.any { it.value == appliedColor } -> 0
- staticEntries.any { it.value == appliedColor } -> 1
- else -> 2
+ staticEntries.any { it.value == appliedColor } -> 0
+ else -> 1
}
val onPresetClick = { option: ColorOption ->
diff --git a/lawnchair/src/app/lawnchair/ui/preferences/components/controls/PreferenceCategory.kt b/lawnchair/src/app/lawnchair/ui/preferences/components/controls/PreferenceCategory.kt
index 4d1128074f8..7775e820276 100644
--- a/lawnchair/src/app/lawnchair/ui/preferences/components/controls/PreferenceCategory.kt
+++ b/lawnchair/src/app/lawnchair/ui/preferences/components/controls/PreferenceCategory.kt
@@ -19,17 +19,14 @@ package app.lawnchair.ui.preferences.components.controls
import androidx.annotation.DrawableRes
import androidx.compose.foundation.background
import androidx.compose.foundation.clickable
-import androidx.compose.foundation.interaction.MutableInteractionSource
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.size
import androidx.compose.material3.Icon
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Text
-import androidx.compose.material3.ripple
import androidx.compose.material3.surfaceColorAtElevation
import androidx.compose.runtime.Composable
-import androidx.compose.runtime.remember
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.clip
@@ -54,13 +51,7 @@ fun PreferenceCategory(
modifier = modifier
.padding(horizontal = 16.dp)
.clip(MaterialTheme.shapes.large)
- .clickable(
- interactionSource = remember { MutableInteractionSource() },
- indication = ripple(
- bounded = true,
- color = MaterialTheme.colorScheme.primaryContainer,
- ),
- ) { onNavigate() }
+ .clickable { onNavigate() }
.background(
if (isSelected) MaterialTheme.colorScheme.surfaceColorAtElevation(4.dp) else Color.Transparent,
),
diff --git a/lawnchair/src/app/lawnchair/ui/preferences/components/controls/SwitchPreference.kt b/lawnchair/src/app/lawnchair/ui/preferences/components/controls/SwitchPreference.kt
index 35f8ea07cef..86c548a59ea 100644
--- a/lawnchair/src/app/lawnchair/ui/preferences/components/controls/SwitchPreference.kt
+++ b/lawnchair/src/app/lawnchair/ui/preferences/components/controls/SwitchPreference.kt
@@ -18,6 +18,7 @@ package app.lawnchair.ui.preferences.components.controls
import androidx.compose.foundation.background
import androidx.compose.foundation.clickable
+import androidx.compose.foundation.interaction.MutableInteractionSource
import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.fillMaxHeight
import androidx.compose.foundation.layout.height
@@ -25,7 +26,9 @@ import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.width
import androidx.compose.material3.Switch
import androidx.compose.material3.Text
+import androidx.compose.material3.ripple
import androidx.compose.runtime.Composable
+import androidx.compose.runtime.remember
import androidx.compose.ui.Modifier
import androidx.compose.ui.unit.dp
import app.lawnchair.preferences.PreferenceAdapter
@@ -68,8 +71,14 @@ fun SwitchPreference(
enabled: Boolean = true,
onClick: (() -> Unit)? = null,
) {
+ val interactionSource = remember { MutableInteractionSource() }
+
PreferenceTemplate(
- modifier = modifier.clickable(enabled = enabled) {
+ modifier = modifier.clickable(
+ enabled = enabled,
+ indication = ripple(),
+ interactionSource = interactionSource,
+ ) {
if (onClick != null) {
onClick()
} else {
@@ -99,6 +108,7 @@ fun SwitchPreference(
checked = checked,
onCheckedChange = onCheckedChange,
enabled = enabled,
+ interactionSource = interactionSource,
)
},
enabled = enabled,
diff --git a/lawnchair/src/app/lawnchair/ui/preferences/components/layout/PreferenceGroup.kt b/lawnchair/src/app/lawnchair/ui/preferences/components/layout/PreferenceGroup.kt
index 3bd4ec0bf53..6f42b008dc7 100644
--- a/lawnchair/src/app/lawnchair/ui/preferences/components/layout/PreferenceGroup.kt
+++ b/lawnchair/src/app/lawnchair/ui/preferences/components/layout/PreferenceGroup.kt
@@ -29,6 +29,8 @@ import androidx.compose.material3.Surface
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
+import androidx.compose.ui.semantics.heading
+import androidx.compose.ui.semantics.semantics
import androidx.compose.ui.unit.Dp
import androidx.compose.ui.unit.dp
@@ -88,6 +90,7 @@ fun PreferenceGroupHeading(
text = heading,
style = MaterialTheme.typography.titleSmall,
color = MaterialTheme.colorScheme.primary,
+ modifier = Modifier.semantics { this.heading() },
)
}
} else {
diff --git a/lawnchair/src/app/lawnchair/ui/preferences/components/layout/PreferenceTemplate.kt b/lawnchair/src/app/lawnchair/ui/preferences/components/layout/PreferenceTemplate.kt
index 1c1c7dceed1..96f0e2fb860 100644
--- a/lawnchair/src/app/lawnchair/ui/preferences/components/layout/PreferenceTemplate.kt
+++ b/lawnchair/src/app/lawnchair/ui/preferences/components/layout/PreferenceTemplate.kt
@@ -32,6 +32,7 @@ import androidx.compose.runtime.CompositionLocalProvider
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.alpha
+import androidx.compose.ui.semantics.semantics
import androidx.compose.ui.unit.Dp
import androidx.compose.ui.unit.dp
import app.lawnchair.ui.util.addIf
@@ -59,6 +60,7 @@ fun PreferenceTemplate(
verticalAlignment = verticalAlignment,
modifier = modifier
.height(IntrinsicSize.Min)
+ .semantics(mergeDescendants = true) {}
.fillMaxWidth()
.addIf(applyPaddings) {
padding(horizontal = horizontalPadding, vertical = verticalPadding)
diff --git a/lawnchair/src/app/lawnchair/ui/preferences/data/liveinfo/model/LiveInformation.kt b/lawnchair/src/app/lawnchair/ui/preferences/data/liveinfo/model/LiveInformation.kt
index b119399315d..cd69edc2230 100644
--- a/lawnchair/src/app/lawnchair/ui/preferences/data/liveinfo/model/LiveInformation.kt
+++ b/lawnchair/src/app/lawnchair/ui/preferences/data/liveinfo/model/LiveInformation.kt
@@ -6,6 +6,7 @@ import kotlinx.serialization.Serializable
@Serializable
data class LiveInformation(
+ private val version: Int = 1,
private val announcements: List,
) {
@@ -14,6 +15,7 @@ data class LiveInformation(
companion object {
val default = LiveInformation(
+ version = 1,
announcements = emptyList(),
)
}
diff --git a/lawnchair/src/app/lawnchair/ui/preferences/destinations/DebugMenuPreferences.kt b/lawnchair/src/app/lawnchair/ui/preferences/destinations/DebugMenuPreferences.kt
index ce190559430..8e8d96afc22 100644
--- a/lawnchair/src/app/lawnchair/ui/preferences/destinations/DebugMenuPreferences.kt
+++ b/lawnchair/src/app/lawnchair/ui/preferences/destinations/DebugMenuPreferences.kt
@@ -11,6 +11,7 @@ import app.lawnchair.preferences.getAdapter
import app.lawnchair.preferences.preferenceManager
import app.lawnchair.preferences2.PreferenceManager2
import app.lawnchair.preferences2.preferenceManager2
+import app.lawnchair.ui.preferences.LocalIsExpandedScreen
import app.lawnchair.ui.preferences.components.controls.ClickablePreference
import app.lawnchair.ui.preferences.components.controls.MainSwitchPreference
import app.lawnchair.ui.preferences.components.controls.SwitchPreference
@@ -38,13 +39,14 @@ fun DebugMenuPreferences(
val enableDebug = prefs.enableDebugMenu.getAdapter()
PreferenceLayout(
- label = "Debug Menu",
+ label = "Debug menu",
+ backArrowVisible = !LocalIsExpandedScreen.current,
modifier = modifier,
) {
- MainSwitchPreference(adapter = enableDebug, label = "Show Debug Menu") {
+ MainSwitchPreference(adapter = enableDebug, label = "Show debug menu") {
PreferenceGroup {
ClickablePreference(
- label = "Feature Flags",
+ label = "Feature flags",
onClick = {
Intent(context, SettingsActivity::class.java)
.putExtra(
@@ -55,12 +57,12 @@ fun DebugMenuPreferences(
},
)
ClickablePreference(
- label = "Crash Launcher",
+ label = "Crash launcher",
onClick = { throw RuntimeException("User triggered crash") },
)
}
- PreferenceGroup(heading = "Debug Flags") {
+ PreferenceGroup(heading = "Debug flags") {
flags2.forEach {
SwitchPreference(
adapter = it.getAdapter(),
@@ -91,11 +93,4 @@ private val PreferenceManager2.textFlags: List 0f) {
+ ColorPreference(preference = prefs2.strokeColorStyle)
+ }
}
}
}
diff --git a/lawnchair/src/app/lawnchair/ui/preferences/destinations/ExperimentalFeaturesPreferences.kt b/lawnchair/src/app/lawnchair/ui/preferences/destinations/ExperimentalFeaturesPreferences.kt
index 4e0f6688711..39a2920a23a 100644
--- a/lawnchair/src/app/lawnchair/ui/preferences/destinations/ExperimentalFeaturesPreferences.kt
+++ b/lawnchair/src/app/lawnchair/ui/preferences/destinations/ExperimentalFeaturesPreferences.kt
@@ -44,11 +44,6 @@ fun ExperimentalFeaturesPreferences(
label = stringResource(id = R.string.always_reload_icons_label),
description = stringResource(id = R.string.always_reload_icons_description),
)
- SwitchPreference(
- adapter = prefs.recentsActionLocked.getAdapter(),
- label = stringResource(id = R.string.recents_lock_unlock),
- description = stringResource(id = R.string.recents_lock_unlock_description),
- )
}
}
}
diff --git a/lawnchair/src/app/lawnchair/ui/preferences/destinations/GeneralPreferences.kt b/lawnchair/src/app/lawnchair/ui/preferences/destinations/GeneralPreferences.kt
index 666686365e5..6b2935f9a99 100644
--- a/lawnchair/src/app/lawnchair/ui/preferences/destinations/GeneralPreferences.kt
+++ b/lawnchair/src/app/lawnchair/ui/preferences/destinations/GeneralPreferences.kt
@@ -23,11 +23,13 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.res.stringResource
import androidx.lifecycle.compose.collectAsStateWithLifecycle
+import app.lawnchair.preferences.PreferenceAdapter
import app.lawnchair.preferences.getAdapter
import app.lawnchair.preferences.preferenceManager
import app.lawnchair.preferences2.asState
import app.lawnchair.preferences2.preferenceManager2
import app.lawnchair.theme.color.ColorOption
+import app.lawnchair.theme.color.ColorStyle
import app.lawnchair.ui.preferences.LocalIsExpandedScreen
import app.lawnchair.ui.preferences.LocalPreferenceInteractor
import app.lawnchair.ui.preferences.components.FontPreference
@@ -36,6 +38,8 @@ import app.lawnchair.ui.preferences.components.NotificationDotsPreference
import app.lawnchair.ui.preferences.components.ThemePreference
import app.lawnchair.ui.preferences.components.colorpreference.ColorContrastWarning
import app.lawnchair.ui.preferences.components.colorpreference.ColorPreference
+import app.lawnchair.ui.preferences.components.controls.ListPreference
+import app.lawnchair.ui.preferences.components.controls.ListPreferenceEntry
import app.lawnchair.ui.preferences.components.controls.SliderPreference
import app.lawnchair.ui.preferences.components.controls.SwitchPreference
import app.lawnchair.ui.preferences.components.controls.WarningPreference
@@ -46,6 +50,8 @@ import app.lawnchair.ui.preferences.components.layout.PreferenceLayout
import app.lawnchair.ui.preferences.components.notificationDotsEnabled
import app.lawnchair.ui.preferences.components.notificationServiceEnabled
import com.android.launcher3.R
+import com.android.launcher3.Utilities
+import kotlinx.collections.immutable.toPersistentList
object GeneralRoutes {
const val ICON_PACK = "iconPack"
@@ -119,7 +125,7 @@ fun GeneralPreferences() {
}
}
val wrapAdaptiveIcons = prefs.wrapAdaptiveIcons.getAdapter()
- val transparentIconBackground = prefs.transparentIconBackground.getAdapter()
+
PreferenceGroup(
heading = stringResource(id = R.string.icons),
description = stringResource(id = (R.string.adaptive_icon_background_description)),
@@ -165,6 +171,13 @@ fun GeneralPreferences() {
PreferenceGroup(heading = stringResource(id = R.string.colors)) {
ThemePreference()
ColorPreference(preference = prefs2.accentColor)
+ if (Utilities.ATLEAST_S && prefs2.accentColor.getAdapter().state.value == ColorOption.SystemAccent) {
+ if (!Utilities.ATLEAST_S) {
+ ColorStylePreference(prefs2.colorStyle.getAdapter())
+ }
+ } else {
+ ColorStylePreference(prefs2.colorStyle.getAdapter())
+ }
}
PreferenceGroup(heading = stringResource(id = R.string.notification_dots)) {
@@ -192,6 +205,28 @@ fun GeneralPreferences() {
}
}
+@Composable
+private fun ColorStylePreference(
+ adapter: PreferenceAdapter,
+ modifier: Modifier = Modifier,
+) {
+ val entries = remember {
+ ColorStyle.values().map { mode ->
+ ListPreferenceEntry(
+ value = mode,
+ label = { stringResource(id = mode.nameResourceId) },
+ )
+ }.toPersistentList()
+ }
+
+ ListPreference(
+ adapter = adapter,
+ entries = entries,
+ label = stringResource(id = R.string.color_style_label),
+ modifier = modifier,
+ )
+}
+
@Composable
private fun NotificationDotColorContrastWarnings(
dotColor: ColorOption,
diff --git a/lawnchair/src/app/lawnchair/ui/preferences/destinations/HomeScreenPreferences.kt b/lawnchair/src/app/lawnchair/ui/preferences/destinations/HomeScreenPreferences.kt
index 9c7b3a68020..c378ec3fedd 100644
--- a/lawnchair/src/app/lawnchair/ui/preferences/destinations/HomeScreenPreferences.kt
+++ b/lawnchair/src/app/lawnchair/ui/preferences/destinations/HomeScreenPreferences.kt
@@ -107,6 +107,31 @@ fun HomeScreenPreferences(
adapter = prefs2.showTopShadow.getAdapter(),
label = stringResource(id = R.string.show_sys_ui_scrim),
)
+
+ val enableWallpaperBlur = prefs.enableWallpaperBlur.getAdapter()
+
+ SwitchPreference(
+ adapter = enableWallpaperBlur,
+ label = stringResource(id = R.string.wallpaper_blur),
+ )
+ ExpandAndShrink(visible = enableWallpaperBlur.state.value) {
+ SliderPreference(
+ label = stringResource(id = R.string.wallpaper_background_blur),
+ adapter = prefs.wallpaperBlur.getAdapter(),
+ step = 5,
+ valueRange = 0..100,
+ showUnit = "%",
+ )
+ }
+ ExpandAndShrink(visible = enableWallpaperBlur.state.value) {
+ SliderPreference(
+ label = stringResource(id = R.string.wallpaper_background_blur_factor),
+ adapter = prefs.wallpaperBlurFactorThreshold.getAdapter(),
+ step = 5,
+ valueRange = 0..100,
+ showUnit = "%",
+ )
+ }
}
PreferenceGroup(heading = stringResource(id = R.string.layout)) {
val columns by prefs.workspaceColumns.getAdapter()
diff --git a/lawnchair/src/app/lawnchair/ui/preferences/destinations/PreferencesDashboard.kt b/lawnchair/src/app/lawnchair/ui/preferences/destinations/PreferencesDashboard.kt
index 1c6ded92a43..783911cee95 100644
--- a/lawnchair/src/app/lawnchair/ui/preferences/destinations/PreferencesDashboard.kt
+++ b/lawnchair/src/app/lawnchair/ui/preferences/destinations/PreferencesDashboard.kt
@@ -7,8 +7,10 @@ import android.content.Intent
import android.content.pm.LauncherApps
import android.os.Process
import android.provider.Settings
+import androidx.compose.foundation.background
import androidx.compose.foundation.clickable
import androidx.compose.foundation.layout.Arrangement
+import androidx.compose.foundation.layout.RowScope
import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.padding
@@ -20,9 +22,11 @@ import androidx.compose.material3.Icon
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Surface
import androidx.compose.material3.Text
+import androidx.compose.material3.surfaceColorAtElevation
import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue
import androidx.compose.ui.Modifier
+import androidx.compose.ui.draw.clip
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.unit.dp
@@ -33,7 +37,6 @@ import app.lawnchair.backup.ui.restoreBackupOpener
import app.lawnchair.preferences.observeAsState
import app.lawnchair.preferences.preferenceManager
import app.lawnchair.ui.OverflowMenu
-import app.lawnchair.ui.preferences.LocalNavController
import app.lawnchair.ui.preferences.components.AnnouncementPreference
import app.lawnchair.ui.preferences.components.controls.PreferenceCategory
import app.lawnchair.ui.preferences.components.controls.WarningPreference
@@ -43,6 +46,7 @@ import app.lawnchair.ui.preferences.components.layout.PreferenceLayout
import app.lawnchair.ui.preferences.components.layout.PreferenceTemplate
import app.lawnchair.ui.preferences.data.liveinfo.SyncLiveInformation
import app.lawnchair.ui.preferences.navigation.Routes
+import app.lawnchair.ui.util.addIf
import app.lawnchair.util.isDefaultLauncher
import app.lawnchair.util.restartLauncher
import com.android.launcher3.BuildConfig
@@ -62,7 +66,7 @@ fun PreferencesDashboard(
modifier = modifier,
verticalArrangement = Arrangement.Top,
backArrowVisible = false,
- actions = { PreferencesOverflowMenu() },
+ actions = { PreferencesOverflowMenu(currentRoute = currentRoute, onNavigate = onNavigate) },
) {
AnnouncementPreference()
@@ -161,22 +165,39 @@ fun PreferencesDashboard(
}
@Composable
-fun PreferencesOverflowMenu(
+fun RowScope.PreferencesOverflowMenu(
+ currentRoute: String,
+ onNavigate: (String) -> Unit,
modifier: Modifier = Modifier,
) {
- val navController = LocalNavController.current
val enableDebug by preferenceManager().enableDebugMenu.observeAsState()
+ val highlightColor = MaterialTheme.colorScheme.surfaceColorAtElevation(4.dp)
+ val highlightShape = MaterialTheme.shapes.large
+
val experimentalFeaturesRoute = Routes.EXPERIMENTAL_FEATURES
if (enableDebug) {
val resolvedRoute = Routes.DEBUG_MENU
ClickableIcon(
imageVector = Icons.Rounded.Build,
- onClick = { navController.navigate(resolvedRoute) },
+ onClick = { onNavigate(resolvedRoute) },
+ modifier = Modifier.addIf(currentRoute.contains(resolvedRoute)) {
+ Modifier
+ .clip(highlightShape)
+ .background(highlightColor)
+ },
)
}
val openRestoreBackup = restoreBackupOpener()
OverflowMenu(
- modifier = modifier,
+ modifier = modifier.addIf(
+ listOf(Routes.CREATE_BACKUP, Routes.RESTORE_BACKUP, experimentalFeaturesRoute).any {
+ currentRoute.contains(it)
+ },
+ ) {
+ Modifier
+ .clip(highlightShape)
+ .background(highlightColor)
+ },
) {
val context = LocalContext.current
DropdownMenuItem(onClick = {
@@ -192,14 +213,14 @@ fun PreferencesOverflowMenu(
Text(text = stringResource(id = R.string.debug_restart_launcher))
})
DropdownMenuItem(onClick = {
- navController.navigate(experimentalFeaturesRoute)
+ onNavigate(experimentalFeaturesRoute)
hideMenu()
}, text = {
Text(text = stringResource(id = R.string.experimental_features_label))
})
PreferenceDivider(modifier = Modifier.padding(vertical = 8.dp))
DropdownMenuItem(onClick = {
- navController.navigate(Routes.CREATE_BACKUP)
+ onNavigate(Routes.CREATE_BACKUP)
hideMenu()
}, text = {
Text(text = stringResource(id = R.string.create_backup))
diff --git a/lawnchair/src/app/lawnchair/ui/preferences/destinations/QuickstepPreferences.kt b/lawnchair/src/app/lawnchair/ui/preferences/destinations/QuickstepPreferences.kt
index b9cc0b3989f..9b1fa4e7af0 100644
--- a/lawnchair/src/app/lawnchair/ui/preferences/destinations/QuickstepPreferences.kt
+++ b/lawnchair/src/app/lawnchair/ui/preferences/destinations/QuickstepPreferences.kt
@@ -15,6 +15,8 @@ import app.lawnchair.preferences.getAdapter
import app.lawnchair.preferences.observeAsState
import app.lawnchair.preferences.preferenceManager
import app.lawnchair.preferences2.preferenceManager2
+import app.lawnchair.ui.preferences.components.QuickActionsPreferences
+import app.lawnchair.ui.preferences.components.RecentsQuickAction
import app.lawnchair.ui.preferences.components.controls.SliderPreference
import app.lawnchair.ui.preferences.components.controls.SwitchPreference
import app.lawnchair.ui.preferences.components.controls.WarningPreference
@@ -37,6 +39,35 @@ fun QuickstepPreferences(
context.packageManager.getLaunchIntentForPackage("com.google.ar.lens") != null
}
+ val recentActionsPreferences: List = listOfNotNull(
+ RecentsQuickAction(
+ id = 0,
+ adapter = prefs.recentsActionScreenshot.getAdapter(),
+ label = stringResource(id = R.string.action_screenshot),
+ ).takeIf { !isOnePlusStock },
+ RecentsQuickAction(
+ id = 1,
+ adapter = prefs.recentsActionShare.getAdapter(),
+ label = stringResource(id = R.string.action_share),
+ ),
+ RecentsQuickAction(
+ id = 2,
+ adapter = prefs.recentsActionLens.getAdapter(),
+ label = stringResource(id = R.string.action_lens),
+ ).takeIf { lensAvailable },
+ RecentsQuickAction(
+ id = 3,
+ adapter = prefs.recentsActionLocked.getAdapter(),
+ label = stringResource(id = R.string.recents_lock_unlock),
+ description = stringResource(id = R.string.recents_lock_unlock_description),
+ ),
+ RecentsQuickAction(
+ id = 4,
+ adapter = prefs.recentsActionClearAll.getAdapter(),
+ label = stringResource(id = R.string.recents_clear_all),
+ ),
+ )
+
PreferenceLayout(
label = stringResource(id = R.string.quickstep_label),
modifier = modifier,
@@ -58,28 +89,12 @@ fun QuickstepPreferences(
)
}
}
- PreferenceGroup(heading = stringResource(id = R.string.recents_actions_label)) {
- if (!isOnePlusStock) {
- SwitchPreference(
- adapter = prefs.recentsActionScreenshot.getAdapter(),
- label = stringResource(id = R.string.action_screenshot),
- )
- }
- SwitchPreference(
- adapter = prefs.recentsActionShare.getAdapter(),
- label = stringResource(id = R.string.action_share),
- )
- if (lensAvailable) {
- SwitchPreference(
- adapter = prefs.recentsActionLens.getAdapter(),
- label = stringResource(id = R.string.action_lens),
- )
- }
- SwitchPreference(
- adapter = prefs.recentsActionClearAll.getAdapter(),
- label = stringResource(id = R.string.recents_clear_all),
- )
- }
+
+ QuickActionsPreferences(
+ items = recentActionsPreferences,
+ adapter = prefs.recentActionOrder.getAdapter(),
+ )
+
val overrideWindowCornerRadius by prefs.overrideWindowCornerRadius.observeAsState()
PreferenceGroup(
heading = stringResource(id = R.string.window_corner_radius_label),
diff --git a/lawnchair/src/app/lawnchair/ui/preferences/destinations/SearchPreferences.kt b/lawnchair/src/app/lawnchair/ui/preferences/destinations/SearchPreferences.kt
index 9fbec717e55..bbfb4e16eb6 100644
--- a/lawnchair/src/app/lawnchair/ui/preferences/destinations/SearchPreferences.kt
+++ b/lawnchair/src/app/lawnchair/ui/preferences/destinations/SearchPreferences.kt
@@ -23,6 +23,7 @@ import app.lawnchair.search.algorithms.LawnchairSearchAlgorithm
import app.lawnchair.ui.preferences.LocalIsExpandedScreen
import app.lawnchair.ui.preferences.components.HiddenAppsInSearchPreference
import app.lawnchair.ui.preferences.components.SearchSuggestionPreference
+import app.lawnchair.ui.preferences.components.WebSearchProvider
import app.lawnchair.ui.preferences.components.controls.ListPreference
import app.lawnchair.ui.preferences.components.controls.ListPreferenceEntry
import app.lawnchair.ui.preferences.components.controls.MainSwitchPreference
@@ -66,6 +67,10 @@ fun SearchPreferences() {
SearchProvider(
context = context,
)
+ SwitchPreference(
+ label = stringResource(R.string.allapps_match_qsb_style_label),
+ adapter = prefs2.matchHotseatQsbStyle.getAdapter(),
+ )
}
PreferenceGroup(heading = stringResource(id = R.string.show_search_result_types)) {
@@ -117,6 +122,10 @@ private fun ASISearchSettings(prefs: PreferenceManager) {
adapter = prefs.searchResultPixelTips.getAdapter(),
label = stringResource(id = R.string.search_pref_result_tips_title),
)
+ SwitchPreference(
+ adapter = prefs.searchResultSettings.getAdapter(),
+ label = stringResource(id = R.string.search_pref_result_settings_title),
+ )
}
@Composable
@@ -156,13 +165,14 @@ private fun LocalSearchSettings(
android.Manifest.permission.READ_EXTERNAL_STORAGE,
)
+ val webSuggestionProvider = stringResource(prefs2.webSuggestionProvider.getAdapter().state.value.label)
SearchSuggestionPreference(
adapter = prefs.searchResultStartPageSuggestion.getAdapter(),
- maxCountAdapter = prefs2.maxSuggestionResultCount.getAdapter(),
+ maxCountAdapter = prefs2.maxWebSuggestionResultCount.getAdapter(),
maxCountRange = 3..10,
label = stringResource(id = R.string.search_pref_result_web_title),
maxCountLabel = stringResource(id = R.string.max_suggestion_result_count_title),
- description = stringResource(id = R.string.search_pref_result_web_description),
+ description = stringResource(id = R.string.search_pref_result_web_provider_description, webSuggestionProvider),
) {
SliderPreference(
label = stringResource(id = R.string.max_web_suggestion_delay),
@@ -171,6 +181,9 @@ private fun LocalSearchSettings(
valueRange = 500..5000,
showUnit = "ms",
)
+ WebSearchProvider(
+ adapter = prefs2.webSuggestionProvider.getAdapter(),
+ )
}
SearchSuggestionPreference(
adapter = prefs.searchResultPeople.getAdapter(),
diff --git a/lawnchair/src/app/lawnchair/ui/preferences/destinations/SmartspacePreferences.kt b/lawnchair/src/app/lawnchair/ui/preferences/destinations/SmartspacePreferences.kt
index 671a2871ea5..a007edffe7c 100644
--- a/lawnchair/src/app/lawnchair/ui/preferences/destinations/SmartspacePreferences.kt
+++ b/lawnchair/src/app/lawnchair/ui/preferences/destinations/SmartspacePreferences.kt
@@ -8,23 +8,15 @@ import android.view.ContextThemeWrapper
import android.view.ViewGroup
import android.view.ViewGroup.LayoutParams.MATCH_PARENT
import androidx.compose.animation.Crossfade
-import androidx.compose.foundation.clickable
-import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Column
-import androidx.compose.foundation.layout.fillMaxHeight
import androidx.compose.foundation.layout.padding
-import androidx.compose.foundation.layout.size
-import androidx.compose.material3.Icon
-import androidx.compose.material3.MaterialTheme
import androidx.compose.runtime.Composable
import androidx.compose.runtime.CompositionLocalProvider
import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.key
import androidx.compose.runtime.remember
-import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.LocalContext
-import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.unit.dp
import androidx.compose.ui.viewinterop.AndroidView
@@ -39,9 +31,11 @@ import app.lawnchair.smartspace.model.SmartspaceTimeFormat
import app.lawnchair.smartspace.model.Smartspacer
import app.lawnchair.smartspace.provider.SmartspaceProvider
import app.lawnchair.ui.preferences.LocalIsExpandedScreen
+import app.lawnchair.ui.preferences.components.controls.ClickablePreference
import app.lawnchair.ui.preferences.components.controls.ListPreference
import app.lawnchair.ui.preferences.components.controls.ListPreferenceEntry
import app.lawnchair.ui.preferences.components.controls.MainSwitchPreference
+import app.lawnchair.ui.preferences.components.controls.SliderPreference
import app.lawnchair.ui.preferences.components.controls.SwitchPreference
import app.lawnchair.ui.preferences.components.controls.TextPreference
import app.lawnchair.ui.preferences.components.layout.DividerColumn
@@ -81,21 +75,21 @@ fun SmartspacePreferences(
PreferenceGroup {
SmartspaceProviderPreference(
adapter = smartspaceModeAdapter,
- endWidget = when (selectedMode) {
- Smartspacer -> {
- { SmartspacerSettings() }
- }
- else -> null
- },
)
}
Crossfade(
- targetState = modeIsLawnchair,
- label = "",
+ targetState = selectedMode,
+ label = "Smartspace setting transision",
) { targetState ->
- if (targetState) {
- LawnchairSmartspaceSettings(smartspaceProvider)
+ when (targetState) {
+ LawnchairSmartspace -> {
+ LawnchairSmartspaceSettings(smartspaceProvider)
+ }
+ Smartspacer -> {
+ SmartspacerSettings()
+ }
+ else -> {}
}
}
}
@@ -136,7 +130,6 @@ private fun LawnchairSmartspaceSettings(
fun SmartspaceProviderPreference(
adapter: PreferenceAdapter,
modifier: Modifier = Modifier,
- endWidget: (@Composable () -> Unit)? = null,
) {
val context = LocalContext.current
@@ -155,7 +148,6 @@ fun SmartspaceProviderPreference(
entries = entries,
label = stringResource(id = R.string.smartspace_mode_label),
modifier = modifier,
- endWidget = endWidget,
)
}
@@ -333,24 +325,24 @@ fun SmartspacerSettings(
modifier: Modifier = Modifier,
) {
val context = LocalContext.current
- Box(
- contentAlignment = Alignment.Center,
- modifier = modifier
- .clickable {
+ val prefs2 = preferenceManager2()
+
+ Column(modifier) {
+ PreferenceGroup(
+ heading = stringResource(id = R.string.smartspacer_settings),
+ ) {
+ SliderPreference(
+ label = stringResource(R.string.maximum_number_of_targets),
+ adapter = prefs2.smartspacerMaxCount.getAdapter(),
+ valueRange = 5..15,
+ step = 1,
+ )
+ ClickablePreference(label = stringResource(R.string.open_smartspacer_settings)) {
val intent = context.packageManager.getLaunchIntentForPackage(
SmartspacerConstants.SMARTSPACER_PACKAGE_NAME,
)
context.startActivity(intent)
}
- .fillMaxHeight()
- .padding(horizontal = 16.dp)
- .size(32.dp),
- ) {
- Icon(
- painter = painterResource(id = R.drawable.ic_setting),
- contentDescription = null,
- modifier = Modifier.size(24.dp),
- tint = MaterialTheme.colorScheme.primary,
- )
+ }
}
}
diff --git a/lawnchair/src/app/lawnchair/ui/theme/Color.kt b/lawnchair/src/app/lawnchair/ui/theme/Color.kt
index a53ad6fba0d..ca4e829b781 100644
--- a/lawnchair/src/app/lawnchair/ui/theme/Color.kt
+++ b/lawnchair/src/app/lawnchair/ui/theme/Color.kt
@@ -9,7 +9,7 @@ import androidx.compose.material3.MaterialTheme
import androidx.compose.runtime.Composable
import androidx.core.graphics.ColorUtils
import app.lawnchair.theme.UiColorMode
-import app.lawnchair.theme.color.ColorTokens
+import app.lawnchair.theme.color.tokens.ColorTokens
import com.android.launcher3.R
import com.android.launcher3.Utilities
import com.android.launcher3.util.Themes
@@ -60,4 +60,4 @@ fun Context.getSystemAccent(darkTheme: Boolean): Int {
}
@Composable
-fun dividerColor() = MaterialTheme.colorScheme.surfaceVariant
+fun dividerColor() = MaterialTheme.colorScheme.outlineVariant
diff --git a/lawnchair/src/app/lawnchair/ui/theme/Theme.kt b/lawnchair/src/app/lawnchair/ui/theme/Theme.kt
index 27300818eb8..48e8dfb6c59 100644
--- a/lawnchair/src/app/lawnchair/ui/theme/Theme.kt
+++ b/lawnchair/src/app/lawnchair/ui/theme/Theme.kt
@@ -55,11 +55,11 @@ fun getColorScheme(darkTheme: Boolean): ColorScheme {
val context = LocalContext.current
val preferenceManager2 = preferenceManager2()
val accentColor by preferenceManager2.accentColor.asState()
- val colorScheme = remember(accentColor) {
+ val colorStyle by preferenceManager2.colorStyle.asState()
+
+ val colorScheme = remember(accentColor, colorStyle.style) {
ThemeProvider.INSTANCE.get(context).colorScheme
}
-//
-// colorScheme.accent1
return colorScheme.toM3ColorScheme(isDark = darkTheme)
}
diff --git a/lawnchair/src/app/lawnchair/util/ImageViewWrapper.kt b/lawnchair/src/app/lawnchair/util/ImageViewWrapper.kt
index 2b369890fd6..415671d9062 100644
--- a/lawnchair/src/app/lawnchair/util/ImageViewWrapper.kt
+++ b/lawnchair/src/app/lawnchair/util/ImageViewWrapper.kt
@@ -7,7 +7,7 @@ import android.graphics.Path
import android.graphics.RectF
import android.util.AttributeSet
import androidx.appcompat.widget.AppCompatImageView
-import app.lawnchair.theme.color.ColorTokens
+import app.lawnchair.theme.color.tokens.ColorTokens
import com.android.launcher3.R
class ImageViewWrapper(context: Context, attrs: AttributeSet?) : AppCompatImageView(context, attrs) {
diff --git a/lawnchair/src/app/lawnchair/util/LawnchairUtils.kt b/lawnchair/src/app/lawnchair/util/LawnchairUtils.kt
index fc682b4f0cc..26cf5bd2b52 100644
--- a/lawnchair/src/app/lawnchair/util/LawnchairUtils.kt
+++ b/lawnchair/src/app/lawnchair/util/LawnchairUtils.kt
@@ -29,9 +29,15 @@ import android.content.pm.PackageManager
import android.content.pm.ResolveInfo
import android.content.res.Resources
import android.graphics.Bitmap
+import android.graphics.Canvas
+import android.graphics.Paint
+import android.graphics.RectF
+import android.graphics.drawable.BitmapDrawable
+import android.graphics.drawable.Drawable
import android.net.Uri
import android.os.Looper
import android.provider.OpenableColumns
+import android.util.Log
import android.util.Size
import android.view.View
import android.widget.TextView
@@ -39,12 +45,13 @@ import androidx.core.graphics.ColorUtils
import androidx.core.os.UserManagerCompat
import app.lawnchair.preferences.PreferenceManager
import app.lawnchair.preferences2.PreferenceManager2
-import app.lawnchair.theme.color.ColorTokens
+import app.lawnchair.theme.color.tokens.ColorTokens
import com.android.launcher3.R
import com.android.launcher3.Utilities
import com.android.launcher3.util.Executors.MAIN_EXECUTOR
import com.android.launcher3.util.Themes
import com.android.systemui.shared.system.QuickStepContract
+import com.google.android.renderscript.Toolkit
import com.patrykmichalik.opto.core.firstBlocking
import java.util.concurrent.Callable
import java.util.concurrent.ExecutionException
@@ -245,3 +252,41 @@ fun Context.getDefaultResolveInfo(): ResolveInfo? {
val intent = Intent(Intent.ACTION_MAIN).addCategory(Intent.CATEGORY_HOME)
return packageManager.resolveActivity(intent, PackageManager.MATCH_DEFAULT_ONLY)
}
+
+fun Drawable.toBitmap(): Bitmap {
+ if (this is BitmapDrawable) {
+ return bitmap
+ }
+
+ val bitmap = Bitmap.createBitmap(
+ intrinsicWidth.takeIf { it > 0 } ?: 1,
+ intrinsicHeight.takeIf { it > 0 } ?: 1,
+ Bitmap.Config.ARGB_8888,
+ )
+ val canvas = Canvas(bitmap)
+ setBounds(0, 0, canvas.width, canvas.height)
+ draw(canvas)
+
+ return bitmap
+}
+
+fun createRoundedBitmap(color: Int, cornerRadius: Float): Bitmap {
+ val bitmap = Bitmap.createBitmap(1, 1, Bitmap.Config.ARGB_8888)
+ val canvas = Canvas(bitmap)
+ val paint = Paint(Paint.ANTI_ALIAS_FLAG).apply {
+ this.color = color
+ }
+ val rect = RectF(0f, 0f, canvas.width.toFloat(), canvas.height.toFloat())
+ canvas.drawRoundRect(rect, cornerRadius, cornerRadius, paint)
+ return bitmap
+}
+
+fun blurBitmap(source: Bitmap, percent: Int, factorThreshold: Int = 25): Bitmap {
+ try {
+ val factor = percent.toFloat().div(100f) * factorThreshold
+ return Toolkit.blur(source, factor.toInt())
+ } catch (e: Exception) {
+ Log.e("LawnchairUtil", "Error bluring bitmap: $e")
+ return source
+ }
+}
diff --git a/lawnchair/src/app/lawnchair/views/ComposeBottomSheet.kt b/lawnchair/src/app/lawnchair/views/ComposeBottomSheet.kt
index 067bb69fc0e..ba439e413b3 100644
--- a/lawnchair/src/app/lawnchair/views/ComposeBottomSheet.kt
+++ b/lawnchair/src/app/lawnchair/views/ComposeBottomSheet.kt
@@ -7,8 +7,10 @@ import android.view.ViewGroup
import android.view.ViewGroup.LayoutParams.MATCH_PARENT
import android.view.animation.Interpolator
import android.widget.LinearLayout
+import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.PaddingValues
+import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.WindowInsets
import androidx.compose.foundation.layout.WindowInsetsSides
import androidx.compose.foundation.layout.asPaddingValues
@@ -16,6 +18,7 @@ import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.ime
import androidx.compose.foundation.layout.only
import androidx.compose.foundation.layout.padding
+import androidx.compose.foundation.layout.widthIn
import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.material3.LocalContentColor
import androidx.compose.material3.MaterialTheme
@@ -29,7 +32,7 @@ import androidx.compose.ui.graphics.graphicsLayer
import androidx.compose.ui.platform.ComposeView
import androidx.compose.ui.platform.LocalDensity
import androidx.compose.ui.unit.dp
-import app.lawnchair.theme.color.ColorTokens
+import app.lawnchair.theme.color.tokens.ColorTokens
import app.lawnchair.ui.theme.LawnchairTheme
import app.lawnchair.util.ProvideLifecycleState
import app.lawnchair.util.minus
@@ -209,21 +212,28 @@ class ComposeBottomSheet(context: Context) :
setImeShift(with(LocalDensity.current) { -translation.calculateBottomPadding().toPx() })
SystemUi(setStatusBar = false)
- Surface(
- modifier = Modifier
- .fillMaxWidth(),
- shape = backgroundShape,
- color = MaterialTheme.colorScheme.background,
+ Row(
+ horizontalArrangement = Arrangement.Center,
+ modifier = Modifier.fillMaxWidth(),
) {
- Box(
+ Surface(
modifier = Modifier
- .padding(contentPaddings)
- .graphicsLayer(
- alpha = 1f - (hintCloseProgress * 0.5f),
- translationY = hintCloseProgress * -hintCloseDistance,
- ),
+ .widthIn(max = 640.dp)
+ .fillMaxWidth(),
+ shape = backgroundShape,
+ color = MaterialTheme.colorScheme.background,
+
) {
- content(this@ComposeBottomSheet)
+ Box(
+ modifier = Modifier
+ .padding(contentPaddings)
+ .graphicsLayer(
+ alpha = 1f - (hintCloseProgress * 0.5f),
+ translationY = hintCloseProgress * -hintCloseDistance,
+ ),
+ ) {
+ content(this@ComposeBottomSheet)
+ }
}
}
}
diff --git a/lawnchair/src/com/android/systemui/monet/ColorScheme.kt b/lawnchair/src/com/android/systemui/monet/ColorScheme.kt
index 865359db899..b4888e0e40f 100644
--- a/lawnchair/src/com/android/systemui/monet/ColorScheme.kt
+++ b/lawnchair/src/com/android/systemui/monet/ColorScheme.kt
@@ -16,83 +16,426 @@
package com.android.systemui.monet
+import android.annotation.ColorInt
import android.graphics.Color
-import androidx.annotation.ColorInt
import com.androidinternal.graphics.ColorUtils
import com.androidinternal.graphics.cam.Cam
+import com.androidinternal.graphics.cam.CamUtils
+import kotlin.math.absoluteValue
+import kotlin.math.max
+import kotlin.math.min
+import kotlin.math.roundToInt
const val TAG = "ColorScheme"
-
const val ACCENT1_CHROMA = 48.0f
-const val ACCENT2_CHROMA = 16.0f
-const val ACCENT3_CHROMA = 32.0f
-const val ACCENT3_HUE_SHIFT = 60.0f
+const val GOOGLE_BLUE = 0xFF1b6ef3.toInt()
+const val MIN_CHROMA = 5
-const val NEUTRAL1_CHROMA = 4.0f
-const val NEUTRAL2_CHROMA = 8.0f
+internal interface Hue {
+ fun get(sourceColor: Cam): Double
-const val GOOGLE_BLUE = 0xFF1b6ef3.toInt()
+ /**
+ * Given a hue, and a mapping of hues to hue rotations, find which hues in the mapping the hue
+ * fall betweens, and use the hue rotation of the lower hue.
+ *
+ * @param sourceHue hue of source color
+ * @param hueAndRotations list of pairs, where the first item in a pair is a hue, and the second
+ * item in the pair is a hue rotation that should be applied
+ */
+ fun getHueRotation(sourceHue: Float, hueAndRotations: List>): Double {
+ val sanitizedSourceHue = (if (sourceHue < 0 || sourceHue >= 360) 0 else sourceHue).toFloat()
+ for (i in 0..hueAndRotations.size - 2) {
+ val thisHue = hueAndRotations[i].first.toFloat()
+ val nextHue = hueAndRotations[i + 1].first.toFloat()
+ if (thisHue <= sanitizedSourceHue && sanitizedSourceHue < nextHue) {
+ return ColorScheme.wrapDegreesDouble(
+ sanitizedSourceHue.toDouble() + hueAndRotations[i].second,
+ )
+ }
+ }
+ // If this statement executes, something is wrong, there should have been a rotation
+ // found using the arrays.
+ return sourceHue.toDouble()
+ }
+}
-const val MIN_CHROMA = 5
+internal class HueSource : Hue {
+ override fun get(sourceColor: Cam): Double {
+ return sourceColor.hue.toDouble()
+ }
+}
+
+internal class HueAdd(val amountDegrees: Double) : Hue {
+ override fun get(sourceColor: Cam): Double {
+ return ColorScheme.wrapDegreesDouble(sourceColor.hue.toDouble() + amountDegrees)
+ }
+}
+
+internal class HueSubtract(val amountDegrees: Double) : Hue {
+ override fun get(sourceColor: Cam): Double {
+ return ColorScheme.wrapDegreesDouble(sourceColor.hue.toDouble() - amountDegrees)
+ }
+}
+
+internal class HueVibrantSecondary() : Hue {
+ val hueToRotations =
+ listOf(
+ Pair(0, 18),
+ Pair(41, 15),
+ Pair(61, 10),
+ Pair(101, 12),
+ Pair(131, 15),
+ Pair(181, 18),
+ Pair(251, 15),
+ Pair(301, 12),
+ Pair(360, 12),
+ )
+
+ override fun get(sourceColor: Cam): Double {
+ return getHueRotation(sourceColor.hue, hueToRotations)
+ }
+}
+
+internal class HueVibrantTertiary() : Hue {
+ val hueToRotations =
+ listOf(
+ Pair(0, 35),
+ Pair(41, 30),
+ Pair(61, 20),
+ Pair(101, 25),
+ Pair(131, 30),
+ Pair(181, 35),
+ Pair(251, 30),
+ Pair(301, 25),
+ Pair(360, 25),
+ )
+
+ override fun get(sourceColor: Cam): Double {
+ return getHueRotation(sourceColor.hue, hueToRotations)
+ }
+}
+
+internal class HueExpressiveSecondary() : Hue {
+ val hueToRotations =
+ listOf(
+ Pair(0, 45),
+ Pair(21, 95),
+ Pair(51, 45),
+ Pair(121, 20),
+ Pair(151, 45),
+ Pair(191, 90),
+ Pair(271, 45),
+ Pair(321, 45),
+ Pair(360, 45),
+ )
+
+ override fun get(sourceColor: Cam): Double {
+ return getHueRotation(sourceColor.hue, hueToRotations)
+ }
+}
+
+internal class HueExpressiveTertiary() : Hue {
+ val hueToRotations =
+ listOf(
+ Pair(0, 120),
+ Pair(21, 120),
+ Pair(51, 20),
+ Pair(121, 45),
+ Pair(151, 20),
+ Pair(191, 15),
+ Pair(271, 20),
+ Pair(321, 120),
+ Pair(360, 120),
+ )
+
+ override fun get(sourceColor: Cam): Double {
+ return getHueRotation(sourceColor.hue, hueToRotations)
+ }
+}
+
+internal interface Chroma {
+ fun get(sourceColor: Cam): Double
+
+ companion object {
+ val MAX_VALUE = 120.0
+ val MIN_VALUE = 0.0
+ }
+}
+
+internal class ChromaMaxOut : Chroma {
+ override fun get(sourceColor: Cam): Double {
+ // Intentionally high. Gamut mapping from impossible HCT to sRGB will ensure that
+ // the maximum chroma is reached, even if lower than this constant.
+ return Chroma.MAX_VALUE + 10.0
+ }
+}
+
+internal class ChromaMultiple(val multiple: Double) : Chroma {
+ override fun get(sourceColor: Cam): Double {
+ return sourceColor.chroma * multiple
+ }
+}
+
+internal class ChromaAdd(val amount: Double) : Chroma {
+ override fun get(sourceColor: Cam): Double {
+ return sourceColor.chroma + amount
+ }
+}
+
+internal class ChromaBound(
+ val baseChroma: Chroma,
+ val minVal: Double,
+ val maxVal: Double,
+) : Chroma {
+ override fun get(sourceColor: Cam): Double {
+ val result = baseChroma.get(sourceColor)
+ return min(max(result, minVal), maxVal)
+ }
+}
+
+internal class ChromaConstant(val chroma: Double) : Chroma {
+ override fun get(sourceColor: Cam): Double {
+ return chroma
+ }
+}
+
+internal class ChromaSource : Chroma {
+ override fun get(sourceColor: Cam): Double {
+ return sourceColor.chroma.toDouble()
+ }
+}
+
+internal class TonalSpec(val hue: Hue = HueSource(), val chroma: Chroma) {
+ fun shades(sourceColor: Cam): List {
+ val hue = hue.get(sourceColor)
+ val chroma = chroma.get(sourceColor)
+ return Shades.of(hue.toFloat(), chroma.toFloat()).toList()
+ }
+
+ fun getAtTone(sourceColor: Cam, tone: Float): Int {
+ val hue = hue.get(sourceColor)
+ val chroma = chroma.get(sourceColor)
+ return ColorUtils.CAMToColor(hue.toFloat(), chroma.toFloat(), (1000f - tone) / 10f)
+ }
+}
+
+internal class CoreSpec(
+ val a1: TonalSpec,
+ val a2: TonalSpec,
+ val a3: TonalSpec,
+ val n1: TonalSpec,
+ val n2: TonalSpec,
+)
+
+enum class Style(internal val coreSpec: CoreSpec) {
+ SPRITZ(
+ CoreSpec(
+ a1 = TonalSpec(HueSource(), ChromaConstant(12.0)),
+ a2 = TonalSpec(HueSource(), ChromaConstant(8.0)),
+ a3 = TonalSpec(HueSource(), ChromaConstant(16.0)),
+ n1 = TonalSpec(HueSource(), ChromaConstant(2.0)),
+ n2 = TonalSpec(HueSource(), ChromaConstant(2.0)),
+ ),
+ ),
+ TONAL_SPOT(
+ CoreSpec(
+ a1 = TonalSpec(HueSource(), ChromaConstant(36.0)),
+ a2 = TonalSpec(HueSource(), ChromaConstant(16.0)),
+ a3 = TonalSpec(HueAdd(60.0), ChromaConstant(24.0)),
+ n1 = TonalSpec(HueSource(), ChromaConstant(6.0)),
+ n2 = TonalSpec(HueSource(), ChromaConstant(8.0)),
+ ),
+ ),
+ VIBRANT(
+ CoreSpec(
+ a1 = TonalSpec(HueSource(), ChromaMaxOut()),
+ a2 = TonalSpec(HueVibrantSecondary(), ChromaConstant(24.0)),
+ a3 = TonalSpec(HueVibrantTertiary(), ChromaConstant(32.0)),
+ n1 = TonalSpec(HueSource(), ChromaConstant(10.0)),
+ n2 = TonalSpec(HueSource(), ChromaConstant(12.0)),
+ ),
+ ),
+ EXPRESSIVE(
+ CoreSpec(
+ a1 = TonalSpec(HueAdd(240.0), ChromaConstant(40.0)),
+ a2 = TonalSpec(HueExpressiveSecondary(), ChromaConstant(24.0)),
+ a3 = TonalSpec(HueExpressiveTertiary(), ChromaConstant(32.0)),
+ n1 = TonalSpec(HueAdd(15.0), ChromaConstant(8.0)),
+ n2 = TonalSpec(HueAdd(15.0), ChromaConstant(12.0)),
+ ),
+ ),
+ RAINBOW(
+ CoreSpec(
+ a1 = TonalSpec(HueSource(), ChromaConstant(48.0)),
+ a2 = TonalSpec(HueSource(), ChromaConstant(16.0)),
+ a3 = TonalSpec(HueAdd(60.0), ChromaConstant(24.0)),
+ n1 = TonalSpec(HueSource(), ChromaConstant(0.0)),
+ n2 = TonalSpec(HueSource(), ChromaConstant(0.0)),
+ ),
+ ),
+ FRUIT_SALAD(
+ CoreSpec(
+ a1 = TonalSpec(HueSubtract(50.0), ChromaConstant(48.0)),
+ a2 = TonalSpec(HueSubtract(50.0), ChromaConstant(36.0)),
+ a3 = TonalSpec(HueSource(), ChromaConstant(36.0)),
+ n1 = TonalSpec(HueSource(), ChromaConstant(10.0)),
+ n2 = TonalSpec(HueSource(), ChromaConstant(16.0)),
+ ),
+ ),
+ CONTENT(
+ CoreSpec(
+ a1 = TonalSpec(HueSource(), ChromaSource()),
+ a2 = TonalSpec(HueSource(), ChromaMultiple(0.33)),
+ a3 = TonalSpec(HueSource(), ChromaMultiple(0.66)),
+ n1 = TonalSpec(HueSource(), ChromaMultiple(0.0833)),
+ n2 = TonalSpec(HueSource(), ChromaMultiple(0.1666)),
+ ),
+ ),
+ MONOCHROMATIC(
+ CoreSpec(
+ a1 = TonalSpec(HueSource(), ChromaConstant(.0)),
+ a2 = TonalSpec(HueSource(), ChromaConstant(.0)),
+ a3 = TonalSpec(HueSource(), ChromaConstant(.0)),
+ n1 = TonalSpec(HueSource(), ChromaConstant(.0)),
+ n2 = TonalSpec(HueSource(), ChromaConstant(.0)),
+ ),
+ ),
+ CLOCK(
+ CoreSpec(
+ a1 = TonalSpec(HueSource(), ChromaBound(ChromaSource(), 20.0, Chroma.MAX_VALUE)),
+ a2 = TonalSpec(HueAdd(10.0), ChromaBound(ChromaMultiple(0.85), 17.0, 40.0)),
+ a3 = TonalSpec(HueAdd(20.0), ChromaBound(ChromaAdd(20.0), 50.0, Chroma.MAX_VALUE)),
+ // Not Used
+ n1 = TonalSpec(HueSource(), ChromaConstant(0.0)),
+ n2 = TonalSpec(HueSource(), ChromaConstant(0.0)),
+ ),
+ ),
+ CLOCK_VIBRANT(
+ CoreSpec(
+ a1 = TonalSpec(HueSource(), ChromaBound(ChromaSource(), 70.0, Chroma.MAX_VALUE)),
+ a2 = TonalSpec(HueAdd(20.0), ChromaBound(ChromaSource(), 70.0, Chroma.MAX_VALUE)),
+ a3 = TonalSpec(HueAdd(60.0), ChromaBound(ChromaSource(), 70.0, Chroma.MAX_VALUE)),
+ // Not Used
+ n1 = TonalSpec(HueSource(), ChromaConstant(0.0)),
+ n2 = TonalSpec(HueSource(), ChromaConstant(0.0)),
+ ),
+ ),
+}
+
+class TonalPalette
+internal constructor(
+ private val spec: TonalSpec,
+ seedColor: Int,
+) {
+ val seedCam: Cam = Cam.fromInt(seedColor)
+ val allShades: List = spec.shades(seedCam)
+ val allShadesMapped: Map = SHADE_KEYS.zip(allShades).toMap()
+ val baseColor: Int
+
+ init {
+ val h = spec.hue.get(seedCam).toFloat()
+ val c = spec.chroma.get(seedCam).toFloat()
+ baseColor = ColorUtils.CAMToColor(h, c, CamUtils.lstarFromInt(seedColor))
+ }
-class ColorScheme(@ColorInt seed: Int, val darkTheme: Boolean) {
+ // Dynamically computed tones across the full range from 0 to 1000
+ fun getAtTone(tone: Float) = spec.getAtTone(seedCam, tone)
- val accent1: List
- val accent2: List
- val accent3: List
- val neutral1: List
- val neutral2: List
+ // Predefined & precomputed tones
+ val s10: Int
+ get() = this.allShades[0]
+ val s50: Int
+ get() = this.allShades[1]
+ val s100: Int
+ get() = this.allShades[2]
+ val s200: Int
+ get() = this.allShades[3]
+ val s300: Int
+ get() = this.allShades[4]
+ val s400: Int
+ get() = this.allShades[5]
+ val s500: Int
+ get() = this.allShades[6]
+ val s600: Int
+ get() = this.allShades[7]
+ val s700: Int
+ get() = this.allShades[8]
+ val s800: Int
+ get() = this.allShades[9]
+ val s900: Int
+ get() = this.allShades[10]
+ val s1000: Int
+ get() = this.allShades[11]
+ companion object {
+ val SHADE_KEYS = listOf(10, 50, 100, 200, 300, 400, 500, 600, 700, 800, 900, 1000)
+ }
+}
+
+class ColorScheme(
+ @ColorInt val seed: Int,
+ val style: Style = Style.TONAL_SPOT,
+) {
+ val accent1: TonalPalette
+ val accent2: TonalPalette
+ val accent3: TonalPalette
+ val neutral1: TonalPalette
+ val neutral2: TonalPalette
+
+ constructor(@ColorInt seed: Int) : this(seed, Style.TONAL_SPOT)
+
+ val allHues: List
+ get() {
+ return listOf(accent1, accent2, accent3, neutral1, neutral2)
+ }
val allAccentColors: List
get() {
val allColors = mutableListOf()
- allColors.addAll(accent1)
- allColors.addAll(accent2)
- allColors.addAll(accent3)
+ allColors.addAll(accent1.allShades)
+ allColors.addAll(accent2.allShades)
+ allColors.addAll(accent3.allShades)
return allColors
}
-
val allNeutralColors: List
get() {
val allColors = mutableListOf()
- allColors.addAll(neutral1)
- allColors.addAll(neutral2)
+ allColors.addAll(neutral1.allShades)
+ allColors.addAll(neutral2.allShades)
return allColors
}
- val backgroundColor
- get() = ColorUtils.setAlphaComponent(if (darkTheme) neutral1[8] else neutral1[0], 0xFF)
-
- val accentColor
- get() = ColorUtils.setAlphaComponent(if (darkTheme) accent1[2] else accent1[6], 0xFF)
-
init {
val proposedSeedCam = Cam.fromInt(seed)
- val seedArgb = if (seed == Color.TRANSPARENT) {
- GOOGLE_BLUE
- } else if (proposedSeedCam.chroma < 5) {
- GOOGLE_BLUE
- } else {
- seed
- }
- val camSeed = Cam.fromInt(seedArgb)
- val hue = camSeed.hue
- val chroma = camSeed.chroma.coerceAtLeast(ACCENT1_CHROMA)
- val tertiaryHue = wrapDegrees((hue + ACCENT3_HUE_SHIFT).toInt())
- accent1 = Shades.of(hue, chroma).toList()
- accent2 = Shades.of(hue, ACCENT2_CHROMA).toList()
- accent3 = Shades.of(tertiaryHue.toFloat(), ACCENT3_CHROMA).toList()
- neutral1 = Shades.of(hue, NEUTRAL1_CHROMA).toList()
- neutral2 = Shades.of(hue, NEUTRAL2_CHROMA).toList()
+ val seedArgb =
+ if (seed == Color.TRANSPARENT) {
+ GOOGLE_BLUE
+ } else if (style != Style.CONTENT && proposedSeedCam.chroma < 5) {
+ GOOGLE_BLUE
+ } else {
+ seed
+ }
+ accent1 = TonalPalette(style.coreSpec.a1, seedArgb)
+ accent2 = TonalPalette(style.coreSpec.a2, seedArgb)
+ accent3 = TonalPalette(style.coreSpec.a3, seedArgb)
+ neutral1 = TonalPalette(style.coreSpec.n1, seedArgb)
+ neutral2 = TonalPalette(style.coreSpec.n2, seedArgb)
}
+ val shadeCount
+ get() = this.accent1.allShades.size
+ val seedTone: Float
+ get() = 1000f - CamUtils.lstarFromInt(seed) * 10f
+
override fun toString(): String {
return "ColorScheme {\n" +
- " neutral1: ${humanReadable(neutral1)}\n" +
- " neutral2: ${humanReadable(neutral2)}\n" +
- " accent1: ${humanReadable(accent1)}\n" +
- " accent2: ${humanReadable(accent2)}\n" +
- " accent3: ${humanReadable(accent3)}\n" +
+ " seed color: ${stringForColor(seed)}\n" +
+ " style: $style\n" +
+ " palettes: \n" +
+ " ${humanReadable("PRIMARY", accent1.allShades)}\n" +
+ " ${humanReadable("SECONDARY", accent2.allShades)}\n" +
+ " ${humanReadable("TERTIARY", accent3.allShades)}\n" +
+ " ${humanReadable("NEUTRAL", neutral1.allShades)}\n" +
+ " ${humanReadable("NEUTRAL VARIANT", neutral2.allShades)}\n" +
"}"
}
@@ -111,8 +454,68 @@ class ColorScheme(@ColorInt seed: Int, val darkTheme: Boolean) {
}
}
- private fun humanReadable(colors: List): String {
- return colors.joinToString { "#" + Integer.toHexString(it) }
+ public fun wrapDegreesDouble(degrees: Double): Double {
+ return when {
+ degrees < 0 -> {
+ (degrees % 360) + 360
+ }
+
+ degrees >= 360 -> {
+ degrees % 360
+ }
+
+ else -> {
+ degrees
+ }
+ }
+ }
+
+ private fun hueDiff(a: Float, b: Float): Float {
+ return 180f - ((a - b).absoluteValue - 180f).absoluteValue
+ }
+
+ private fun stringForColor(color: Int): String {
+ val width = 4
+ val hct = Cam.fromInt(color)
+ val h = "H${hct.hue.roundToInt().toString().padEnd(width)}"
+ val c = "C${hct.chroma.roundToInt().toString().padEnd(width)}"
+ val t = "T${CamUtils.lstarFromInt(color).roundToInt().toString().padEnd(width)}"
+ val hex = Integer.toHexString(color and 0xffffff).padStart(6, '0').uppercase()
+ return "$h$c$t = #$hex"
+ }
+
+ private fun humanReadable(paletteName: String, colors: List): String {
+ return "$paletteName\n" +
+ colors.map { stringForColor(it) }.joinToString(separator = "\n") { it }
+ }
+
+ private fun score(cam: Cam, proportion: Double): Double {
+ val proportionScore = 0.7 * 100.0 * proportion
+ val chromaScore =
+ if (cam.chroma < ACCENT1_CHROMA) {
+ 0.1 * (cam.chroma - ACCENT1_CHROMA)
+ } else {
+ 0.3 * (cam.chroma - ACCENT1_CHROMA)
+ }
+ return chromaScore + proportionScore
+ }
+
+ private fun huePopulations(
+ camByColor: Map,
+ populationByColor: Map,
+ filter: Boolean = true,
+ ): List {
+ val huePopulation = List(size = 360, init = { 0.0 }).toMutableList()
+ for (entry in populationByColor.entries) {
+ val population = populationByColor[entry.key]!!
+ val cam = camByColor[entry.key]!!
+ val hue = cam.hue.roundToInt() % 360
+ if (filter && cam.chroma <= MIN_CHROMA) {
+ continue
+ }
+ huePopulation[hue] = huePopulation[hue] + population
+ }
+ return huePopulation
}
}
}
diff --git a/lawnchair/src/com/android/systemui/monet/Shades.java b/lawnchair/src/com/android/systemui/monet/Shades.java
index c2c2e280feb..1e4026d067c 100644
--- a/lawnchair/src/com/android/systemui/monet/Shades.java
+++ b/lawnchair/src/com/android/systemui/monet/Shades.java
@@ -57,9 +57,6 @@ public class Shades {
shades[1] = ColorUtils.CAMToColor(hue, Math.min(40f, chroma), 95);
for (int i = 2; i < 12; i++) {
float lStar = (i == 6) ? MIDDLE_LSTAR : 100 - 10 * (i - 1);
- if (lStar >= 90) {
- chroma = Math.min(40f, chroma);
- }
shades[i] = ColorUtils.CAMToColor(hue, chroma, lStar);
}
return shades;
diff --git a/quickstep/src/com/android/launcher3/QuickstepTransitionManager.java b/quickstep/src/com/android/launcher3/QuickstepTransitionManager.java
index 526922e8409..475e319d6e0 100644
--- a/quickstep/src/com/android/launcher3/QuickstepTransitionManager.java
+++ b/quickstep/src/com/android/launcher3/QuickstepTransitionManager.java
@@ -166,7 +166,7 @@
import app.lawnchair.LawnchairApp;
import app.lawnchair.compat.LawnchairQuickstepCompat;
import app.lawnchair.icons.shape.IconShapeManager;
-import app.lawnchair.theme.color.ColorTokens;
+import app.lawnchair.theme.color.tokens.ColorTokens;
/**
* Manages the opening and closing app transitions from Launcher
diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarEduTooltip.kt b/quickstep/src/com/android/launcher3/taskbar/TaskbarEduTooltip.kt
index c45c66741dc..efdfb6c2bcd 100644
--- a/quickstep/src/com/android/launcher3/taskbar/TaskbarEduTooltip.kt
+++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarEduTooltip.kt
@@ -28,6 +28,7 @@ import android.view.ViewGroup
import android.view.ViewGroup.LayoutParams.MATCH_PARENT
import android.view.animation.Interpolator
import androidx.core.view.updateLayoutParams
+import app.lawnchair.theme.color.tokens.ColorTokens
import com.android.app.animation.Interpolators.EMPHASIZED_ACCELERATE
import com.android.app.animation.Interpolators.EMPHASIZED_DECELERATE
import com.android.app.animation.Interpolators.STANDARD
@@ -53,7 +54,7 @@ constructor(
private val activityContext: ActivityContext = ActivityContext.lookupContext(context)
private val backgroundColor =
- Themes.getAttrColor(context, com.android.internal.R.attr.materialColorSurfaceBright)
+ ColorTokens.SurfaceBrightColor.resolveColor(getContext())
private val tooltipCornerRadius = Themes.getDialogCornerRadius(context)
private val arrowWidth = resources.getDimension(R.dimen.popup_arrow_width)
diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarView.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarView.java
index 00ba5180ac8..3c281ae9521 100644
--- a/quickstep/src/com/android/launcher3/taskbar/TaskbarView.java
+++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarView.java
@@ -60,6 +60,7 @@
import app.lawnchair.hotseat.HotseatMode;
import app.lawnchair.preferences2.PreferenceManager2;
+import app.lawnchair.theme.color.tokens.ColorTokens;
/**
* Hosts the Taskbar content such as Hotseat and Recent Apps. Drawn on top of
@@ -146,8 +147,7 @@ public TaskbarView(@NonNull Context context, @Nullable AttributeSet attrs, int d
mItemMarginLeftRight = actualMargin - (mIconTouchSize - visualIconSize) / 2;
mItemPadding = (mIconTouchSize - actualIconSize) / 2;
- mFolderLeaveBehindColor = Themes.getAttrColor(mActivityContext,
- android.R.attr.textColorTertiary);
+ mFolderLeaveBehindColor = Themes.getAttrColor(context, android.R.attr.textColorTertiary);
// Needed to draw folder leave-behind when opening one.
setWillNotDraw(false);
diff --git a/quickstep/src/com/android/launcher3/uioverrides/states/OverviewState.java b/quickstep/src/com/android/launcher3/uioverrides/states/OverviewState.java
index 2f3608f4b85..8311cf6fcc8 100644
--- a/quickstep/src/com/android/launcher3/uioverrides/states/OverviewState.java
+++ b/quickstep/src/com/android/launcher3/uioverrides/states/OverviewState.java
@@ -27,13 +27,12 @@
import com.android.launcher3.LauncherState;
import com.android.launcher3.R;
import com.android.launcher3.util.DisplayController;
-import com.android.launcher3.util.Themes;
import com.android.quickstep.util.LayoutUtils;
import com.android.quickstep.views.RecentsView;
import com.android.quickstep.views.TaskView;
import app.lawnchair.preferences.PreferenceManager;
-import app.lawnchair.theme.color.ColorTokens;
+import app.lawnchair.theme.color.tokens.ColorTokens;
/**
* Definition for overview state
diff --git a/quickstep/src/com/android/launcher3/uioverrides/states/QuickSwitchState.java b/quickstep/src/com/android/launcher3/uioverrides/states/QuickSwitchState.java
index 10d5257e9ca..1c9298d69ef 100644
--- a/quickstep/src/com/android/launcher3/uioverrides/states/QuickSwitchState.java
+++ b/quickstep/src/com/android/launcher3/uioverrides/states/QuickSwitchState.java
@@ -23,8 +23,8 @@
import com.android.launcher3.Launcher;
import com.android.launcher3.R;
-import app.lawnchair.theme.color.ColorTokens;
-import com.android.launcher3.util.Themes;
+import app.lawnchair.theme.color.tokens.ColorTokens;
+
import com.android.quickstep.views.DesktopTaskView;
/**
diff --git a/quickstep/src/com/android/quickstep/TouchInteractionService.java b/quickstep/src/com/android/quickstep/TouchInteractionService.java
index b5f49a39581..ef51d30499d 100644
--- a/quickstep/src/com/android/quickstep/TouchInteractionService.java
+++ b/quickstep/src/com/android/quickstep/TouchInteractionService.java
@@ -564,7 +564,11 @@ public void onUserUnlocked() {
mTaskAnimationManager, mTaskbarManager::getCurrentActivityContext);
}
mInputConsumer = InputConsumerController.getRecentsAnimationInputConsumer();
- mInputConsumer.registerInputConsumer();
+ try {
+ mInputConsumer.registerInputConsumer();
+ } catch (Exception e) {
+ Log.e(TAG, "Failure registering InputConsumer", e);
+ }
onSystemUiFlagsChanged(mDeviceState.getSystemUiStateFlags());
onAssistantVisibilityChanged();
diff --git a/quickstep/src/com/android/quickstep/fallback/RecentsState.java b/quickstep/src/com/android/quickstep/fallback/RecentsState.java
index 82935dfb478..9e854f1f451 100644
--- a/quickstep/src/com/android/quickstep/fallback/RecentsState.java
+++ b/quickstep/src/com/android/quickstep/fallback/RecentsState.java
@@ -26,7 +26,7 @@
import com.android.launcher3.statemanager.BaseState;
import com.android.quickstep.RecentsActivity;
-import app.lawnchair.theme.color.ColorTokens;
+import app.lawnchair.theme.color.tokens.ColorTokens;
/**
* State definition for Fallback recents
diff --git a/quickstep/src/com/android/quickstep/views/RecentsView.java b/quickstep/src/com/android/quickstep/views/RecentsView.java
index 9c8e9700158..eb426902040 100644
--- a/quickstep/src/com/android/quickstep/views/RecentsView.java
+++ b/quickstep/src/com/android/quickstep/views/RecentsView.java
@@ -222,7 +222,7 @@
import app.lawnchair.LawnchairApp;
import app.lawnchair.compat.LawnchairQuickstepCompat;
-import app.lawnchair.theme.color.ColorTokens;
+import app.lawnchair.theme.color.tokens.ColorTokens;
import app.lawnchair.util.OverScrollerCompat;
import app.lawnchair.util.RecentHelper;
@@ -6249,6 +6249,7 @@ private void doScrollScale() {
}
public float getScrollScale(RemoteTargetHandle rth) {
+ if (mPageScrolls == null) return 1f;
int childCount = Math.min(mPageScrolls.length, getChildCount());
for (int i = 0; i < childCount; i++) {
View child = getChildAt(i);
diff --git a/quickstep/src/com/android/quickstep/views/TaskMenuViewWithArrow.kt b/quickstep/src/com/android/quickstep/views/TaskMenuViewWithArrow.kt
index b373911f3d4..b67540bcae4 100644
--- a/quickstep/src/com/android/quickstep/views/TaskMenuViewWithArrow.kt
+++ b/quickstep/src/com/android/quickstep/views/TaskMenuViewWithArrow.kt
@@ -29,6 +29,7 @@ import android.view.View
import android.view.ViewGroup
import android.widget.FrameLayout
import android.widget.LinearLayout
+import app.lawnchair.theme.color.tokens.ColorTokens
import com.android.launcher3.BaseDraggingActivity
import com.android.launcher3.DeviceProfile
import com.android.launcher3.InsettableFrameLayout
@@ -149,7 +150,7 @@ class TaskMenuViewWithArrow : ArrowPopup {
FrameLayout.LayoutParams.MATCH_PARENT,
FrameLayout.LayoutParams.MATCH_PARENT
)
- setBackgroundColor(Themes.getAttrColor(context, R.attr.overviewScrimColor))
+ setBackgroundColor(ColorTokens.OverviewScrimColor.resolveColor(context))
alpha = 0f
}
popupContainer.addView(scrim)
@@ -205,7 +206,7 @@ class TaskMenuViewWithArrow : ArrowPopup {
override fun assignMarginsAndBackgrounds(viewGroup: ViewGroup) {
assignMarginsAndBackgrounds(
this,
- Themes.getAttrColor(context, com.android.internal.R.attr.colorSurface)
+ ColorTokens.Surface.resolveColor(context)
)
}
diff --git a/settings.gradle b/settings.gradle
index c2692429fd7..1788748744d 100644
--- a/settings.gradle
+++ b/settings.gradle
@@ -13,7 +13,7 @@ pluginManagement {
// https://docs.gradle.com/enterprise/gradle-plugin/
plugins {
- id "com.gradle.develocity" version "3.17.5"
+ id "com.gradle.develocity" version "3.17.6"
}
def isCI = providers.environmentVariable('CI').present
diff --git a/src/com/android/launcher3/AppWidgetResizeFrame.java b/src/com/android/launcher3/AppWidgetResizeFrame.java
index 74ed8f7b98c..db0031ec443 100644
--- a/src/com/android/launcher3/AppWidgetResizeFrame.java
+++ b/src/com/android/launcher3/AppWidgetResizeFrame.java
@@ -48,7 +48,7 @@
import java.util.List;
import app.lawnchair.preferences2.PreferenceManager2;
-import app.lawnchair.theme.color.ColorTokens;
+import app.lawnchair.theme.color.tokens.ColorTokens;
import app.lawnchair.theme.drawable.DrawableTokens;
public class AppWidgetResizeFrame extends AbstractFloatingView implements View.OnKeyListener {
diff --git a/src/com/android/launcher3/BubbleTextView.java b/src/com/android/launcher3/BubbleTextView.java
index b5206aa08e2..7c96b7615bc 100644
--- a/src/com/android/launcher3/BubbleTextView.java
+++ b/src/com/android/launcher3/BubbleTextView.java
@@ -18,12 +18,9 @@
package com.android.launcher3;
-import static com.android.launcher3.config.FeatureFlags.ENABLE_CURSOR_HOVER_STATES;
import static com.android.launcher3.config.FeatureFlags.ENABLE_DOWNLOAD_APP_UX_V2;
import static com.android.launcher3.config.FeatureFlags.ENABLE_ICON_LABEL_AUTO_SCALING;
import static com.android.launcher3.graphics.PreloadIconDrawable.newPendingIcon;
-import static com.android.launcher3.icons.BitmapInfo.FLAG_NO_BADGE;
-import static com.android.launcher3.icons.BitmapInfo.FLAG_THEMED;
import static com.android.launcher3.icons.GraphicsUtils.setColorAlphaBound;
import static com.android.launcher3.model.data.ItemInfoWithIcon.FLAG_INCREMENTAL_DOWNLOAD_ACTIVE;
import static com.android.launcher3.model.data.ItemInfoWithIcon.FLAG_INSTALL_SESSION_ACTIVE;
@@ -81,7 +78,6 @@
import com.android.launcher3.util.MultiTranslateDelegate;
import com.android.launcher3.util.SafeCloseable;
import com.android.launcher3.util.ShortcutUtil;
-import com.android.launcher3.util.Themes;
import com.android.launcher3.views.ActivityContext;
import com.android.launcher3.views.IconLabelDotView;
@@ -91,7 +87,6 @@
import app.lawnchair.font.FontManager;
import app.lawnchair.preferences.PreferenceManager;
-import app.lawnchair.theme.color.ColorTokens;
import app.lawnchair.util.LawnchairUtilsKt;
/**
diff --git a/src/com/android/launcher3/ButtonDropTarget.java b/src/com/android/launcher3/ButtonDropTarget.java
index 41d563ba1a4..680d9cb809a 100644
--- a/src/com/android/launcher3/ButtonDropTarget.java
+++ b/src/com/android/launcher3/ButtonDropTarget.java
@@ -43,8 +43,7 @@
import com.android.launcher3.dragndrop.DragView;
import com.android.launcher3.model.data.ItemInfo;
import com.android.launcher3.util.Themes;
-import app.lawnchair.theme.color.ColorTokens;
-import app.lawnchair.theme.drawable.DrawableToken;
+import app.lawnchair.theme.color.tokens.ColorTokens;
import app.lawnchair.theme.drawable.DrawableTokens;
import com.android.launcher3.views.ActivityContext;
@@ -122,7 +121,7 @@ protected void onFinishInflate() {
private void setTextColor() {
int normalColor = ColorTokens.WorkspaceAccentColor.resolveColor(getContext());
- int selectedColor = Themes.getAttrColor(getContext(), R.attr.dropTargetHoverTextColor);
+ int selectedColor = ColorTokens.DropTargetHoverTextColor.resolveColor(getContext());
setTextColor(new ColorStateList(
new int[][] { new int[] { -android.R.attr.state_selected },
new int[] { android.R.attr.state_selected } },
diff --git a/src/com/android/launcher3/CellLayout.java b/src/com/android/launcher3/CellLayout.java
index 9a55ad1e104..49b43095719 100644
--- a/src/com/android/launcher3/CellLayout.java
+++ b/src/com/android/launcher3/CellLayout.java
@@ -75,7 +75,6 @@
import com.android.launcher3.util.GridOccupancy;
import com.android.launcher3.util.MultiTranslateDelegate;
import com.android.launcher3.util.ParcelableSparseArray;
-import com.android.launcher3.util.Themes;
import com.android.launcher3.util.Thunk;
import com.android.launcher3.views.ActivityContext;
import com.android.launcher3.widget.LauncherAppWidgetHostView;
@@ -92,7 +91,7 @@
import java.util.stream.Collectors;
import app.lawnchair.preferences2.PreferenceManager2;
-import app.lawnchair.theme.color.ColorTokens;
+import app.lawnchair.theme.color.tokens.ColorTokens;
import app.lawnchair.theme.drawable.DrawableTokens;
public class CellLayout extends ViewGroup {
diff --git a/src/com/android/launcher3/DeviceProfile.java b/src/com/android/launcher3/DeviceProfile.java
index 8997eeb678e..fef77acf545 100644
--- a/src/com/android/launcher3/DeviceProfile.java
+++ b/src/com/android/launcher3/DeviceProfile.java
@@ -41,6 +41,7 @@
import android.graphics.Rect;
import android.graphics.Typeface;
import android.util.DisplayMetrics;
+import android.util.Log;
import android.util.SparseArray;
import android.view.Surface;
@@ -1460,8 +1461,13 @@ private void updateAllAppsContainerWidth() {
.firstBlocking(preferenceManager2.getDrawerLeftRightMarginFactor());
var marginMultiplier = allAppLeftRightMarginMultiplier * (!isTablet ? 100 : 2);
allAppsLeftRightMargin = (int) (allAppsLeftRightMargin * marginMultiplier);
- allAppsPadding.left = (int) (allAppsPadding.left * marginMultiplier);
- allAppsPadding.right = (int) (allAppsPadding.right * marginMultiplier);
+
+ // todo fix how drawer padding values are calculated in responsive grid type
+ int leftPadding = (int) (allAppsPadding.left != 0 ? allAppsPadding.left * marginMultiplier : marginMultiplier);
+ int rightPadding = (int) (allAppsPadding.right != 0 ? allAppsPadding.right * marginMultiplier : marginMultiplier);
+
+ allAppsPadding.left = leftPadding;
+ allAppsPadding.right = rightPadding;
}
private void setupAllAppsStyle(Context context) {
@@ -2434,4 +2440,4 @@ public DeviceProfile build() {
mIsGestureMode, mViewScaleProvider, mOverrideProvider, mIsTransientTaskbar);
}
}
-}
\ No newline at end of file
+}
diff --git a/src/com/android/launcher3/Workspace.java b/src/com/android/launcher3/Workspace.java
index d9556dab65e..f3e3f60243b 100644
--- a/src/com/android/launcher3/Workspace.java
+++ b/src/com/android/launcher3/Workspace.java
@@ -35,6 +35,8 @@
import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_SWIPELEFT;
import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_SWIPERIGHT;
+import static app.lawnchair.util.LawnchairUtilsKt.toBitmap;
+
import android.animation.Animator;
import android.animation.AnimatorListenerAdapter;
import android.animation.LayoutTransition;
@@ -50,6 +52,7 @@
import android.graphics.Point;
import android.graphics.PointF;
import android.graphics.Rect;
+import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.os.Handler;
import android.os.Message;
@@ -69,6 +72,7 @@
import androidx.annotation.Nullable;
import androidx.annotation.VisibleForTesting;
+import androidx.core.graphics.drawable.DrawableKt;
import com.android.launcher3.Utilities;
import com.android.app.animation.Interpolators;
@@ -128,6 +132,7 @@
import com.android.launcher3.widget.dragndrop.AppWidgetHostViewDragListener;
import com.android.launcher3.widget.util.WidgetSizes;
import com.android.systemui.plugins.shared.LauncherOverlayManager.LauncherOverlay;
+import com.google.android.renderscript.Toolkit;
import com.patrykmichalik.opto.core.PreferenceExtensionsKt;
import com.android.systemui.plugins.shared.LauncherOverlayManager.LauncherOverlayCallbacks;
@@ -138,10 +143,12 @@
import java.util.function.Predicate;
import java.util.stream.Collectors;
+import app.lawnchair.preferences.PreferenceManager;
import app.lawnchair.preferences2.PreferenceManager2;
import app.lawnchair.smartspace.SmartspaceAppWidgetProvider;
import app.lawnchair.smartspace.model.LawnchairSmartspace;
import app.lawnchair.smartspace.model.SmartspaceMode;
+import app.lawnchair.util.LawnchairUtilsKt;
/**
* The workspace is a wide area with a wallpaper and a finite number of pages.
@@ -301,6 +308,7 @@ public class Workspace extends PagedView
private final StatsLogManager mStatsLogManager;
PreferenceManager2 mPreferenceManager2;
+ PreferenceManager mPreferenceManger;
/**
* Used to inflate the Workspace from XML.
@@ -329,6 +337,7 @@ public Workspace(Context context, AttributeSet attrs, int defStyle) {
mAllAppsIconSize = mLauncher.getDeviceProfile().allAppsIconSizePx;
mWallpaperManager = WallpaperManager.getInstance(context);
mPreferenceManager2 = PreferenceManager2.getInstance(context);
+ mPreferenceManger = PreferenceManager.getInstance(context);
mWallpaperOffset = new WallpaperOffsetInterpolator(this);
@@ -339,6 +348,18 @@ public Workspace(Context context, AttributeSet attrs, int defStyle) {
setMotionEventSplittingEnabled(true);
setOnTouchListener(new WorkspaceTouchListener(mLauncher, this));
mStatsLogManager = StatsLogManager.newInstance(context);
+
+ if (mPreferenceManger.getEnableWallpaperBlur().get() && mWallpaperManager.getDrawable() != null) {
+ var blurWallpaper = mPreferenceManger.getWallpaperBlur().get();
+ var blurThreshold = mPreferenceManger.getWallpaperBlurFactorThreshold().get();
+ var wallpaperBitmap = mWallpaperManager.getDrawable();
+ try {
+ mWallpaperManager.setBitmap(LawnchairUtilsKt.blurBitmap(toBitmap(wallpaperBitmap),blurWallpaper, blurThreshold), null, true, WallpaperManager.FLAG_SYSTEM);
+ mWallpaperManager.forgetLoadedWallpaper();
+ } catch (Exception ex) {
+ Log.e(TAG, "error failed bluring wallpaper");
+ }
+ }
}
@Override
diff --git a/src/com/android/launcher3/allapps/ActivityAllAppsContainerView.java b/src/com/android/launcher3/allapps/ActivityAllAppsContainerView.java
index 6c660df61e1..ce9885a5190 100644
--- a/src/com/android/launcher3/allapps/ActivityAllAppsContainerView.java
+++ b/src/com/android/launcher3/allapps/ActivityAllAppsContainerView.java
@@ -25,6 +25,7 @@
import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_ALLAPPS_TAP_ON_WORK_TAB;
import static com.android.launcher3.util.Executors.MAIN_EXECUTOR;
import static com.android.launcher3.util.ScrollableLayoutManager.PREDICTIVE_BACK_MIN_SCALE;
+import static com.topjohnwu.superuser.internal.Utils.context;
import android.animation.Animator;
import android.animation.AnimatorListenerAdapter;
@@ -64,14 +65,12 @@
import androidx.core.graphics.ColorUtils;
import androidx.recyclerview.widget.RecyclerView;
-import com.android.launcher3.BaseDraggingActivity;
import com.android.launcher3.DeviceProfile;
import com.android.launcher3.DeviceProfile.OnDeviceProfileChangeListener;
import com.android.launcher3.DragSource;
import com.android.launcher3.DropTarget.DragObject;
import com.android.launcher3.Insettable;
import com.android.launcher3.InsettableFrameLayout;
-import com.android.launcher3.Launcher;
import com.android.launcher3.R;
import com.android.launcher3.Utilities;
import com.android.launcher3.allapps.BaseAllAppsAdapter.AdapterItem;
@@ -88,7 +87,6 @@
import com.android.launcher3.views.BaseDragLayer;
import com.android.launcher3.views.RecyclerViewFastScroller;
import com.android.launcher3.views.ScrimView;
-import com.android.launcher3.views.SpringRelativeLayout;
import com.android.launcher3.workprofile.PersonalWorkSlidingTabStrip;
import com.patrykmichalik.opto.core.PreferenceExtensionsKt;
@@ -101,7 +99,7 @@
import app.lawnchair.allapps.LawnchairAlphabeticalAppsList;
import app.lawnchair.font.FontManager;
import app.lawnchair.preferences2.PreferenceManager2;
-import app.lawnchair.theme.color.ColorTokens;
+import app.lawnchair.theme.color.tokens.ColorTokens;
import app.lawnchair.ui.StretchRecyclerViewContainer;
/**
@@ -309,7 +307,7 @@ protected void onFinishInflate() {
0 // Bottom left
};
mBottomSheetBackgroundColor =
- Themes.getAttrColor(getContext(), R.attr.materialColorSurfaceDim);
+ ColorTokens.SurfaceDimColor.resolveColor(getContext());
updateBackgroundVisibility(mActivityContext.getDeviceProfile());
mSearchUiManager.initializeSearch(this);
}
diff --git a/src/com/android/launcher3/allapps/WorkEduCard.java b/src/com/android/launcher3/allapps/WorkEduCard.java
index e703d496135..283c9f086a4 100644
--- a/src/com/android/launcher3/allapps/WorkEduCard.java
+++ b/src/com/android/launcher3/allapps/WorkEduCard.java
@@ -24,12 +24,7 @@
import android.view.ViewGroup;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
-import android.widget.Button;
import android.widget.FrameLayout;
-import android.widget.LinearLayout;
-import android.widget.TextView;
-
-import androidx.core.view.ViewCompat;
import android.widget.TextView;
import com.android.launcher3.LauncherPrefs;
@@ -37,8 +32,7 @@
import com.android.launcher3.model.StringCache;
import com.android.launcher3.views.ActivityContext;
-import app.lawnchair.font.FontManager;
-import app.lawnchair.theme.color.ColorTokens;
+import app.lawnchair.theme.color.tokens.ColorTokens;
import app.lawnchair.theme.drawable.DrawableTokens;
/**
diff --git a/src/com/android/launcher3/allapps/WorkModeSwitch.java b/src/com/android/launcher3/allapps/WorkModeSwitch.java
index ef363333b52..cdc067207e3 100644
--- a/src/com/android/launcher3/allapps/WorkModeSwitch.java
+++ b/src/com/android/launcher3/allapps/WorkModeSwitch.java
@@ -32,18 +32,16 @@
import androidx.annotation.NonNull;
import androidx.core.view.WindowInsetsCompat;
-import com.android.launcher3.BaseDraggingActivity;
import com.android.launcher3.DeviceProfile;
import com.android.launcher3.Insettable;
import com.android.launcher3.R;
import com.android.launcher3.Utilities;
import com.android.launcher3.anim.KeyboardInsetAnimationCallback;
-import com.android.launcher3.logging.StatsLogManager;
import com.android.launcher3.model.StringCache;
import com.android.launcher3.views.ActivityContext;
import app.lawnchair.font.FontManager;
-import app.lawnchair.theme.color.ColorTokens;
+import app.lawnchair.theme.color.tokens.ColorTokens;
import app.lawnchair.theme.drawable.DrawableTokens;
/**
diff --git a/src/com/android/launcher3/allapps/WorkPausedCard.java b/src/com/android/launcher3/allapps/WorkPausedCard.java
index a8c52351bf9..e5c4aa42bed 100644
--- a/src/com/android/launcher3/allapps/WorkPausedCard.java
+++ b/src/com/android/launcher3/allapps/WorkPausedCard.java
@@ -25,15 +25,12 @@
import android.widget.LinearLayout;
import android.widget.TextView;
-import androidx.core.view.ViewCompat;
-
import com.android.launcher3.R;
import com.android.launcher3.Utilities;
-import com.android.launcher3.model.StringCache;
import com.android.launcher3.views.ActivityContext;
import app.lawnchair.font.FontManager;
-import app.lawnchair.theme.color.ColorTokens;
+import app.lawnchair.theme.color.tokens.ColorTokens;
/**
* Work profile toggle switch shown at the bottom of AllApps work tab
diff --git a/src/com/android/launcher3/folder/FolderAnimationManager.java b/src/com/android/launcher3/folder/FolderAnimationManager.java
index a8337911f43..a1f3125f857 100644
--- a/src/com/android/launcher3/folder/FolderAnimationManager.java
+++ b/src/com/android/launcher3/folder/FolderAnimationManager.java
@@ -48,12 +48,11 @@
import com.android.launcher3.Utilities;
import com.android.launcher3.anim.PropertyResetListener;
import com.android.launcher3.celllayout.CellLayoutLayoutParams;
-import com.android.launcher3.util.Themes;
import com.android.launcher3.views.BaseDragLayer;
import java.util.List;
-import app.lawnchair.theme.color.ColorTokens;
+import app.lawnchair.theme.color.tokens.ColorTokens;
import app.lawnchair.util.LawnchairUtilsKt;
/**
diff --git a/src/com/android/launcher3/folder/PreviewBackground.java b/src/com/android/launcher3/folder/PreviewBackground.java
index aa05676c01a..35652f0ac45 100644
--- a/src/com/android/launcher3/folder/PreviewBackground.java
+++ b/src/com/android/launcher3/folder/PreviewBackground.java
@@ -50,13 +50,12 @@
import com.android.launcher3.CellLayout;
import com.android.launcher3.DeviceProfile;
import com.android.launcher3.R;
-import com.android.launcher3.util.Themes;
import com.android.launcher3.views.ActivityContext;
import com.patrykmichalik.opto.core.PreferenceExtensionsKt;
import app.lawnchair.preferences2.PreferenceManager2;
import app.lawnchair.theme.color.ColorOption;
-import app.lawnchair.theme.color.ColorTokens;
+import app.lawnchair.theme.color.tokens.ColorTokens;
import app.lawnchair.util.LawnchairUtilsKt;
/**
diff --git a/src/com/android/launcher3/graphics/Scrim.java b/src/com/android/launcher3/graphics/Scrim.java
index db5856a88f9..8c5bf741e65 100644
--- a/src/com/android/launcher3/graphics/Scrim.java
+++ b/src/com/android/launcher3/graphics/Scrim.java
@@ -22,7 +22,7 @@
import android.util.FloatProperty;
import android.view.View;
-import app.lawnchair.theme.color.ColorTokens;
+import app.lawnchair.theme.color.tokens.ColorTokens;
/**
* Contains general scrim properties such as wallpaper-extracted color that subclasses can use.
diff --git a/src/com/android/launcher3/pageindicators/PageIndicatorDots.java b/src/com/android/launcher3/pageindicators/PageIndicatorDots.java
index 8e0b5a73001..3a2433ad069 100644
--- a/src/com/android/launcher3/pageindicators/PageIndicatorDots.java
+++ b/src/com/android/launcher3/pageindicators/PageIndicatorDots.java
@@ -16,8 +16,6 @@
package com.android.launcher3.pageindicators;
-import static com.android.launcher3.config.FeatureFlags.SHOW_DOT_PAGINATION;
-
import android.animation.Animator;
import android.animation.AnimatorListenerAdapter;
import android.animation.AnimatorSet;
@@ -48,9 +46,8 @@
import com.android.launcher3.R;
import com.android.launcher3.Utilities;
import com.android.launcher3.config.FeatureFlags;
-import com.android.launcher3.util.Themes;
-import app.lawnchair.theme.color.ColorTokens;
+import app.lawnchair.theme.color.tokens.ColorTokens;
/**
* {@link PageIndicator} which shows dots per page. The active page is shown
diff --git a/src/com/android/launcher3/popup/ArrowPopup.java b/src/com/android/launcher3/popup/ArrowPopup.java
index 02d81faade7..fb0e86dea5e 100644
--- a/src/com/android/launcher3/popup/ArrowPopup.java
+++ b/src/com/android/launcher3/popup/ArrowPopup.java
@@ -23,7 +23,6 @@
import static com.android.app.animation.Interpolators.EMPHASIZED_ACCELERATE;
import static com.android.app.animation.Interpolators.EMPHASIZED_DECELERATE;
import static com.android.app.animation.Interpolators.LINEAR;
-import static com.android.launcher3.config.FeatureFlags.ENABLE_MATERIAL_U_POPUP;
import android.animation.Animator;
import android.animation.AnimatorListenerAdapter;
@@ -60,9 +59,7 @@
import com.android.launcher3.views.ActivityContext;
import com.android.launcher3.views.BaseDragLayer;
-import java.util.Arrays;
-
-import app.lawnchair.theme.color.ColorTokens;
+import app.lawnchair.theme.color.tokens.ColorTokens;
import app.lawnchair.theme.drawable.DrawableTokens;
/**
diff --git a/src/com/android/launcher3/shortcuts/DeepShortcutView.java b/src/com/android/launcher3/shortcuts/DeepShortcutView.java
index 8df1fd7327f..d0bf5560682 100644
--- a/src/com/android/launcher3/shortcuts/DeepShortcutView.java
+++ b/src/com/android/launcher3/shortcuts/DeepShortcutView.java
@@ -36,10 +36,9 @@
import com.android.launcher3.Utilities;
import com.android.launcher3.model.data.WorkspaceItemInfo;
import com.android.launcher3.popup.PopupContainerWithArrow;
-import com.android.launcher3.util.Themes;
import com.android.launcher3.views.BubbleTextHolder;
-import app.lawnchair.theme.color.ColorTokens;
+import app.lawnchair.theme.color.tokens.ColorTokens;
import app.lawnchair.util.DrawableUtilsKt;
/**
diff --git a/src/com/android/launcher3/states/HintState.java b/src/com/android/launcher3/states/HintState.java
index db8af8a81f5..770ecfe0fe7 100644
--- a/src/com/android/launcher3/states/HintState.java
+++ b/src/com/android/launcher3/states/HintState.java
@@ -24,7 +24,7 @@
import com.android.launcher3.Launcher;
import com.android.launcher3.LauncherState;
-import app.lawnchair.theme.color.ColorTokens;
+import app.lawnchair.theme.color.tokens.ColorTokens;
/**
* Scale down workspace/hotseat to hint at going to either overview (on pause) or first home screen.
diff --git a/src/com/android/launcher3/util/Themes.java b/src/com/android/launcher3/util/Themes.java
index f69fd76bc8e..e172d3e74d1 100644
--- a/src/com/android/launcher3/util/Themes.java
+++ b/src/com/android/launcher3/util/Themes.java
@@ -33,10 +33,6 @@
import androidx.annotation.ColorInt;
-import androidx.annotation.ColorInt;
-
-import androidx.annotation.ColorInt;
-
import com.android.launcher3.LauncherPrefs;
import com.android.launcher3.R;
import com.android.launcher3.Utilities;
@@ -44,7 +40,7 @@
import com.patrykmichalik.opto.core.PreferenceExtensionsKt;
import app.lawnchair.preferences2.PreferenceManager2;
import app.lawnchair.theme.color.ColorMode;
-import app.lawnchair.theme.color.ColorTokens;
+import app.lawnchair.theme.color.tokens.ColorTokens;
import app.lawnchair.wallpaper.WallpaperColorsCompat;
import app.lawnchair.wallpaper.WallpaperManagerCompat;
import app.lawnchair.ui.theme.ColorKt;
diff --git a/src/com/android/launcher3/views/RecyclerViewFastScroller.java b/src/com/android/launcher3/views/RecyclerViewFastScroller.java
index 6d32a79faf0..20cc9da77f5 100644
--- a/src/com/android/launcher3/views/RecyclerViewFastScroller.java
+++ b/src/com/android/launcher3/views/RecyclerViewFastScroller.java
@@ -52,6 +52,8 @@
import java.util.Collections;
import java.util.List;
+import app.lawnchair.theme.color.tokens.ColorTokens;
+
/**
* The track and scrollbar that shows when you scroll the list.
*/
@@ -145,7 +147,7 @@ public RecyclerViewFastScroller(Context context, AttributeSet attrs, int defStyl
super(context, attrs, defStyleAttr);
mTrackPaint = new Paint();
- mTrackPaint.setColor(Themes.getAttrColor(context, android.R.attr.textColorPrimary));
+ mTrackPaint.setColor(ColorTokens.TextColorPrimary.resolveColor(getContext()));
mTrackPaint.setAlpha(MAX_TRACK_ALPHA);
mThumbPaint = new Paint();
diff --git a/src/com/android/launcher3/views/Snackbar.java b/src/com/android/launcher3/views/Snackbar.java
index 3805231c660..ce15e5b77bd 100644
--- a/src/com/android/launcher3/views/Snackbar.java
+++ b/src/com/android/launcher3/views/Snackbar.java
@@ -37,7 +37,7 @@
import com.android.launcher3.compat.AccessibilityManagerCompat;
import com.android.launcher3.dragndrop.DragLayer;
-import app.lawnchair.theme.color.ColorTokens;
+import app.lawnchair.theme.color.tokens.ColorTokens;
import app.lawnchair.theme.drawable.DrawableTokens;
/**
diff --git a/src/com/android/launcher3/views/WidgetsEduView.java b/src/com/android/launcher3/views/WidgetsEduView.java
index b12528bfda6..f34a3930267 100644
--- a/src/com/android/launcher3/views/WidgetsEduView.java
+++ b/src/com/android/launcher3/views/WidgetsEduView.java
@@ -25,7 +25,7 @@
import com.android.launcher3.Launcher;
import com.android.launcher3.R;
-import app.lawnchair.theme.color.ColorTokens;
+import app.lawnchair.theme.color.tokens.ColorTokens;
/**
* Education view about widgets.
diff --git a/src/com/android/launcher3/widget/AddItemWidgetsBottomSheet.java b/src/com/android/launcher3/widget/AddItemWidgetsBottomSheet.java
index bfefaa70af5..cc3b850eaba 100644
--- a/src/com/android/launcher3/widget/AddItemWidgetsBottomSheet.java
+++ b/src/com/android/launcher3/widget/AddItemWidgetsBottomSheet.java
@@ -35,7 +35,7 @@
import com.android.launcher3.dragndrop.AddItemActivity;
import com.android.launcher3.views.AbstractSlideInView;
-import app.lawnchair.theme.color.ColorTokens;
+import app.lawnchair.theme.color.tokens.ColorTokens;
/**
* Bottom sheet for the pin widget.
diff --git a/src/com/android/launcher3/widget/BaseWidgetSheet.java b/src/com/android/launcher3/widget/BaseWidgetSheet.java
index 743d5d3302f..2df15950c60 100644
--- a/src/com/android/launcher3/widget/BaseWidgetSheet.java
+++ b/src/com/android/launcher3/widget/BaseWidgetSheet.java
@@ -55,7 +55,7 @@
import com.android.launcher3.views.ActivityContext;
import com.android.launcher3.views.ArrowTipView;
-import app.lawnchair.theme.color.ColorTokens;
+import app.lawnchair.theme.color.tokens.ColorTokens;
/**
* Base class for various widgets popup
diff --git a/src/com/android/launcher3/widget/PendingAppWidgetHostView.java b/src/com/android/launcher3/widget/PendingAppWidgetHostView.java
index 1c88c4a466f..06e30c0f432 100644
--- a/src/com/android/launcher3/widget/PendingAppWidgetHostView.java
+++ b/src/com/android/launcher3/widget/PendingAppWidgetHostView.java
@@ -51,6 +51,8 @@
import java.util.List;
+import app.lawnchair.theme.color.tokens.ColorTokens;
+
public class PendingAppWidgetHostView extends LauncherAppWidgetHostView
implements OnClickListener, ItemInfoUpdateReceiver {
private static final float SETUP_ICON_SIZE_FACTOR = 2f / 5;
@@ -79,7 +81,7 @@ public PendingAppWidgetHostView(Context context, LauncherAppWidgetInfo info,
mDisabledForSafeMode = disabledForSafeMode;
mPaint = new TextPaint();
- mPaint.setColor(Themes.getAttrColor(getContext(), android.R.attr.textColorPrimary));
+ mPaint.setColor(ColorTokens.TextColorPrimary.resolveColor(getContext()));
mPaint.setTextSize(TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_PX,
mLauncher.getDeviceProfile().iconTextSizePx, getResources().getDisplayMetrics()));
setBackgroundResource(R.drawable.pending_widget_bg);
diff --git a/src/com/android/launcher3/widget/picker/WidgetsFullSheet.java b/src/com/android/launcher3/widget/picker/WidgetsFullSheet.java
index ecf3ebd74cc..bd4201fd228 100644
--- a/src/com/android/launcher3/widget/picker/WidgetsFullSheet.java
+++ b/src/com/android/launcher3/widget/picker/WidgetsFullSheet.java
@@ -40,15 +40,12 @@
import android.view.View;
import android.view.ViewGroup;
import android.view.Window;
-import android.view.ViewOutlineProvider;
import android.view.WindowInsets;
import android.view.animation.AnimationUtils;
import android.view.animation.Interpolator;
import android.widget.Button;
import android.widget.TextView;
-import android.window.BackEvent;
-import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.Px;
import androidx.annotation.RequiresApi;
@@ -87,7 +84,7 @@
import java.util.stream.IntStream;
import app.lawnchair.font.FontManager;
-import app.lawnchair.theme.color.ColorTokens;
+import app.lawnchair.theme.color.tokens.ColorTokens;
import app.lawnchair.theme.drawable.DrawableTokens;
/**
diff --git a/src/com/android/launcher3/widget/picker/WidgetsListHeader.java b/src/com/android/launcher3/widget/picker/WidgetsListHeader.java
index 62d55f84536..7bb0cfb1ae1 100644
--- a/src/com/android/launcher3/widget/picker/WidgetsListHeader.java
+++ b/src/com/android/launcher3/widget/picker/WidgetsListHeader.java
@@ -43,7 +43,6 @@
import com.android.launcher3.widget.model.WidgetsListHeaderEntry;
import app.lawnchair.font.FontManager;
-import app.lawnchair.theme.color.ColorTokens;
import app.lawnchair.theme.drawable.DrawableTokens;
/**
diff --git a/src/com/android/launcher3/widget/picker/search/LauncherWidgetsSearchBar.java b/src/com/android/launcher3/widget/picker/search/LauncherWidgetsSearchBar.java
index 3b4b604bd04..3eff95e6f30 100644
--- a/src/com/android/launcher3/widget/picker/search/LauncherWidgetsSearchBar.java
+++ b/src/com/android/launcher3/widget/picker/search/LauncherWidgetsSearchBar.java
@@ -29,7 +29,6 @@
import com.android.launcher3.popup.PopupDataProvider;
import app.lawnchair.font.FontManager;
-import app.lawnchair.theme.color.ColorTokens;
import app.lawnchair.theme.drawable.DrawableTokens;
/**
diff --git a/src/com/android/launcher3/workprofile/PersonalWorkSlidingTabStrip.java b/src/com/android/launcher3/workprofile/PersonalWorkSlidingTabStrip.java
index 34ac5613014..6819623eb4c 100644
--- a/src/com/android/launcher3/workprofile/PersonalWorkSlidingTabStrip.java
+++ b/src/com/android/launcher3/workprofile/PersonalWorkSlidingTabStrip.java
@@ -16,7 +16,6 @@
package com.android.launcher3.workprofile;
import android.content.Context;
-import android.graphics.drawable.Drawable;
import android.content.res.TypedArray;
import android.graphics.drawable.RippleDrawable;
import android.util.AttributeSet;
@@ -32,7 +31,7 @@
import com.android.launcher3.views.ActivityContext;
import app.lawnchair.font.FontManager;
-import app.lawnchair.theme.color.ColorStateListTokens;
+import app.lawnchair.theme.color.tokens.ColorStateListTokens;
import app.lawnchair.theme.drawable.DrawableTokens;
/**
diff --git a/systemUILog/build.gradle b/systemUILog/build.gradle
index 714f50d1bf5..0acc7df4352 100644
--- a/systemUILog/build.gradle
+++ b/systemUILog/build.gradle
@@ -23,5 +23,5 @@ compileOnlyCommonJars()
dependencies {
compileOnly projects.systemUIPluginCore
compileOnly projects.systemUICommon
- implementation 'com.google.errorprone:error_prone_annotations:2.28.0'
+ implementation 'com.google.errorprone:error_prone_annotations:2.29.2'
}
diff --git a/systemUnFold/build.gradle b/systemUnFold/build.gradle
index 0d4abf89977..f8d631b9930 100644
--- a/systemUnFold/build.gradle
+++ b/systemUnFold/build.gradle
@@ -40,6 +40,6 @@ dependencies {
ksp "com.google.dagger:hilt-compiler:$daggerVersion"
implementation "androidx.concurrent:concurrent-futures:1.2.0"
- implementation "androidx.lifecycle:lifecycle-common:2.8.2"
+ implementation "androidx.lifecycle:lifecycle-common:2.8.4"
implementation "androidx.dynamicanimation:dynamicanimation:1.0.0"
}