mirror of
https://github.com/jrpie/Launcher.git
synced 2025-02-23 06:21:31 +01:00
Merge branch 'master' of https://github.com/jrpie/Launcher
This commit is contained in:
commit
77800b27c3
43 changed files with 224 additions and 349 deletions
15
.github/ISSUE_TEMPLATE/bug_report.md
vendored
15
.github/ISSUE_TEMPLATE/bug_report.md
vendored
|
@ -1,31 +1,32 @@
|
||||||
---
|
---
|
||||||
name: Bug report
|
name: Bug report
|
||||||
about: Create a report to help improve this app
|
about: Create a report to help improve this app
|
||||||
title: ''
|
title: '[bug] '
|
||||||
labels: bug
|
labels: bug
|
||||||
assignees: ''
|
assignees: ''
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
**Describe the bug**
|
# Describe the bug
|
||||||
A clear and concise description of what the bug is.
|
A clear and concise description of what the bug is.
|
||||||
|
|
||||||
**To Reproduce**
|
# To Reproduce
|
||||||
Steps to reproduce the behavior:
|
Steps to reproduce the behavior:
|
||||||
1. Go to '...'
|
1. Go to '...'
|
||||||
2. Click on '....'
|
2. Click on '....'
|
||||||
3. Scroll down to '....'
|
3. Scroll down to '....'
|
||||||
4. See error
|
4. See error
|
||||||
|
|
||||||
**Expected behavior**
|
# Expected behavior
|
||||||
A clear and concise description of what you expected to happen.
|
A clear and concise description of what you expected to happen.
|
||||||
|
|
||||||
**Screenshots**
|
# Screenshots
|
||||||
If applicable, add screenshots to help explain your problem.
|
If applicable, add screenshots to help explain your problem.
|
||||||
|
|
||||||
**Smartphone (please complete the following information):**
|
# Smartphone (please complete the following information)
|
||||||
- Device: [e.g. Samsung A7]
|
- Device: [e.g. Samsung A7]
|
||||||
- Android Version: [e.g. Marshmallow, 6.0 or API 23]
|
- Android Version: [e.g. Marshmallow, 6.0 or API 23]
|
||||||
|
- µLauncher Version: [e.g. j-0.0.11 or version code 25]
|
||||||
|
|
||||||
**Additional info**
|
# Additional info
|
||||||
Add any other info or comments about the problem here.
|
Add any other info or comments about the problem here.
|
||||||
|
|
18
.github/ISSUE_TEMPLATE/feature_request.md
vendored
18
.github/ISSUE_TEMPLATE/feature_request.md
vendored
|
@ -1,20 +1,20 @@
|
||||||
---
|
---
|
||||||
name: Feature request
|
name: Feature request
|
||||||
about: Suggest an idea for this project
|
about: Suggest an idea for this project
|
||||||
title: ''
|
title: '[feature] '
|
||||||
labels: enhancement
|
labels: enhancement
|
||||||
assignees: ''
|
assignees: ''
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
**Is your feature request related to a problem? Please describe.**
|
# Mandatory: Please describe the problem to be solved
|
||||||
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
|
(Remove this text: Add a clear and concise description of the addressed problem. Don't say "add a button such that ... " but **why** this button should be added. This is very important as it allows to discuss alternative solutions.)
|
||||||
|
|
||||||
**Describe the solution you'd like**
|
# Optional: Describe the solution you would suggest
|
||||||
A clear and concise description of what you want to happen.
|
(Remove this text: A description of the solution, e.g. "add a button to the settings activity. When clicking that button ..." )
|
||||||
|
|
||||||
**Describe alternatives you've considered**
|
# Optional: Describe alternative solutions you've considered
|
||||||
A clear and concise description of any alternative solutions or features you've considered.
|
(Remove this text: A description of any alternative solutions or features you've considered.)
|
||||||
|
|
||||||
**Additional info**
|
# Optional: Additional info
|
||||||
Add any other info, comments or screenshots about the feature request here.
|
(Remove this text: Add any other info, comments or screenshots about the feature request here.)
|
||||||
|
|
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -40,6 +40,7 @@ captures/
|
||||||
|
|
||||||
# IntelliJ
|
# IntelliJ
|
||||||
*.iml
|
*.iml
|
||||||
|
.idea/*
|
||||||
.idea/workspace.xml
|
.idea/workspace.xml
|
||||||
.idea/tasks.xml
|
.idea/tasks.xml
|
||||||
.idea/other.xml
|
.idea/other.xml
|
||||||
|
|
129
.idea/codeStyles/Project.xml
generated
129
.idea/codeStyles/Project.xml
generated
|
@ -1,129 +0,0 @@
|
||||||
<component name="ProjectCodeStyleConfiguration">
|
|
||||||
<code_scheme name="Project" version="173">
|
|
||||||
<JetCodeStyleSettings>
|
|
||||||
<option name="PACKAGES_TO_USE_STAR_IMPORTS">
|
|
||||||
<value>
|
|
||||||
<package name="java.util" alias="false" withSubpackages="false" />
|
|
||||||
<package name="kotlinx.android.synthetic" alias="false" withSubpackages="true" />
|
|
||||||
<package name="io.ktor" alias="false" withSubpackages="true" />
|
|
||||||
</value>
|
|
||||||
</option>
|
|
||||||
<option name="CODE_STYLE_DEFAULTS" value="KOTLIN_OFFICIAL" />
|
|
||||||
</JetCodeStyleSettings>
|
|
||||||
<codeStyleSettings language="XML">
|
|
||||||
<indentOptions>
|
|
||||||
<option name="CONTINUATION_INDENT_SIZE" value="4" />
|
|
||||||
</indentOptions>
|
|
||||||
<arrangement>
|
|
||||||
<rules>
|
|
||||||
<section>
|
|
||||||
<rule>
|
|
||||||
<match>
|
|
||||||
<AND>
|
|
||||||
<NAME>xmlns:android</NAME>
|
|
||||||
<XML_ATTRIBUTE />
|
|
||||||
<XML_NAMESPACE>^$</XML_NAMESPACE>
|
|
||||||
</AND>
|
|
||||||
</match>
|
|
||||||
</rule>
|
|
||||||
</section>
|
|
||||||
<section>
|
|
||||||
<rule>
|
|
||||||
<match>
|
|
||||||
<AND>
|
|
||||||
<NAME>xmlns:.*</NAME>
|
|
||||||
<XML_ATTRIBUTE />
|
|
||||||
<XML_NAMESPACE>^$</XML_NAMESPACE>
|
|
||||||
</AND>
|
|
||||||
</match>
|
|
||||||
<order>BY_NAME</order>
|
|
||||||
</rule>
|
|
||||||
</section>
|
|
||||||
<section>
|
|
||||||
<rule>
|
|
||||||
<match>
|
|
||||||
<AND>
|
|
||||||
<NAME>.*:id</NAME>
|
|
||||||
<XML_ATTRIBUTE />
|
|
||||||
<XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
|
|
||||||
</AND>
|
|
||||||
</match>
|
|
||||||
</rule>
|
|
||||||
</section>
|
|
||||||
<section>
|
|
||||||
<rule>
|
|
||||||
<match>
|
|
||||||
<AND>
|
|
||||||
<NAME>.*:name</NAME>
|
|
||||||
<XML_ATTRIBUTE />
|
|
||||||
<XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
|
|
||||||
</AND>
|
|
||||||
</match>
|
|
||||||
</rule>
|
|
||||||
</section>
|
|
||||||
<section>
|
|
||||||
<rule>
|
|
||||||
<match>
|
|
||||||
<AND>
|
|
||||||
<NAME>name</NAME>
|
|
||||||
<XML_ATTRIBUTE />
|
|
||||||
<XML_NAMESPACE>^$</XML_NAMESPACE>
|
|
||||||
</AND>
|
|
||||||
</match>
|
|
||||||
</rule>
|
|
||||||
</section>
|
|
||||||
<section>
|
|
||||||
<rule>
|
|
||||||
<match>
|
|
||||||
<AND>
|
|
||||||
<NAME>style</NAME>
|
|
||||||
<XML_ATTRIBUTE />
|
|
||||||
<XML_NAMESPACE>^$</XML_NAMESPACE>
|
|
||||||
</AND>
|
|
||||||
</match>
|
|
||||||
</rule>
|
|
||||||
</section>
|
|
||||||
<section>
|
|
||||||
<rule>
|
|
||||||
<match>
|
|
||||||
<AND>
|
|
||||||
<NAME>.*</NAME>
|
|
||||||
<XML_ATTRIBUTE />
|
|
||||||
<XML_NAMESPACE>^$</XML_NAMESPACE>
|
|
||||||
</AND>
|
|
||||||
</match>
|
|
||||||
<order>BY_NAME</order>
|
|
||||||
</rule>
|
|
||||||
</section>
|
|
||||||
<section>
|
|
||||||
<rule>
|
|
||||||
<match>
|
|
||||||
<AND>
|
|
||||||
<NAME>.*</NAME>
|
|
||||||
<XML_ATTRIBUTE />
|
|
||||||
<XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
|
|
||||||
</AND>
|
|
||||||
</match>
|
|
||||||
<order>ANDROID_ATTRIBUTE_ORDER</order>
|
|
||||||
</rule>
|
|
||||||
</section>
|
|
||||||
<section>
|
|
||||||
<rule>
|
|
||||||
<match>
|
|
||||||
<AND>
|
|
||||||
<NAME>.*</NAME>
|
|
||||||
<XML_ATTRIBUTE />
|
|
||||||
<XML_NAMESPACE>.*</XML_NAMESPACE>
|
|
||||||
</AND>
|
|
||||||
</match>
|
|
||||||
<order>BY_NAME</order>
|
|
||||||
</rule>
|
|
||||||
</section>
|
|
||||||
</rules>
|
|
||||||
</arrangement>
|
|
||||||
</codeStyleSettings>
|
|
||||||
<codeStyleSettings language="kotlin">
|
|
||||||
<option name="CODE_STYLE_DEFAULTS" value="KOTLIN_OFFICIAL" />
|
|
||||||
</codeStyleSettings>
|
|
||||||
</code_scheme>
|
|
||||||
</component>
|
|
5
.idea/codeStyles/codeStyleConfig.xml
generated
5
.idea/codeStyles/codeStyleConfig.xml
generated
|
@ -1,5 +0,0 @@
|
||||||
<component name="ProjectCodeStyleConfiguration">
|
|
||||||
<state>
|
|
||||||
<option name="USE_PER_PROJECT_SETTINGS" value="true" />
|
|
||||||
</state>
|
|
||||||
</component>
|
|
6
.idea/compiler.xml
generated
6
.idea/compiler.xml
generated
|
@ -1,6 +0,0 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<project version="4">
|
|
||||||
<component name="CompilerConfiguration">
|
|
||||||
<bytecodeTargetLevel target="17" />
|
|
||||||
</component>
|
|
||||||
</project>
|
|
13
.idea/deviceManager.xml
generated
13
.idea/deviceManager.xml
generated
|
@ -1,13 +0,0 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<project version="4">
|
|
||||||
<component name="DeviceTable">
|
|
||||||
<option name="columnSorters">
|
|
||||||
<list>
|
|
||||||
<ColumnSorterState>
|
|
||||||
<option name="column" value="Name" />
|
|
||||||
<option name="order" value="ASCENDING" />
|
|
||||||
</ColumnSorterState>
|
|
||||||
</list>
|
|
||||||
</option>
|
|
||||||
</component>
|
|
||||||
</project>
|
|
25
.idea/jarRepositories.xml
generated
25
.idea/jarRepositories.xml
generated
|
@ -1,25 +0,0 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<project version="4">
|
|
||||||
<component name="RemoteRepositoriesConfiguration">
|
|
||||||
<remote-repository>
|
|
||||||
<option name="id" value="central" />
|
|
||||||
<option name="name" value="Maven Central repository" />
|
|
||||||
<option name="url" value="https://repo1.maven.org/maven2" />
|
|
||||||
</remote-repository>
|
|
||||||
<remote-repository>
|
|
||||||
<option name="id" value="jboss.community" />
|
|
||||||
<option name="name" value="JBoss Community repository" />
|
|
||||||
<option name="url" value="https://repository.jboss.org/nexus/content/repositories/public/" />
|
|
||||||
</remote-repository>
|
|
||||||
<remote-repository>
|
|
||||||
<option name="id" value="BintrayJCenter" />
|
|
||||||
<option name="name" value="BintrayJCenter" />
|
|
||||||
<option name="url" value="https://jcenter.bintray.com/" />
|
|
||||||
</remote-repository>
|
|
||||||
<remote-repository>
|
|
||||||
<option name="id" value="Google" />
|
|
||||||
<option name="name" value="Google" />
|
|
||||||
<option name="url" value="https://dl.google.com/dl/android/maven2/" />
|
|
||||||
</remote-repository>
|
|
||||||
</component>
|
|
||||||
</project>
|
|
6
.idea/kotlinc.xml
generated
6
.idea/kotlinc.xml
generated
|
@ -1,6 +0,0 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<project version="4">
|
|
||||||
<component name="KotlinJpsPluginSettings">
|
|
||||||
<option name="version" value="2.0.0" />
|
|
||||||
</component>
|
|
||||||
</project>
|
|
10
.idea/migrations.xml
generated
10
.idea/migrations.xml
generated
|
@ -1,10 +0,0 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<project version="4">
|
|
||||||
<component name="ProjectMigrations">
|
|
||||||
<option name="MigrateToGradleLocalJavaHome">
|
|
||||||
<set>
|
|
||||||
<option value="$PROJECT_DIR$" />
|
|
||||||
</set>
|
|
||||||
</option>
|
|
||||||
</component>
|
|
||||||
</project>
|
|
23
.idea/misc.xml
generated
23
.idea/misc.xml
generated
|
@ -1,23 +0,0 @@
|
||||||
<project version="4">
|
|
||||||
<component name="DesignSurface">
|
|
||||||
<option name="filePathToZoomLevelMap">
|
|
||||||
<map>
|
|
||||||
<entry key="app/src/main/res/layout/list.xml" value="0.21331521739130435" />
|
|
||||||
<entry key="app/src/main/res/layout/list_apps.xml" value="0.1757852077001013" />
|
|
||||||
<entry key="app/src/main/res/layout/settings.xml" value="0.21331521739130435" />
|
|
||||||
</map>
|
|
||||||
</option>
|
|
||||||
</component>
|
|
||||||
<component name="EntryPointsManager">
|
|
||||||
<list size="1">
|
|
||||||
<item index="0" class="java.lang.String" itemvalue="eu.jonahbauer.android.preference.annotations.Preferences" />
|
|
||||||
</list>
|
|
||||||
</component>
|
|
||||||
<component name="ExternalStorageConfigurationManager" enabled="true" />
|
|
||||||
<component name="ProjectRootManager" version="2" languageLevel="JDK_17" default="true" project-jdk-name="jbr-17" project-jdk-type="JavaSDK">
|
|
||||||
<output url="file://$PROJECT_DIR$/build/classes" />
|
|
||||||
</component>
|
|
||||||
<component name="ProjectType">
|
|
||||||
<option name="id" value="Android" />
|
|
||||||
</component>
|
|
||||||
</project>
|
|
13
README.md
13
README.md
|
@ -1,6 +1,10 @@
|
||||||
<!-- Shields from shields.io -->
|
<!-- Shields from shields.io -->
|
||||||
<!--[![][shield-release]][latest-release] -->
|
[![][shield-release]][latest-release]
|
||||||
[![][shield-license]][license]
|
[![][shield-license]][license]
|
||||||
|
[][matrix]
|
||||||
|
[][discord]
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# μLauncher
|
# μLauncher
|
||||||
|
|
||||||
|
@ -28,7 +32,7 @@ Or download the latest APK from the [Releases Section](https://github.com/jrpie/
|
||||||
|
|
||||||
There are several ways to contribute to this app:
|
There are several ways to contribute to this app:
|
||||||
* You can add or improve [translations][toolate].
|
* You can add or improve [translations][toolate].
|
||||||
* If you find a bug or have an idea for a new feature you can open an [issue][issues]. Please note that I work on this project in my free time. Thus I might not respond immediately and not all ideas will be implemented.
|
* If you find a bug or have an idea for a new feature you can [join the Matrix chat][matrix] or open an [issue][issues]. Please note that I work on this project in my free time. Thus I might not respond immediately and not all ideas will be implemented.
|
||||||
* You can implement a new feature yourself:
|
* You can implement a new feature yourself:
|
||||||
- Create a fork of this repository: [![][shield-gh-fork]][fork]
|
- Create a fork of this repository: [![][shield-gh-fork]][fork]
|
||||||
- Create a new branch named `feature/<your feature>` of `fix/<your fix>` and commit your changes.
|
- Create a new branch named `feature/<your feature>` of `fix/<your fix>` and commit your changes.
|
||||||
|
@ -77,14 +81,15 @@ There are several ways to contribute to this app:
|
||||||
<!-- Shields and Badges -->
|
<!-- Shields and Badges -->
|
||||||
|
|
||||||
[shield-release]: https://img.shields.io/github/v/release/jrpie/Launcher?style=flat
|
[shield-release]: https://img.shields.io/github/v/release/jrpie/Launcher?style=flat
|
||||||
|
[latest-release]: https://github.com/jrpie/Launcher/releases/latest
|
||||||
[shield-contribute]: https://img.shields.io/badge/contributions-welcome-007ec6.svg?style=flat
|
[shield-contribute]: https://img.shields.io/badge/contributions-welcome-007ec6.svg?style=flat
|
||||||
[shield-license]: https://img.shields.io/badge/license-MIT-007ec6?style=flat
|
[shield-license]: https://img.shields.io/badge/license-MIT-007ec6?style=flat
|
||||||
|
|
||||||
[shield-gh-watch]: https://img.shields.io/github/watchers/jrpie/Launcher?label=Watch&style=social
|
[shield-gh-watch]: https://img.shields.io/github/watchers/jrpie/Launcher?label=Watch&style=social
|
||||||
[shield-gh-star]: https://img.shields.io/github/stars/jrpie/Launcher?label=Star&style=social
|
[shield-gh-star]: https://img.shields.io/github/stars/jrpie/Launcher?label=Star&style=social
|
||||||
[shield-gh-fork]: https://img.shields.io/github/forks/jrpie/Launcher?label=Fork&style=social
|
[shield-gh-fork]: https://img.shields.io/github/forks/jrpie/Launcher?label=Fork&style=social
|
||||||
|
[matrix]: https://s.jrpie.de/launcher-matrix
|
||||||
|
[discord]: https://s.jrpie.de/launcher-discord
|
||||||
|
|
||||||
<!-- Helpful resources -->
|
<!-- Helpful resources -->
|
||||||
|
|
||||||
|
|
|
@ -23,8 +23,8 @@ android {
|
||||||
minSdkVersion 21
|
minSdkVersion 21
|
||||||
targetSdkVersion 35
|
targetSdkVersion 35
|
||||||
compileSdk 35
|
compileSdk 35
|
||||||
versionCode 24
|
versionCode 26
|
||||||
versionName "j-0.0.10"
|
versionName "j-0.0.12"
|
||||||
|
|
||||||
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
||||||
}
|
}
|
||||||
|
|
|
@ -39,6 +39,7 @@
|
||||||
</activity>
|
</activity>
|
||||||
<activity
|
<activity
|
||||||
android:name="de.jrpie.android.launcher.ui.list.ListActivity"
|
android:name="de.jrpie.android.launcher.ui.list.ListActivity"
|
||||||
|
android:configChanges="orientation|screenSize"
|
||||||
android:windowSoftInputMode="adjustResize" >
|
android:windowSoftInputMode="adjustResize" >
|
||||||
</activity>
|
</activity>
|
||||||
<activity
|
<activity
|
||||||
|
@ -51,7 +52,6 @@
|
||||||
<category android:name="android.intent.category.DEFAULT"/>
|
<category android:name="android.intent.category.DEFAULT"/>
|
||||||
</intent-filter>
|
</intent-filter>
|
||||||
</activity>
|
</activity>
|
||||||
|
|
||||||
</application>
|
</application>
|
||||||
|
|
||||||
</manifest>
|
</manifest>
|
||||||
|
|
|
@ -9,5 +9,6 @@ class Application : android.app.Application() {
|
||||||
|
|
||||||
val preferences = PreferenceManager.getDefaultSharedPreferences(this)
|
val preferences = PreferenceManager.getDefaultSharedPreferences(this)
|
||||||
LauncherPreferences.init(preferences, this.resources)
|
LauncherPreferences.init(preferences, this.resources)
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -96,9 +96,13 @@ fun getIntent(packageName: String, context: Context): Intent? {
|
||||||
}
|
}
|
||||||
/* --- */
|
/* --- */
|
||||||
|
|
||||||
fun getUserFromId(user: Int?, context: Context): UserHandle? {
|
fun getUserFromId(user: Int?, context: Context): UserHandle {
|
||||||
|
/* TODO: this is an ugly hack.
|
||||||
|
Use userManager#getUserForSerialNumber instead (breaking change to SharedPreferences!)
|
||||||
|
*/
|
||||||
val userManager = context.getSystemService(Service.USER_SERVICE) as UserManager
|
val userManager = context.getSystemService(Service.USER_SERVICE) as UserManager
|
||||||
return userManager.userProfiles.firstOrNull { it.hashCode() == user }
|
val profiles = userManager.userProfiles
|
||||||
|
return profiles.firstOrNull { it.hashCode() == user } ?: profiles[0]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -106,10 +110,10 @@ fun uninstallApp(appInfo: AppInfo, activity: Activity) {
|
||||||
val packageName = appInfo.packageName.toString()
|
val packageName = appInfo.packageName.toString()
|
||||||
val user = appInfo.user
|
val user = appInfo.user
|
||||||
|
|
||||||
Log.i("Launcher", "uninstalling $packageName ($user)")
|
Log.i("Launcher", "uninstalling $appInfo")
|
||||||
val intent = Intent(Intent.ACTION_UNINSTALL_PACKAGE)
|
val intent = Intent(Intent.ACTION_UNINSTALL_PACKAGE)
|
||||||
intent.data = Uri.parse("package:$packageName")
|
intent.data = Uri.parse("package:$packageName")
|
||||||
getUserFromId(user, activity)?.let { user ->
|
getUserFromId(user, activity).let { user ->
|
||||||
intent.putExtra(Intent.EXTRA_USER, user)
|
intent.putExtra(Intent.EXTRA_USER, user)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -39,7 +39,7 @@ interface Action {
|
||||||
val id = gesture.id
|
val id = gesture.id
|
||||||
|
|
||||||
val preferences = LauncherPreferences.getSharedPreferences()
|
val preferences = LauncherPreferences.getSharedPreferences()
|
||||||
var actionId = preferences.getString("$id.app", "")!!
|
val actionId = preferences.getString("$id.app", "")!!
|
||||||
var u: Int? = preferences.getInt("$id.user", INVALID_USER)
|
var u: Int? = preferences.getInt("$id.user", INVALID_USER)
|
||||||
u = if (u == INVALID_USER) null else u
|
u = if (u == INVALID_USER) null else u
|
||||||
|
|
||||||
|
@ -48,7 +48,7 @@ interface Action {
|
||||||
|
|
||||||
fun resetToDefaultActions(context: Context) {
|
fun resetToDefaultActions(context: Context) {
|
||||||
val editor = LauncherPreferences.getSharedPreferences().edit()
|
val editor = LauncherPreferences.getSharedPreferences().edit()
|
||||||
Gesture.values().forEach { gesture ->
|
Gesture.entries.forEach { gesture ->
|
||||||
context.resources
|
context.resources
|
||||||
.getStringArray(gesture.defaultsResource)
|
.getStringArray(gesture.defaultsResource)
|
||||||
.map { fromId(it, null) }
|
.map { fromId(it, null) }
|
||||||
|
@ -96,7 +96,7 @@ interface Action {
|
||||||
|
|
||||||
fun fromIntent(data: Intent): Action? {
|
fun fromIntent(data: Intent): Action? {
|
||||||
val value = data.getStringExtra("action_id") ?: return null
|
val value = data.getStringExtra("action_id") ?: return null
|
||||||
var user = data.getIntExtra("user", INVALID_USER)
|
val user = data.getIntExtra("user", INVALID_USER)
|
||||||
return fromId(value, user)
|
return fromId(value, user)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -65,6 +65,12 @@ enum class LauncherAction(
|
||||||
R.drawable.baseline_notifications_24,
|
R.drawable.baseline_notifications_24,
|
||||||
::expandNotificationsPanel
|
::expandNotificationsPanel
|
||||||
),
|
),
|
||||||
|
EXPAND_SETTINGS_PANEL(
|
||||||
|
"launcher:expandSettingsPanel",
|
||||||
|
R.string.list_other_expand_settings_panel,
|
||||||
|
R.drawable.baseline_settings_applications_24,
|
||||||
|
::expandSettingsPanel
|
||||||
|
),
|
||||||
NOP("launcher:nop", R.string.list_other_nop, R.drawable.baseline_not_interested_24, {});
|
NOP("launcher:nop", R.string.list_other_nop, R.drawable.baseline_not_interested_24, {});
|
||||||
|
|
||||||
override fun invoke(context: Context, rect: Rect?): Boolean {
|
override fun invoke(context: Context, rect: Rect?): Boolean {
|
||||||
|
@ -170,7 +176,24 @@ private fun expandNotificationsPanel(context: Context) {
|
||||||
} catch (e: Exception) {
|
} catch (e: Exception) {
|
||||||
Toast.makeText(
|
Toast.makeText(
|
||||||
context,
|
context,
|
||||||
context.getString(R.string.alert_cant_expand_notifications_panel),
|
context.getString(R.string.alert_cant_expand_status_bar_panel),
|
||||||
|
Toast.LENGTH_LONG
|
||||||
|
).show()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun expandSettingsPanel(context: Context) {
|
||||||
|
/* https://stackoverflow.com/a/31898506 */
|
||||||
|
try {
|
||||||
|
@Suppress("SpellCheckingInspection")
|
||||||
|
val statusBarService: Any? = context.getSystemService("statusbar")
|
||||||
|
val statusBarManager = Class.forName("android.app.StatusBarManager")
|
||||||
|
val showStatusBar = statusBarManager.getMethod("expandSettingsPanel")
|
||||||
|
showStatusBar.invoke(statusBarService)
|
||||||
|
} catch (e: Exception) {
|
||||||
|
Toast.makeText(
|
||||||
|
context,
|
||||||
|
context.getString(R.string.alert_cant_expand_status_bar_panel),
|
||||||
Toast.LENGTH_LONG
|
Toast.LENGTH_LONG
|
||||||
).show()
|
).show()
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,6 +4,7 @@ import android.app.Service
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.content.pm.LauncherActivityInfo
|
import android.content.pm.LauncherActivityInfo
|
||||||
import android.content.pm.LauncherApps
|
import android.content.pm.LauncherApps
|
||||||
|
import android.util.Log
|
||||||
import de.jrpie.android.launcher.getUserFromId
|
import de.jrpie.android.launcher.getUserFromId
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -19,13 +20,13 @@ class AppInfo(val packageName: CharSequence, val activityName: CharSequence?, va
|
||||||
var ret = "$packageName;$u"
|
var ret = "$packageName;$u"
|
||||||
activityName?.let { ret += ";$activityName" }
|
activityName?.let { ret += ";$activityName" }
|
||||||
|
|
||||||
return ret;
|
return ret
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun equals(other: Any?): Boolean {
|
override fun equals(other: Any?): Boolean {
|
||||||
if(other is AppInfo) {
|
if(other is AppInfo) {
|
||||||
return other.user == user && other.packageName == packageName
|
return other.user == user && other.packageName == packageName
|
||||||
&& other.activityName == activityName;
|
&& other.activityName == activityName
|
||||||
}
|
}
|
||||||
return super.equals(other)
|
return super.equals(other)
|
||||||
}
|
}
|
||||||
|
@ -38,11 +39,10 @@ class AppInfo(val packageName: CharSequence, val activityName: CharSequence?, va
|
||||||
context: Context
|
context: Context
|
||||||
): LauncherActivityInfo? {
|
): LauncherActivityInfo? {
|
||||||
val launcherApps = context.getSystemService(Service.LAUNCHER_APPS_SERVICE) as LauncherApps
|
val launcherApps = context.getSystemService(Service.LAUNCHER_APPS_SERVICE) as LauncherApps
|
||||||
return getUserFromId(user, context)?.let { userHandle ->
|
val userHandle = getUserFromId(user, context)
|
||||||
launcherApps.getActivityList(packageName.toString(), userHandle).firstOrNull { app ->
|
val activityList = launcherApps.getActivityList(packageName.toString(), userHandle)
|
||||||
app.name == activityName || activityName == null || activityName == ""
|
return activityList.firstOrNull { app -> app.name == activityName }
|
||||||
}
|
?: activityList.firstOrNull()
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -51,7 +51,7 @@ import eu.jonahbauer.android.preference.annotations.serializer.PreferenceSeriali
|
||||||
@PreferenceGroup(name = "display", prefix = "settings_display_", suffix = "_key", value = {
|
@PreferenceGroup(name = "display", prefix = "settings_display_", suffix = "_key", value = {
|
||||||
@Preference(name = "screen_timeout_disabled", type = boolean.class, defaultValue = "false"),
|
@Preference(name = "screen_timeout_disabled", type = boolean.class, defaultValue = "false"),
|
||||||
@Preference(name = "full_screen", type = boolean.class, defaultValue = "true"),
|
@Preference(name = "full_screen", type = boolean.class, defaultValue = "true"),
|
||||||
@Preference(name = "rotate_screen", type = boolean.class, defaultValue = "false"),
|
@Preference(name = "rotate_screen", type = boolean.class, defaultValue = "true"),
|
||||||
}),
|
}),
|
||||||
@PreferenceGroup(name = "functionality", prefix = "settings_functionality_", suffix = "_key", value = {
|
@PreferenceGroup(name = "functionality", prefix = "settings_functionality_", suffix = "_key", value = {
|
||||||
@Preference(name = "search_auto_launch", type = boolean.class, defaultValue = "true"),
|
@Preference(name = "search_auto_launch", type = boolean.class, defaultValue = "true"),
|
||||||
|
|
|
@ -64,7 +64,8 @@ class HomeActivity : UIObject, AppCompatActivity(),
|
||||||
private var clockTimer = Timer()
|
private var clockTimer = Timer()
|
||||||
|
|
||||||
override fun onCreate(savedInstanceState: Bundle?) {
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
super.onCreate(savedInstanceState)
|
super<AppCompatActivity>.onCreate(savedInstanceState)
|
||||||
|
super<UIObject>.onCreate()
|
||||||
|
|
||||||
// Try to restore old preferences
|
// Try to restore old preferences
|
||||||
migratePreferencesToNewVersion(this)
|
migratePreferencesToNewVersion(this)
|
||||||
|
|
|
@ -37,16 +37,17 @@ fun setWindowFlags(window: Window, homeScreen: Boolean) {
|
||||||
}
|
}
|
||||||
|
|
||||||
interface UIObject {
|
interface UIObject {
|
||||||
fun onStart() {
|
fun onCreate() {
|
||||||
if (this is Activity) {
|
if (this is Activity) {
|
||||||
setWindowFlags(window, isHomeScreen())
|
setWindowFlags(window, isHomeScreen())
|
||||||
requestedOrientation = if (!LauncherPreferences.display().rotateScreen()) {
|
|
||||||
ActivityInfo.SCREEN_ORIENTATION_PORTRAIT
|
|
||||||
} else {
|
|
||||||
ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
if (!LauncherPreferences.display().rotateScreen()) {
|
||||||
|
requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_NOSENSOR
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
fun onStart() {
|
||||||
setOnClicks()
|
setOnClicks()
|
||||||
adjustLayout()
|
adjustLayout()
|
||||||
}
|
}
|
||||||
|
|
|
@ -50,7 +50,8 @@ class ListActivity : AppCompatActivity(), UIObject {
|
||||||
|
|
||||||
|
|
||||||
override fun onCreate(savedInstanceState: Bundle?) {
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
super.onCreate(savedInstanceState)
|
super<AppCompatActivity>.onCreate(savedInstanceState)
|
||||||
|
super<UIObject>.onCreate()
|
||||||
|
|
||||||
// get info about which action this activity is open for
|
// get info about which action this activity is open for
|
||||||
intent.extras?.let { bundle ->
|
intent.extras?.let { bundle ->
|
||||||
|
@ -109,6 +110,9 @@ class ListActivity : AppCompatActivity(), UIObject {
|
||||||
|
|
||||||
override fun onPause() {
|
override fun onPause() {
|
||||||
super.onPause()
|
super.onPause()
|
||||||
|
|
||||||
|
// ensure that the activity closes then an app is launched
|
||||||
|
// and when the user navigates to recent apps
|
||||||
finish()
|
finish()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
package de.jrpie.android.launcher.ui.list.apps
|
package de.jrpie.android.launcher.ui.list.apps
|
||||||
|
|
||||||
|
import android.annotation.SuppressLint
|
||||||
import android.app.Activity
|
import android.app.Activity
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
import android.graphics.Rect
|
import android.graphics.Rect
|
||||||
|
@ -36,6 +37,7 @@ import de.jrpie.android.launcher.uninstallApp
|
||||||
* @param intention - why the list is displayed ("view", "pick")
|
* @param intention - why the list is displayed ("view", "pick")
|
||||||
* @param forGesture - the action which an app is chosen for (when the intention is "pick")
|
* @param forGesture - the action which an app is chosen for (when the intention is "pick")
|
||||||
*/
|
*/
|
||||||
|
@SuppressLint("NotifyDataSetChanged")
|
||||||
class AppsRecyclerAdapter(
|
class AppsRecyclerAdapter(
|
||||||
val activity: Activity,
|
val activity: Activity,
|
||||||
val root: View,
|
val root: View,
|
||||||
|
|
|
@ -44,7 +44,9 @@ class SettingsActivity : AppCompatActivity(), UIObject {
|
||||||
private lateinit var binding: SettingsBinding
|
private lateinit var binding: SettingsBinding
|
||||||
|
|
||||||
override fun onCreate(savedInstanceState: Bundle?) {
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
super.onCreate(savedInstanceState)
|
super<AppCompatActivity>.onCreate(savedInstanceState)
|
||||||
|
super<UIObject>.onCreate()
|
||||||
|
|
||||||
|
|
||||||
// Initialise layout
|
// Initialise layout
|
||||||
binding = SettingsBinding.inflate(layoutInflater)
|
binding = SettingsBinding.inflate(layoutInflater)
|
||||||
|
|
|
@ -30,7 +30,8 @@ import de.jrpie.android.launcher.ui.tutorial.tabs.TutorialFragmentUsage
|
||||||
class TutorialActivity : AppCompatActivity(), UIObject {
|
class TutorialActivity : AppCompatActivity(), UIObject {
|
||||||
|
|
||||||
override fun onCreate(savedInstanceState: Bundle?) {
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
super.onCreate(savedInstanceState)
|
super<AppCompatActivity>.onCreate(savedInstanceState)
|
||||||
|
super<UIObject>.onCreate()
|
||||||
|
|
||||||
// Initialise layout
|
// Initialise layout
|
||||||
setContentView(R.layout.tutorial)
|
setContentView(R.layout.tutorial)
|
||||||
|
|
|
@ -138,6 +138,7 @@
|
||||||
<string name="settings">Einstellungen</string>
|
<string name="settings">Einstellungen</string>
|
||||||
<string name="ic_menu_alt">Mehr Optionen</string>
|
<string name="ic_menu_alt">Mehr Optionen</string>
|
||||||
<string name="list_other_expand_notifications_panel">Benachrichtigungen</string>
|
<string name="list_other_expand_notifications_panel">Benachrichtigungen</string>
|
||||||
<string name="alert_cant_expand_notifications_panel">Fehler: Die Funktion \"Benachrichtigungen\" wird von deinem Gerät leider nicht unterstützt.</string>
|
<string name="alert_cant_expand_status_bar_panel">Fehler: Diese Funktion wird von deinem Gerät leider nicht unterstützt.</string>
|
||||||
<string name="settings_clock_show_seconds">Sekunden anzeigen</string>
|
<string name="settings_clock_show_seconds">Sekunden anzeigen</string>
|
||||||
</resources>
|
<string name="list_other_expand_settings_panel">Schnelleinstellungen</string>
|
||||||
|
</resources>
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
-->
|
-->
|
||||||
<string name="alert_cant_open_title">Impossible d\'ouvrir l\'application</string>
|
<string name="alert_cant_open_title">Impossible d\'ouvrir l\'application</string>
|
||||||
<string name="alert_cant_open_message">Souhaitez-vous modifier ses paramètres ?</string>
|
<string name="alert_cant_open_message">Souhaitez-vous modifier ses paramètres ?</string>
|
||||||
<string name="toast_cant_open_message">Ouvrez les paramètres pour choisir une application pour cette action</string>
|
<string name="toast_cant_open_message">Ouvrez les paramètres pour associer une action à ce geste</string>
|
||||||
<!--
|
<!--
|
||||||
-
|
-
|
||||||
- Settings
|
- Settings
|
||||||
|
@ -83,7 +83,7 @@
|
||||||
- List (Launchers app drawer)
|
- List (Launchers app drawer)
|
||||||
-
|
-
|
||||||
-->
|
-->
|
||||||
<string name="list_title_view">Applications</string>
|
<string name="list_title_view">Toutes les Applications</string>
|
||||||
<string name="list_title_pick">Choisir App</string>
|
<string name="list_title_pick">Choisir App</string>
|
||||||
<string name="list_tab_app">Applications</string>
|
<string name="list_tab_app">Applications</string>
|
||||||
<string name="list_tab_other">Autre</string>
|
<string name="list_tab_other">Autre</string>
|
||||||
|
@ -93,7 +93,7 @@
|
||||||
<string name="list_not_removed">Impossible de désinstaller l\'application</string>
|
<string name="list_not_removed">Impossible de désinstaller l\'application</string>
|
||||||
<string name="list_apps_search_hint">Chercher des applications</string>
|
<string name="list_apps_search_hint">Chercher des applications</string>
|
||||||
<string name="list_other_settings">Réglages du launcher</string>
|
<string name="list_other_settings">Réglages du launcher</string>
|
||||||
<string name="list_other_list">Applications</string>
|
<string name="list_other_list">Toutes les Applications</string>
|
||||||
<string name="list_other_volume_up">Augmenter le volume</string>
|
<string name="list_other_volume_up">Augmenter le volume</string>
|
||||||
<string name="list_other_volume_down">Diminuer le volume</string>
|
<string name="list_other_volume_down">Diminuer le volume</string>
|
||||||
<string name="list_other_track_next">Musique : passer au titre suivant</string>
|
<string name="list_other_track_next">Musique : passer au titre suivant</string>
|
||||||
|
@ -140,4 +140,24 @@
|
||||||
<string name="settings_clock_flip_date_time">Échanger la date et l\'heure</string>
|
<string name="settings_clock_flip_date_time">Échanger la date et l\'heure</string>
|
||||||
<string name="settings_clock_date_visible">Afficher la date</string>
|
<string name="settings_clock_date_visible">Afficher la date</string>
|
||||||
<string name="settings_clock_localized">Utiliser le format de date local</string>
|
<string name="settings_clock_localized">Utiliser le format de date local</string>
|
||||||
|
<string name="settings_launcher_section_apps">Applis</string>
|
||||||
|
<string name="settings_theme_background">Fond d\'écran (liste d\'applications et réglages)</string>
|
||||||
|
<string name="settings_theme_font">Police</string>
|
||||||
|
<string name="settings_theme_monochrome_icons">Icônes d\'applications monochromes</string>
|
||||||
|
<string name="settings_clock_show_seconds">Afficher les secondes</string>
|
||||||
|
<string name="settings_display_rotate_screen">Rotation de l\'écran</string>
|
||||||
|
<string name="list_other_expand_notifications_panel">Afficher le panneau de notifications</string>
|
||||||
|
<string name="settings_apps_hidden">Applications cachées</string>
|
||||||
|
<string name="list_title_favorite">Applications favorites</string>
|
||||||
|
<string name="list_title_hidden">Applications masquées</string>
|
||||||
|
<string name="list_app_favorite_add">Ajouter aux favoris</string>
|
||||||
|
<string name="list_app_favorite_remove">Retirer des favoris</string>
|
||||||
|
<string name="list_app_hidden_add">Cacher</string>
|
||||||
|
<string name="list_app_hidden_remove">Montrer</string>
|
||||||
|
<string name="list_other_list_favorites">Applications Favorites</string>
|
||||||
|
<string name="snackbar_app_hidden">Appli cachée. Vous pouvez l\'afficher à nouveau depuis les réglages.</string>
|
||||||
|
<string name="undo">Défaire</string>
|
||||||
|
<string name="alert_cant_expand_status_bar_panel">Erreur : impossible d\'afficher la barre de statut.
|
||||||
|
\nCette action utilise des fonctionalités qui ne sont pas officiellement dans l\'API Android. Malheuresement ça ne semble pas fonctionner sur votre appareil.</string>
|
||||||
|
<string name="list_other_expand_settings_panel">Réglages rapides</string>
|
||||||
</resources>
|
</resources>
|
|
@ -1,96 +1,79 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<resources>
|
<resources>
|
||||||
<!--
|
<!--
|
||||||
-
|
-
|
||||||
- Home
|
- Home
|
||||||
-
|
-
|
||||||
-->
|
-->
|
||||||
<string name="alert_cant_open_title">Não é possível abrir o aplicativo</string>
|
<string name="alert_cant_open_title">Não foi possível abrir o app</string>
|
||||||
<string name="alert_cant_open_message">Quer alterar as suas configurações?</string>
|
<string name="alert_cant_open_message">Quer alterar as suas configurações?</string>
|
||||||
|
<string name="toast_cant_open_message">Abra as configurações para escolher uma ação para esse gesto</string>
|
||||||
<string name="toast_cant_open_message">Abrir as configurações para escolher uma aplicação para esta ação</string>
|
|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
-
|
-
|
||||||
- Settings
|
- Settings
|
||||||
-
|
-
|
||||||
-->
|
-->
|
||||||
<string name="settings_title">Configurações</string>
|
<string name="settings_title">Configurações</string>
|
||||||
|
|
||||||
<string name="settings_tab_app">Apps</string>
|
<string name="settings_tab_app">Apps</string>
|
||||||
<string name="settings_tab_launcher">Launcher</string>
|
<string name="settings_tab_launcher">Launcher</string>
|
||||||
<string name="settings_tab_meta">Meta</string>
|
<string name="settings_tab_meta">Meta</string>
|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
-
|
-
|
||||||
- Settings : Apps
|
- Settings : Apps
|
||||||
-
|
-
|
||||||
-->
|
-->
|
||||||
<string name="settings_gesture_up">Deslizar para cima</string>
|
<string name="settings_gesture_up">Deslizar para cima</string>
|
||||||
<string name="settings_gesture_double_up">Duplo para cima</string>
|
<string name="settings_gesture_double_up">2 dedos para cima</string>
|
||||||
<string name="settings_gesture_down">Deslizar para baixo</string>
|
<string name="settings_gesture_down">Deslizar para baixo</string>
|
||||||
<string name="settings_gesture_double_down">Duplo para baixo</string>
|
<string name="settings_gesture_double_down">2 dedos para baixo</string>
|
||||||
<string name="settings_gesture_left">Deslizar para esquerda</string>
|
<string name="settings_gesture_left">Deslizar para esquerda</string>
|
||||||
<string name="settings_gesture_double_left">Duplo para esquerda</string>
|
<string name="settings_gesture_double_left">2 dedos para esquerda</string>
|
||||||
<string name="settings_gesture_right">Deslizar para direita</string>
|
<string name="settings_gesture_right">Deslizar para direita</string>
|
||||||
<string name="settings_gesture_double_right">Duplo para direita</string>
|
<string name="settings_gesture_double_right">2 dedos para direita</string>
|
||||||
<string name="settings_gesture_right_top_edge">Deslizar para direita (Cima)</string>
|
<string name="settings_gesture_right_top_edge">Deslizar para direita (Cima)</string>
|
||||||
<string name="settings_gesture_right_bottom_edge">Deslizar para direita(Baixo)</string>
|
<string name="settings_gesture_right_bottom_edge">Deslizar para direita (Baixo)</string>
|
||||||
<string name="settings_gesture_left_bottom_edge">Deslizar para esquerda (Baixo)</string>
|
<string name="settings_gesture_left_bottom_edge">Deslizar para esquerda (Baixo)</string>
|
||||||
<string name="settings_gesture_left_top_edge">Deslizar para esquerda (Cima)</string>
|
<string name="settings_gesture_left_top_edge">Deslizar para esquerda (Cima)</string>
|
||||||
<string name="settings_gesture_up_left_edge">Deslizar para cima (Borda esquerda)</string>
|
<string name="settings_gesture_up_left_edge">Deslizar para cima (Borda esquerda)</string>
|
||||||
<string name="settings_gesture_up_right_edge">Deslizar para cima (Borda direita)</string>
|
<string name="settings_gesture_up_right_edge">Deslizar para cima (Borda direita)</string>
|
||||||
<string name="settings_gesture_down_left_edge">Deslizar para baixo (Borda esquerda)</string>
|
<string name="settings_gesture_down_left_edge">Deslizar para baixo (Borda esquerda)</string>
|
||||||
<string name="settings_gesture_down_right_edge">Deslizar para baixo (Borda direita)</string>
|
<string name="settings_gesture_down_right_edge">Deslizar para baixo (Borda direita)</string>
|
||||||
<string name="settings_gesture_vol_up">Aumentar o volume</string>
|
<string name="settings_gesture_vol_up">Aumento de volume</string>
|
||||||
<string name="settings_gesture_vol_down">Diminuir o volume</string>
|
<string name="settings_gesture_vol_down">Diminuição de volume</string>
|
||||||
<string name="settings_gesture_double_click">Duplo clique</string>
|
<string name="settings_gesture_double_click">Toque duplo</string>
|
||||||
<string name="settings_gesture_long_click">Clique longo</string>
|
<string name="settings_gesture_long_click">Toque longo</string>
|
||||||
<string name="settings_gesture_date">Clique em Data</string>
|
<string name="settings_gesture_date">Toque em Data</string>
|
||||||
<string name="settings_gesture_time">Clique em Tempo</string>
|
<string name="settings_gesture_time">Toque em Tempo</string>
|
||||||
|
<string name="settings_apps_choose">Selecione um app</string>
|
||||||
<string name="settings_apps_choose">Selecionar o aplicativo</string>
|
<string name="settings_apps_view_all">Ver todos os apps</string>
|
||||||
|
|
||||||
<string name="settings_apps_view_all">Ver todos os aplicativos</string>
|
|
||||||
|
|
||||||
<string name="settings_apps_install">Instalar aplicativos</string>
|
<string name="settings_apps_install">Instalar aplicativos</string>
|
||||||
<string name="settings_apps_toast_store_not_found">Loja não encontrada</string>
|
<string name="settings_apps_toast_store_not_found">Loja não encontrada</string>
|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
-
|
-
|
||||||
- Settings : Launcher
|
- Settings : Launcher
|
||||||
-
|
-
|
||||||
-->
|
-->
|
||||||
<string name="settings_launcher_section_appearance">Aparência</string>
|
<string name="settings_launcher_section_appearance">Aparência</string>
|
||||||
|
|
||||||
|
|
||||||
<string name="settings_theme_color_theme">Tema</string>
|
<string name="settings_theme_color_theme">Tema</string>
|
||||||
<string-array name="settings_theme_color_theme_items">
|
<string-array name="settings_theme_color_theme_items">
|
||||||
<item>Padrão</item>
|
<item>Padrão</item>
|
||||||
<item>Escuro</item>
|
<item>Escuro</item>
|
||||||
</string-array>
|
</string-array>
|
||||||
|
|
||||||
<string name="settings_clock_time_visible">Mostrar Horário</string>
|
<string name="settings_clock_time_visible">Mostrar Horário</string>
|
||||||
<string name="settings_clock_date_visible">Mostrar Data</string>
|
<string name="settings_clock_date_visible">Mostrar Data</string>
|
||||||
<string name="settings_clock_localized">Use formato de data localizado</string>
|
<string name="settings_clock_localized">Use formato de data localizado</string>
|
||||||
<string name="settings_clock_flip_date_time">Inverter data e hora</string>
|
<string name="settings_clock_flip_date_time">Inverter data e hora</string>
|
||||||
|
|
||||||
<string name="settings_theme_wallpaper">Escolha um papel de parede</string>
|
<string name="settings_theme_wallpaper">Escolha um papel de parede</string>
|
||||||
<string name="settings_launcher_change_wallpaper">Alterar papel de parede</string>
|
<string name="settings_launcher_change_wallpaper">Alterar papel de parede</string>
|
||||||
|
|
||||||
<string name="settings_launcher_section_display">Exibição</string>
|
<string name="settings_launcher_section_display">Exibição</string>
|
||||||
|
|
||||||
<string name="settings_display_screen_timeout_disabled">Manter a tela ligada</string>
|
<string name="settings_display_screen_timeout_disabled">Manter a tela ligada</string>
|
||||||
<string name="settings_display_full_screen">Usar tela cheia</string>
|
<string name="settings_display_full_screen">Usar tela cheia</string>
|
||||||
|
|
||||||
<string name="settings_launcher_section_functionality">Funções</string>
|
<string name="settings_launcher_section_functionality">Funções</string>
|
||||||
|
<string name="settings_enabled_gestures_double_swipe">Deslize com 2 dedos</string>
|
||||||
<string name="settings_enabled_gestures_double_swipe">Ações de deslizar duas vezes</string>
|
|
||||||
<string name="settings_enabled_gestures_edge_swipe">Ações de deslizar nas bordas</string>
|
<string name="settings_enabled_gestures_edge_swipe">Ações de deslizar nas bordas</string>
|
||||||
<string name="settings_functionality_auto_launch">Iniciar resultados da pesquisa</string>
|
<string name="settings_functionality_auto_launch">Iniciar resultados da pesquisa</string>
|
||||||
<string name="settings_functionality_auto_keyboard">Iniciar teclado para pesquisa</string>
|
<string name="settings_functionality_auto_keyboard">Mostrar teclado para pesquisa</string>
|
||||||
|
|
||||||
<string name="settings_launcher_sensitivity">Sensibilidade</string>
|
<string name="settings_launcher_sensitivity">Sensibilidade</string>
|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
-
|
-
|
||||||
- Settings : Meta
|
- Settings : Meta
|
||||||
|
@ -98,51 +81,36 @@
|
||||||
-->
|
-->
|
||||||
<string name="settings_general_choose_home_screen">Definir o μLauncher como tela inicial</string>
|
<string name="settings_general_choose_home_screen">Definir o μLauncher como tela inicial</string>
|
||||||
<string name="settings_meta_cant_select_launcher">Informações do aplicativo</string>
|
<string name="settings_meta_cant_select_launcher">Informações do aplicativo</string>
|
||||||
<string name="settings_meta_cant_select_launcher_msg">Seu dispositivo não suporta esse recurso. Gerenciar detalhes do aplicativo em vez disso?</string>
|
<string name="settings_meta_cant_select_launcher_msg">Seu dispositivo não é compatível com esse recurso. Gerenciar detalhes do app em vez disso?</string>
|
||||||
|
|
||||||
<string name="settings_meta_show_tutorial">Ver tutorial do launcher</string>
|
<string name="settings_meta_show_tutorial">Ver tutorial do launcher</string>
|
||||||
|
|
||||||
<string name="settings_meta_reset">Redefinir configuraçãos</string>
|
<string name="settings_meta_reset">Redefinir configuraçãos</string>
|
||||||
<string name="settings_meta_reset_confirm">Você vai descartar todas as suas preferências. Continuar?</string>
|
<string name="settings_meta_reset_confirm">Você vai descartar todas as suas preferências. Continuar?</string>
|
||||||
|
|
||||||
<string name="settings_meta_report_bug">Reportar um bug</string>
|
<string name="settings_meta_report_bug">Reportar um bug</string>
|
||||||
|
|
||||||
<string name="settings_meta_fork_contact">Entre em contato com o desenvolvedor do fork</string>
|
<string name="settings_meta_fork_contact">Entre em contato com o desenvolvedor do fork</string>
|
||||||
|
|
||||||
<string name="settings_meta_privacy">Política de Privacidade</string>
|
<string name="settings_meta_privacy">Política de Privacidade</string>
|
||||||
|
|
||||||
<string name="settings_meta_contact">Entre em contato com o desenvolvedor original</string>
|
<string name="settings_meta_contact">Entre em contato com o desenvolvedor original</string>
|
||||||
|
|
||||||
|
|
||||||
<string name="settings_meta_discord">Junte-se a nós no discord!</string>
|
<string name="settings_meta_discord">Junte-se a nós no discord!</string>
|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
-
|
-
|
||||||
- List (Launchers app drawer)
|
- List (Launchers app drawer)
|
||||||
-
|
-
|
||||||
-->
|
-->
|
||||||
<string name="list_title_view">Todos os aplicativos</string>
|
<string name="list_title_view">Todos os apps</string>
|
||||||
<string name="list_title_pick">Escolha o aplicativo</string>
|
<string name="list_title_pick">Escolha um app</string>
|
||||||
|
|
||||||
<string name="list_tab_app">Aplicativos</string>
|
<string name="list_tab_app">Aplicativos</string>
|
||||||
<string name="list_tab_other">Outro</string>
|
<string name="list_tab_other">Outros</string>
|
||||||
|
|
||||||
<string name="list_app_delete">Desinstalar</string>
|
<string name="list_app_delete">Desinstalar</string>
|
||||||
<string name="list_app_info">Informações do aplicativo</string>
|
<string name="list_app_info">Informações do aplicativo</string>
|
||||||
|
<string name="list_removed">O app selecionado foi removido</string>
|
||||||
<string name="list_removed">O aplicativo selecionado foi removido</string>
|
<string name="list_not_removed">Não foi possível remover o app</string>
|
||||||
<string name="list_not_removed">Não é possível remover o aplicativo</string>
|
|
||||||
|
|
||||||
<string name="list_apps_search_hint">Pesquisar Aplicativos</string>
|
<string name="list_apps_search_hint">Pesquisar Aplicativos</string>
|
||||||
|
|
||||||
<string name="list_other_settings">Configurações do Launcher</string>
|
<string name="list_other_settings">Configurações do Launcher</string>
|
||||||
<string name="list_other_list">Todos os aplicativos</string>
|
<string name="list_other_list">Todos os apps</string>
|
||||||
<string name="list_other_volume_up">Music: Mais alto</string>
|
<string name="list_other_volume_up">Música: Mais alto</string>
|
||||||
<string name="list_other_volume_down">Music: Mais silencioso</string>
|
<string name="list_other_volume_down">Música: Mais silencioso</string>
|
||||||
<string name="list_other_track_next">Music: Próximo</string>
|
<string name="list_other_track_next">Música: Próximo</string>
|
||||||
<string name="list_other_track_previous">Music: Anterior</string>
|
<string name="list_other_track_previous">Música: Anterior</string>
|
||||||
<string name="list_other_nop">Não faça nada</string>
|
<string name="list_other_nop">Não faça nada</string>
|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
-
|
-
|
||||||
- Tutorial
|
- Tutorial
|
||||||
|
@ -150,25 +118,38 @@
|
||||||
-->
|
-->
|
||||||
<string name="tutorial_title">Tutorial</string>
|
<string name="tutorial_title">Tutorial</string>
|
||||||
<string name="tutorial_start_text">Tire alguns segundos para aprender a usar este Launcher!</string>
|
<string name="tutorial_start_text">Tire alguns segundos para aprender a usar este Launcher!</string>
|
||||||
|
|
||||||
<string name="tutorial_concept_title">Conceito</string>
|
<string name="tutorial_concept_title">Conceito</string>
|
||||||
<string name="tutorial_concept_text">O Launcher foi projetado para ser minimalista, eficiente e livre de distrações.\n\nEle é livre de pagamentos, anúncios e serviços de rastreamento.</string>
|
<string name="tutorial_concept_text">O Launcher foi projetado para ser minimalista, eficiente e livre de distrações.\n\nEle é livre de pagamentos, anúncios e serviços de rastreamento.</string>
|
||||||
<string name="tutorial_concept_text_2">O aplicativo é de código aberto (licença MIT) e está disponível no GitHub!\n\nNão deixe de conferir o repositório!</string>
|
<string name="tutorial_concept_text_2">O aplicativo é de código aberto (licença MIT) e está disponível no GitHub!\n\nNão deixe de conferir o repositório!</string>
|
||||||
|
|
||||||
<string name="tutorial_usage_title">Uso</string>
|
<string name="tutorial_usage_title">Uso</string>
|
||||||
<string name="tutorial_usage_text">Sua tela inicial contém a data e a hora locais. Sem distração.</string>
|
<string name="tutorial_usage_text">Sua tela inicial contém a data e a hora locais. Sem distração.</string>
|
||||||
<string name="tutorial_usage_text_2">Você pode iniciar seus aplicativos com um único toque ou pressionamento de botão. Escolha alguns no próximo slide.</string>
|
<string name="tutorial_usage_text_2">Você pode iniciar seus aplicativos com um toque único ou pressionando um botão. Escolha algumas ações no próximo slide.</string>
|
||||||
|
|
||||||
<string name="tutorial_setup_title">Configurar</string>
|
<string name="tutorial_setup_title">Configurar</string>
|
||||||
<string name="tutorial_setup_text">Selecionamos alguns aplicativos padrões para você. Se quiser, você pode alterá-los agora.</string>
|
<string name="tutorial_setup_text">Selecionamos alguns aplicativos padrões para você. Se quiser, você pode alterá-los agora.</string>
|
||||||
<string name="tutorial_setup_text_2">Você também pode alterar sua seleção mais tarde.</string>
|
<string name="tutorial_setup_text_2">Você também pode alterar suas escolhas mais tarde.</string>
|
||||||
|
<string name="tutorial_finish_title">Vamos lá!</string>
|
||||||
<string name="tutorial_finish_title">Vamos!</string>
|
|
||||||
<string name="tutorial_finish_text">Você está pronto para começar!\n\nEspero que isso seja de grande valor para você!\n\n- Finn (que criou o Launcher)\n\te Josia (que fez algumas melhorias e mantém o fork μLauncher)</string>
|
<string name="tutorial_finish_text">Você está pronto para começar!\n\nEspero que isso seja de grande valor para você!\n\n- Finn (que criou o Launcher)\n\te Josia (que fez algumas melhorias e mantém o fork μLauncher)</string>
|
||||||
<string name="tutorial_finish_button">Começar</string>
|
<string name="tutorial_finish_button">Começar</string>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<string name="settings">Configurações</string>
|
<string name="settings">Configurações</string>
|
||||||
<string name="ic_menu_alt">Mais opções</string>
|
<string name="ic_menu_alt">Mais opções</string>
|
||||||
|
<string name="list_app_favorite_remove">Remover dos favoritos</string>
|
||||||
|
<string name="alert_cant_expand_status_bar_panel">Erro: Não foi possível expandir a barra de status.
|
||||||
|
\nEssa ação usa uma funcionalidade que não faz parte da API do Android publicada. Infelizmente, ela não vai funcionar no seu dispositivo.</string>
|
||||||
|
<string name="settings_theme_background">Fundo (lista de apps e configurações)</string>
|
||||||
|
<string name="settings_theme_font">Fonte</string>
|
||||||
|
<string name="settings_theme_monochrome_icons">Ícones de apps monocromáticos</string>
|
||||||
|
<string name="settings_launcher_section_date_time">Data e hora</string>
|
||||||
|
<string name="settings_clock_show_seconds">Mostrar segundos</string>
|
||||||
|
<string name="settings_display_rotate_screen">Girar a tela</string>
|
||||||
|
<string name="settings_launcher_section_apps">Apps</string>
|
||||||
|
<string name="settings_apps_hidden">Apps ocultos</string>
|
||||||
|
<string name="list_title_favorite">Apps favoritos</string>
|
||||||
|
<string name="list_title_hidden">Apps ocultos</string>
|
||||||
|
<string name="list_app_favorite_add">Adicione aos favoritos</string>
|
||||||
|
<string name="list_app_hidden_add">Ocultar</string>
|
||||||
|
<string name="list_app_hidden_remove">Mostrar</string>
|
||||||
|
<string name="list_other_list_favorites">Apps favoritos</string>
|
||||||
|
<string name="list_other_expand_notifications_panel">Expandir painel de notificações</string>
|
||||||
|
<string name="snackbar_app_hidden">App está oculto. Você pode torná-lo visível nas configurações.</string>
|
||||||
|
<string name="undo">Desfazer</string>
|
||||||
</resources>
|
</resources>
|
|
@ -12,7 +12,7 @@
|
||||||
<string name="settings_gesture_down">下滑</string>
|
<string name="settings_gesture_down">下滑</string>
|
||||||
<string name="alert_cant_open_title">无法打开应用</string>
|
<string name="alert_cant_open_title">无法打开应用</string>
|
||||||
<string name="alert_cant_open_message">要更改其设置吗?</string>
|
<string name="alert_cant_open_message">要更改其设置吗?</string>
|
||||||
<string name="toast_cant_open_message">打开设置,为该操作绑定一个应用程序</string>
|
<string name="toast_cant_open_message">打开设置,为该手势绑定一个应用程序</string>
|
||||||
<string name="settings_tab_app">应用程序</string>
|
<string name="settings_tab_app">应用程序</string>
|
||||||
<string name="settings_tab_launcher">启动器</string>
|
<string name="settings_tab_launcher">启动器</string>
|
||||||
<string name="settings_tab_meta">杂项</string>
|
<string name="settings_tab_meta">杂项</string>
|
||||||
|
@ -29,7 +29,7 @@
|
||||||
<string name="settings_gesture_up_left_edge">上滑(左边缘)</string>
|
<string name="settings_gesture_up_left_edge">上滑(左边缘)</string>
|
||||||
<string name="settings_gesture_up_right_edge">上滑(右边缘)</string>
|
<string name="settings_gesture_up_right_edge">上滑(右边缘)</string>
|
||||||
<string name="settings_gesture_down_left_edge">下滑(左边缘)</string>
|
<string name="settings_gesture_down_left_edge">下滑(左边缘)</string>
|
||||||
<string name="settings_gesture_down_right_edge">下滑两次(右边缘)</string>
|
<string name="settings_gesture_down_right_edge">下滑(右边缘)</string>
|
||||||
<string name="settings_gesture_vol_up">音量加</string>
|
<string name="settings_gesture_vol_up">音量加</string>
|
||||||
<string name="settings_gesture_vol_down">音量减</string>
|
<string name="settings_gesture_vol_down">音量减</string>
|
||||||
<string name="settings_gesture_double_click">双击</string>
|
<string name="settings_gesture_double_click">双击</string>
|
||||||
|
@ -103,4 +103,13 @@
|
||||||
<string name="settings_clock_time_visible">显示时间</string>
|
<string name="settings_clock_time_visible">显示时间</string>
|
||||||
<string name="settings_clock_date_visible">显示日期</string>
|
<string name="settings_clock_date_visible">显示日期</string>
|
||||||
<string name="settings_clock_flip_date_time">翻转日期和时间</string>
|
<string name="settings_clock_flip_date_time">翻转日期和时间</string>
|
||||||
|
<string name="settings_theme_background">背景(应用列表和设置)</string>
|
||||||
|
<string name="settings_theme_font">字体</string>
|
||||||
|
<string name="settings_theme_monochrome_icons">黑白应用图标</string>
|
||||||
|
<string name="settings_clock_show_seconds">显示秒</string>
|
||||||
|
<string name="settings_display_rotate_screen">旋转屏幕</string>
|
||||||
|
<string name="settings_launcher_section_apps">应用</string>
|
||||||
|
<string name="list_other_expand_notifications_panel">展开通知面板</string>
|
||||||
|
<string name="alert_cant_expand_status_bar_panel">错误:无法打开通知栏。
|
||||||
|
\n这个动作使用的功能并非现有的 Android API的一部分。不幸的是,它似乎不适用于您的设备。</string>
|
||||||
</resources>
|
</resources>
|
|
@ -204,7 +204,8 @@
|
||||||
|
|
||||||
<string name="settings">Settings</string>
|
<string name="settings">Settings</string>
|
||||||
<string name="ic_menu_alt">More options</string>
|
<string name="ic_menu_alt">More options</string>
|
||||||
<string name="alert_cant_expand_notifications_panel">Error: Can\'t expand status bar.\nThis action is using functionality that is not part of the published Android API. Unfortunately, it does not seem to work on your device.</string>
|
<string name="alert_cant_expand_status_bar_panel">Error: Can\'t expand status bar.\nThis action is using functionality that is not part of the published Android API. Unfortunately, it does not seem to work on your device.</string>
|
||||||
<string name="snackbar_app_hidden">App hidden. You can make it visible again in settings.</string>
|
<string name="snackbar_app_hidden">App hidden. You can make it visible again in settings.</string>
|
||||||
<string name="undo">Undo</string>
|
<string name="undo">Undo</string>
|
||||||
|
<string name="list_other_expand_settings_panel">Quick Settings</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
|
|
@ -118,7 +118,7 @@
|
||||||
android:title="@string/settings_display_full_screen"/>
|
android:title="@string/settings_display_full_screen"/>
|
||||||
<SwitchPreference
|
<SwitchPreference
|
||||||
android:key="@string/settings_display_rotate_screen_key"
|
android:key="@string/settings_display_rotate_screen_key"
|
||||||
android:defaultValue="false"
|
android:defaultValue="true"
|
||||||
android:title="@string/settings_display_rotate_screen"/>
|
android:title="@string/settings_display_rotate_screen"/>
|
||||||
<SwitchPreference
|
<SwitchPreference
|
||||||
android:key="@string/settings_display_screen_timeout_disabled_key"
|
android:key="@string/settings_display_screen_timeout_disabled_key"
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
buildscript {
|
buildscript {
|
||||||
ext.kotlin_version = '2.0.0'
|
ext.kotlin_version = '2.0.0'
|
||||||
ext.android_plugin_version = '8.5.1'
|
ext.android_plugin_version = '8.7.0'
|
||||||
repositories {
|
repositories {
|
||||||
google()
|
google()
|
||||||
mavenCentral()
|
mavenCentral()
|
||||||
|
@ -10,7 +10,7 @@ buildscript {
|
||||||
}
|
}
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
classpath 'com.android.tools.build:gradle:8.5.2'
|
classpath 'com.android.tools.build:gradle:8.7.0'
|
||||||
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
|
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
|
||||||
classpath "com.android.tools.build:gradle:$android_plugin_version"
|
classpath "com.android.tools.build:gradle:$android_plugin_version"
|
||||||
|
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
* Favorite apps
|
* Favorite apps
|
||||||
* Option to hide apps
|
* Option to hide apps
|
||||||
* Support for apps with multiple main activities
|
* Support for apps with multiple main activities
|
||||||
|
* Fixed layout of settings on small screens
|
||||||
|
|
1
fastlane/metadata/android/en-US/changelogs/26.txt
Normal file
1
fastlane/metadata/android/en-US/changelogs/26.txt
Normal file
|
@ -0,0 +1 @@
|
||||||
|
bugfix
|
15
fastlane/metadata/android/fr-FR/changelogs/21.txt
Normal file
15
fastlane/metadata/android/fr-FR/changelogs/21.txt
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
- Traduction en chinois (merci, yzqzss !)
|
||||||
|
- Traduction améliorée en français (merci, toby-bro !)
|
||||||
|
- Traduction améliorée en allemand
|
||||||
|
|
||||||
|
Toutes les applications :
|
||||||
|
- Suppression des trois points dans la liste des applications (utilisez un long clic à la place)
|
||||||
|
- Appuyer sur entrer ouvre la première application correspondant à la requête
|
||||||
|
- Correction du contournement pour le bug lors de l'ouverture du clavier en mode plein écran
|
||||||
|
- Suppression de l'option de désinstallation pour les applications système
|
||||||
|
- Le bouton d'accueil fonctionne correctement maintenant
|
||||||
|
|
||||||
|
Paramètres :
|
||||||
|
- Correction des paramètres pour les petits écrans
|
||||||
|
- Suppression du réglage de sensibilité (tout le monde le mettait de toute façon à maximum)
|
||||||
|
- Refonte des paramètres de date et d'heure
|
8
fastlane/metadata/android/fr-FR/changelogs/24.txt
Normal file
8
fastlane/metadata/android/fr-FR/changelogs/24.txt
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
* Ajout d'options pour le thème de couleur, la police, l'arrière-plan, les icônes monochromes
|
||||||
|
* Ajout d'options pour la date et l'heure
|
||||||
|
* Ajout d'une option pour autoriser la rotation
|
||||||
|
* Amélioration de l'algorithme de recherche
|
||||||
|
* Traduction en portugais brésilien - merci, Jonatas de Almeida Barros !
|
||||||
|
* Correction d'un bug : les applications sélectionnées disparaissaient des paramètres
|
||||||
|
* Amélioration de la qualité du code
|
||||||
|
* Traductions mises à jour
|
4
fastlane/metadata/android/fr-FR/changelogs/25.txt
Normal file
4
fastlane/metadata/android/fr-FR/changelogs/25.txt
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
* Applications favorites
|
||||||
|
* Option de cacher des applications
|
||||||
|
* Prise en charge des applications avec plusieurs activités principales
|
||||||
|
* Correction de la mise en page des paramètres sur les petits écrans
|
1
fastlane/metadata/android/fr-FR/changelogs/26.txt
Normal file
1
fastlane/metadata/android/fr-FR/changelogs/26.txt
Normal file
|
@ -0,0 +1 @@
|
||||||
|
Correction de bugs
|
1
fastlane/metadata/android/fr-FR/title.txt
Normal file
1
fastlane/metadata/android/fr-FR/title.txt
Normal file
|
@ -0,0 +1 @@
|
||||||
|
µLauncher
|
1
fastlane/metadata/android/pt-BR/changelogs/26.txt
Normal file
1
fastlane/metadata/android/pt-BR/changelogs/26.txt
Normal file
|
@ -0,0 +1 @@
|
||||||
|
Correção de bugs
|
1
fastlane/metadata/android/pt-BR/short_description.txt
Normal file
1
fastlane/metadata/android/pt-BR/short_description.txt
Normal file
|
@ -0,0 +1 @@
|
||||||
|
Uma tela inicial minimalista e sem distrações para Android.
|
1
fastlane/metadata/android/pt-BR/title.txt
Normal file
1
fastlane/metadata/android/pt-BR/title.txt
Normal file
|
@ -0,0 +1 @@
|
||||||
|
µLauncher
|
Loading…
Add table
Reference in a new issue