This commit is contained in:
Josia Pietsch 2024-10-18 20:15:52 +02:00
commit 77800b27c3
Signed by: jrpie
GPG key ID: E70B571D66986A2D
43 changed files with 224 additions and 349 deletions

View file

@ -1,31 +1,32 @@
---
name: Bug report
about: Create a report to help improve this app
title: ''
title: '[bug] '
labels: bug
assignees: ''
---
**Describe the bug**
# Describe the bug
A clear and concise description of what the bug is.
**To Reproduce**
# To Reproduce
Steps to reproduce the behavior:
1. Go to '...'
2. Click on '....'
3. Scroll down to '....'
4. See error
**Expected behavior**
# Expected behavior
A clear and concise description of what you expected to happen.
**Screenshots**
# Screenshots
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]
- 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.

View file

@ -1,20 +1,20 @@
---
name: Feature request
about: Suggest an idea for this project
title: ''
title: '[feature] '
labels: enhancement
assignees: ''
---
**Is your feature request related to a problem? Please describe.**
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
# Mandatory: Please describe the problem to be solved
(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**
A clear and concise description of what you want to happen.
# Optional: Describe the solution you would suggest
(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**
A clear and concise description of any alternative solutions or features you've considered.
# Optional: Describe alternative solutions you've considered
(Remove this text: A description of any alternative solutions or features you've considered.)
**Additional info**
Add any other info, comments or screenshots about the feature request here.
# Optional: Additional info
(Remove this text: Add any other info, comments or screenshots about the feature request here.)

1
.gitignore vendored
View file

@ -40,6 +40,7 @@ captures/
# IntelliJ
*.iml
.idea/*
.idea/workspace.xml
.idea/tasks.xml
.idea/other.xml

View file

@ -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>

View file

@ -1,5 +0,0 @@
<component name="ProjectCodeStyleConfiguration">
<state>
<option name="USE_PER_PROJECT_SETTINGS" value="true" />
</state>
</component>

6
.idea/compiler.xml generated
View file

@ -1,6 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="CompilerConfiguration">
<bytecodeTargetLevel target="17" />
</component>
</project>

View file

@ -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>

View file

@ -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
View file

@ -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
View file

@ -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
View file

@ -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>

View file

@ -1,6 +1,10 @@
<!-- Shields from shields.io -->
<!--[![][shield-release]][latest-release] -->
[![][shield-release]][latest-release]
[![][shield-license]][license]
[![Chat on Matrix](https://matrix.to/img/matrix-badge.svg)][matrix]
[![Chat on Discord](https://img.shields.io/badge/discord-join%20chat-007ec6.svg?style=flat)][discord]
# μ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:
* 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:
- 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.
@ -77,14 +81,15 @@ There are several ways to contribute to this app:
<!-- Shields and Badges -->
[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-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-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
[matrix]: https://s.jrpie.de/launcher-matrix
[discord]: https://s.jrpie.de/launcher-discord
<!-- Helpful resources -->

View file

@ -23,8 +23,8 @@ android {
minSdkVersion 21
targetSdkVersion 35
compileSdk 35
versionCode 24
versionName "j-0.0.10"
versionCode 26
versionName "j-0.0.12"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}

View file

@ -39,6 +39,7 @@
</activity>
<activity
android:name="de.jrpie.android.launcher.ui.list.ListActivity"
android:configChanges="orientation|screenSize"
android:windowSoftInputMode="adjustResize" >
</activity>
<activity
@ -51,7 +52,6 @@
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
</activity>
</application>
</manifest>

View file

@ -9,5 +9,6 @@ class Application : android.app.Application() {
val preferences = PreferenceManager.getDefaultSharedPreferences(this)
LauncherPreferences.init(preferences, this.resources)
}
}

View file

@ -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
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 user = appInfo.user
Log.i("Launcher", "uninstalling $packageName ($user)")
Log.i("Launcher", "uninstalling $appInfo")
val intent = Intent(Intent.ACTION_UNINSTALL_PACKAGE)
intent.data = Uri.parse("package:$packageName")
getUserFromId(user, activity)?.let { user ->
getUserFromId(user, activity).let { user ->
intent.putExtra(Intent.EXTRA_USER, user)
}

View file

@ -39,7 +39,7 @@ interface Action {
val id = gesture.id
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)
u = if (u == INVALID_USER) null else u
@ -48,7 +48,7 @@ interface Action {
fun resetToDefaultActions(context: Context) {
val editor = LauncherPreferences.getSharedPreferences().edit()
Gesture.values().forEach { gesture ->
Gesture.entries.forEach { gesture ->
context.resources
.getStringArray(gesture.defaultsResource)
.map { fromId(it, null) }
@ -96,7 +96,7 @@ interface Action {
fun fromIntent(data: Intent): Action? {
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)
}
}

View file

@ -65,6 +65,12 @@ enum class LauncherAction(
R.drawable.baseline_notifications_24,
::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, {});
override fun invoke(context: Context, rect: Rect?): Boolean {
@ -170,7 +176,24 @@ private fun expandNotificationsPanel(context: Context) {
} catch (e: Exception) {
Toast.makeText(
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
).show()
}

View file

@ -4,6 +4,7 @@ import android.app.Service
import android.content.Context
import android.content.pm.LauncherActivityInfo
import android.content.pm.LauncherApps
import android.util.Log
import de.jrpie.android.launcher.getUserFromId
/**
@ -19,13 +20,13 @@ class AppInfo(val packageName: CharSequence, val activityName: CharSequence?, va
var ret = "$packageName;$u"
activityName?.let { ret += ";$activityName" }
return ret;
return ret
}
override fun equals(other: Any?): Boolean {
if(other is AppInfo) {
return other.user == user && other.packageName == packageName
&& other.activityName == activityName;
&& other.activityName == activityName
}
return super.equals(other)
}
@ -38,11 +39,10 @@ class AppInfo(val packageName: CharSequence, val activityName: CharSequence?, va
context: Context
): LauncherActivityInfo? {
val launcherApps = context.getSystemService(Service.LAUNCHER_APPS_SERVICE) as LauncherApps
return getUserFromId(user, context)?.let { userHandle ->
launcherApps.getActivityList(packageName.toString(), userHandle).firstOrNull { app ->
app.name == activityName || activityName == null || activityName == ""
}
}
val userHandle = getUserFromId(user, context)
val activityList = launcherApps.getActivityList(packageName.toString(), userHandle)
return activityList.firstOrNull { app -> app.name == activityName }
?: activityList.firstOrNull()
}

View file

@ -51,7 +51,7 @@ import eu.jonahbauer.android.preference.annotations.serializer.PreferenceSeriali
@PreferenceGroup(name = "display", prefix = "settings_display_", suffix = "_key", value = {
@Preference(name = "screen_timeout_disabled", type = boolean.class, defaultValue = "false"),
@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 = {
@Preference(name = "search_auto_launch", type = boolean.class, defaultValue = "true"),

View file

@ -64,7 +64,8 @@ class HomeActivity : UIObject, AppCompatActivity(),
private var clockTimer = Timer()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
super<AppCompatActivity>.onCreate(savedInstanceState)
super<UIObject>.onCreate()
// Try to restore old preferences
migratePreferencesToNewVersion(this)

View file

@ -37,16 +37,17 @@ fun setWindowFlags(window: Window, homeScreen: Boolean) {
}
interface UIObject {
fun onStart() {
fun onCreate() {
if (this is Activity) {
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()
adjustLayout()
}

View file

@ -50,7 +50,8 @@ class ListActivity : AppCompatActivity(), UIObject {
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
intent.extras?.let { bundle ->
@ -109,6 +110,9 @@ class ListActivity : AppCompatActivity(), UIObject {
override fun onPause() {
super.onPause()
// ensure that the activity closes then an app is launched
// and when the user navigates to recent apps
finish()
}

View file

@ -1,5 +1,6 @@
package de.jrpie.android.launcher.ui.list.apps
import android.annotation.SuppressLint
import android.app.Activity
import android.content.Intent
import android.graphics.Rect
@ -36,6 +37,7 @@ import de.jrpie.android.launcher.uninstallApp
* @param intention - why the list is displayed ("view", "pick")
* @param forGesture - the action which an app is chosen for (when the intention is "pick")
*/
@SuppressLint("NotifyDataSetChanged")
class AppsRecyclerAdapter(
val activity: Activity,
val root: View,

View file

@ -44,7 +44,9 @@ class SettingsActivity : AppCompatActivity(), UIObject {
private lateinit var binding: SettingsBinding
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
super<AppCompatActivity>.onCreate(savedInstanceState)
super<UIObject>.onCreate()
// Initialise layout
binding = SettingsBinding.inflate(layoutInflater)

View file

@ -30,7 +30,8 @@ import de.jrpie.android.launcher.ui.tutorial.tabs.TutorialFragmentUsage
class TutorialActivity : AppCompatActivity(), UIObject {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
super<AppCompatActivity>.onCreate(savedInstanceState)
super<UIObject>.onCreate()
// Initialise layout
setContentView(R.layout.tutorial)

View file

@ -138,6 +138,7 @@
<string name="settings">Einstellungen</string>
<string name="ic_menu_alt">Mehr Optionen</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>
</resources>
<string name="list_other_expand_settings_panel">Schnelleinstellungen</string>
</resources>

View file

@ -7,7 +7,7 @@
-->
<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="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
@ -83,7 +83,7 @@
- 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_tab_app">Applications</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_apps_search_hint">Chercher des applications</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_down">Diminuer le volume</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_date_visible">Afficher la date</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>

View file

@ -1,96 +1,79 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<!--
-
- 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="toast_cant_open_message">Abrir as configurações para escolher uma aplicação para esta ação</string>
<string name="toast_cant_open_message">Abra as configurações para escolher uma ação para esse gesto</string>
<!--
-
- Settings
-
-->
<string name="settings_title">Configurações</string>
<string name="settings_tab_app">Apps</string>
<string name="settings_tab_launcher">Launcher</string>
<string name="settings_tab_meta">Meta</string>
<!--
-
- Settings : Apps
-
-->
<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_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_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_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_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_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_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_right_edge">Deslizar para baixo (Borda direita)</string>
<string name="settings_gesture_vol_up">Aumentar o volume</string>
<string name="settings_gesture_vol_down">Diminuir o volume</string>
<string name="settings_gesture_double_click">Duplo clique</string>
<string name="settings_gesture_long_click">Clique longo</string>
<string name="settings_gesture_date">Clique em Data</string>
<string name="settings_gesture_time">Clique em Tempo</string>
<string name="settings_apps_choose">Selecionar o aplicativo</string>
<string name="settings_apps_view_all">Ver todos os aplicativos</string>
<string name="settings_gesture_vol_up">Aumento de volume</string>
<string name="settings_gesture_vol_down">Diminuição de volume</string>
<string name="settings_gesture_double_click">Toque duplo</string>
<string name="settings_gesture_long_click">Toque longo</string>
<string name="settings_gesture_date">Toque em Data</string>
<string name="settings_gesture_time">Toque em Tempo</string>
<string name="settings_apps_choose">Selecione um app</string>
<string name="settings_apps_view_all">Ver todos os apps</string>
<string name="settings_apps_install">Instalar aplicativos</string>
<string name="settings_apps_toast_store_not_found">Loja não encontrada</string>
<!--
-
- Settings : Launcher
-
-->
<string name="settings_launcher_section_appearance">Aparência</string>
<string name="settings_theme_color_theme">Tema</string>
<string-array name="settings_theme_color_theme_items">
<item>Padrão</item>
<item>Escuro</item>
</string-array>
<string name="settings_clock_time_visible">Mostrar Horário</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_flip_date_time">Inverter data e hora</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_section_display">Exibição</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_launcher_section_functionality">Funções</string>
<string name="settings_enabled_gestures_double_swipe">Ações de deslizar duas vezes</string>
<string name="settings_enabled_gestures_double_swipe">Deslize com 2 dedos</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_keyboard">Iniciar teclado para pesquisa</string>
<string name="settings_functionality_auto_keyboard">Mostrar teclado para pesquisa</string>
<string name="settings_launcher_sensitivity">Sensibilidade</string>
<!--
-
- Settings : Meta
@ -98,51 +81,36 @@
-->
<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_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_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_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_privacy">Política de Privacidade</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>
<!--
-
- List (Launchers app drawer)
-
-->
<string name="list_title_view">Todos os aplicativos</string>
<string name="list_title_pick">Escolha o aplicativo</string>
<string name="list_title_view">Todos os apps</string>
<string name="list_title_pick">Escolha um app</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_info">Informações do aplicativo</string>
<string name="list_removed">O aplicativo selecionado foi removido</string>
<string name="list_not_removed">Não é possível remover o aplicativo</string>
<string name="list_removed">O app selecionado foi removido</string>
<string name="list_not_removed">Não foi possível remover o app</string>
<string name="list_apps_search_hint">Pesquisar Aplicativos</string>
<string name="list_other_settings">Configurações do Launcher</string>
<string name="list_other_list">Todos os aplicativos</string>
<string name="list_other_volume_up">Music: Mais alto</string>
<string name="list_other_volume_down">Music: Mais silencioso</string>
<string name="list_other_track_next">Music: Próximo</string>
<string name="list_other_track_previous">Music: Anterior</string>
<string name="list_other_list">Todos os apps</string>
<string name="list_other_volume_up">Música: Mais alto</string>
<string name="list_other_volume_down">Música: Mais silencioso</string>
<string name="list_other_track_next">Música: Próximo</string>
<string name="list_other_track_previous">Música: Anterior</string>
<string name="list_other_nop">Não faça nada</string>
<!--
-
- Tutorial
@ -150,25 +118,38 @@
-->
<string name="tutorial_title">Tutorial</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_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_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_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_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_finish_title">Vamos!</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_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="settings">Configuraçõ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>

View file

@ -12,7 +12,7 @@
<string name="settings_gesture_down">下滑</string>
<string name="alert_cant_open_title">无法打开应用</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_launcher">启动器</string>
<string name="settings_tab_meta">杂项</string>
@ -29,7 +29,7 @@
<string name="settings_gesture_up_left_edge">上滑(左边缘)</string>
<string name="settings_gesture_up_right_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_down">音量减</string>
<string name="settings_gesture_double_click">双击</string>
@ -103,4 +103,13 @@
<string name="settings_clock_time_visible">显示时间</string>
<string name="settings_clock_date_visible">显示日期</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>

View file

@ -204,7 +204,8 @@
<string name="settings">Settings</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="undo">Undo</string>
<string name="list_other_expand_settings_panel">Quick Settings</string>
</resources>

View file

@ -118,7 +118,7 @@
android:title="@string/settings_display_full_screen"/>
<SwitchPreference
android:key="@string/settings_display_rotate_screen_key"
android:defaultValue="false"
android:defaultValue="true"
android:title="@string/settings_display_rotate_screen"/>
<SwitchPreference
android:key="@string/settings_display_screen_timeout_disabled_key"

View file

@ -2,7 +2,7 @@
buildscript {
ext.kotlin_version = '2.0.0'
ext.android_plugin_version = '8.5.1'
ext.android_plugin_version = '8.7.0'
repositories {
google()
mavenCentral()
@ -10,7 +10,7 @@ buildscript {
}
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 "com.android.tools.build:gradle:$android_plugin_version"

View file

@ -1,3 +1,4 @@
* Favorite apps
* Option to hide apps
* Support for apps with multiple main activities
* Fixed layout of settings on small screens

View file

@ -0,0 +1 @@
bugfix

View 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

View 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

View 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

View file

@ -0,0 +1 @@
Correction de bugs

View file

@ -0,0 +1 @@
µLauncher

View file

@ -0,0 +1 @@
Correção de bugs

View file

@ -0,0 +1 @@
Uma tela inicial minimalista e sem distrações para Android.

View file

@ -0,0 +1 @@
µLauncher